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#[derive(Clone, PartialEq, ::prost::Message)]
791pub struct TraceAttributes {
792    #[prost(message, repeated, tag = "1")]
793    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
794}
795/// Nested message and enum types in `TraceAttributes`.
796pub mod trace_attributes {
797    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
798    pub struct Attribute {
799        /// The key
800        #[prost(string, optional, tag = "1")]
801        pub key: ::core::option::Option<::prost::alloc::string::String>,
802        /// The value
803        #[prost(oneof = "attribute::Value", tags = "2, 3")]
804        pub value: ::core::option::Option<attribute::Value>,
805    }
806    /// Nested message and enum types in `Attribute`.
807    pub mod attribute {
808        /// The value
809        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
810        pub enum Value {
811            #[prost(int64, tag = "2")]
812            LongValue(i64),
813            #[prost(string, tag = "3")]
814            StringValue(::prost::alloc::string::String),
815        }
816    }
817}
818/// Options for the android.aflags data source.
819/// This data source captures snapshots of Android aconfig flags.
820/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
821/// for more information on aconfig flags.
822#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
823pub struct AndroidAflagsConfig {
824    /// Frequency of polling. If absent or 0, the state will be recorded once,
825    /// at the start of the trace.
826    ///
827    /// It is recommended to either leave this absent or set it to a large
828    /// value as each invocation of the `aflags` tool can be time consuming
829    /// (approx. 350ms) and also triggers an expensive flush. This is required to
830    /// be > 1000ms if set, to avoid excessive CPU usage.
831    #[prost(uint32, optional, tag = "1")]
832    pub poll_ms: ::core::option::Option<u32>,
833}
834/// Data source that lists game modes and game interventions of games
835/// on an Android device.
836#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
837pub struct AndroidGameInterventionListConfig {
838    /// If not empty, emit info about only the following list of package names
839    /// (exact match, no regex). Otherwise, emit info about all packages.
840    #[prost(string, repeated, tag = "1")]
841    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
842}
843/// Custom configuration for the "android.input.inputevent" data source.
844///
845/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
846///
847/// Next ID: 6
848#[derive(Clone, PartialEq, ::prost::Message)]
849pub struct AndroidInputEventConfig {
850    /// The tracing mode to use. If unspecified, it will default to
851    /// TRACE_MODE_USE_RULES.
852    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
853    pub mode: ::core::option::Option<i32>,
854    /// The list of rules to use to determine the trace level of events.
855    /// Each event will be traced using the TraceLevel of the first rule that it
856    /// triggers from this list. The rules are evaluated in the order in which they
857    /// are specified. If an event does not match any of the rules,
858    /// TRACE_LEVEL_NONE will be used by default.
859    #[prost(message, repeated, tag = "2")]
860    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
861    /// Trace input events processed by the system as they are being dispatched
862    /// to application windows. All trace rules will apply.
863    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
864    ///    it will
865    ///      trace InputDispatcher's inbound events (which does not include events
866    ///      synthesized within InputDispatcher) that match the rules.
867    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
868    ///    events
869    ///      matching the rules, including all events synthesized within
870    ///      InputDispatcher, will be traced.
871    #[prost(bool, optional, tag = "3")]
872    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
873    /// Trace details about which windows the system is sending each input event
874    /// to. All trace rules will apply.
875    #[prost(bool, optional, tag = "4")]
876    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
877    /// Trace evdev events received from the kernel, including device additions and
878    /// removals.
879    #[prost(bool, optional, tag = "5")]
880    pub trace_evdev_events: ::core::option::Option<bool>,
881}
882/// Nested message and enum types in `AndroidInputEventConfig`.
883pub mod android_input_event_config {
884    /// A rule that specifies the TraceLevel for an event based on matching
885    /// conditions. All matchers in the rule are optional. To trigger this rule, an
886    /// event must match all of its specified matchers (i.e. the matchers function
887    /// like a series of conditions connected by a logical 'AND' operator). A rule
888    /// with no specified matchers will match all events. Next ID: 6
889    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
890    pub struct TraceRule {
891        /// The trace level to be used for events that trigger this rule.
892        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
893        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
894        pub trace_level: ::core::option::Option<i32>,
895        /// Package matchers
896        ///
897        /// Respectively matches if all or any of the target apps for this event are
898        /// contained in the specified list of package names.
899        ///
900        /// Intended usage:
901        ///    - Use match_all_packages to selectively allow tracing for the listed
902        ///    packages.
903        ///    - Use match_any_packages to selectively deny tracing for certain
904        ///    packages.
905        ///
906        /// WARNING: Great care must be taken when designing rules for field tracing!
907        ///           This is because each event is almost always sent to more than
908        ///           one app.
909        ///               For example, when allowing tracing for a package that has a
910        ///               spy window
911        ///           over the display (e.g. SystemUI) using match_any_packages,
912        ///           essentially all input will be recorded on that display. This is
913        ///           because the events will be sent to the spy as well as the
914        ///           foreground app, and regardless of what the foreground app is,
915        ///           the event will end up being traced.
916        ///               Alternatively, when attempting to block tracing for specific
917        ///               packages using
918        ///           match_all_packages, no events will likely be blocked. This is
919        ///           because the event will also be sent to other apps (such as, but
920        ///           not limited to, ones with spy windows), so the matcher will not
921        ///           match unless all other targets are also listed under the
922        ///           match_all_packages list.
923        #[prost(string, repeated, tag = "2")]
924        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
925        #[prost(string, repeated, tag = "3")]
926        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
927        /// Matches if the event is secure, which means that at least one of the
928        /// targets of this event is using the window flag FLAG_SECURE.
929        #[prost(bool, optional, tag = "4")]
930        pub match_secure: ::core::option::Option<bool>,
931        /// Matches if there was an active IME connection while this event was being
932        /// processed.
933        #[prost(bool, optional, tag = "5")]
934        pub match_ime_connection_active: ::core::option::Option<bool>,
935    }
936    /// Trace modes are tracing presets that are included in the system.
937    #[derive(
938        Clone,
939        Copy,
940        Debug,
941        PartialEq,
942        Eq,
943        Hash,
944        PartialOrd,
945        Ord,
946        ::prost::Enumeration
947    )]
948    #[repr(i32)]
949    pub enum TraceMode {
950        /// Preset mode for maximal tracing.
951        /// WARNING: This will bypass all privacy measures on debuggable builds, and
952        /// will record all
953        ///           input events processed by the system, regardless of the context
954        ///           in which they were processed. It should only be used for tracing
955        ///           on a local device or for tests. It should NEVER be used for
956        ///           field tracing.
957        TraceAll = 0,
958        /// Use the tracing rules defined in this config to specify what events to
959        /// trace.
960        UseRules = 1,
961    }
962    impl TraceMode {
963        /// String value of the enum field names used in the ProtoBuf definition.
964        ///
965        /// The values are not transformed in any way and thus are considered stable
966        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
967        pub fn as_str_name(&self) -> &'static str {
968            match self {
969                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
970                Self::UseRules => "TRACE_MODE_USE_RULES",
971            }
972        }
973        /// Creates an enum from field names used in the ProtoBuf definition.
974        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
975            match value {
976                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
977                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
978                _ => None,
979            }
980        }
981    }
982    /// The level of tracing that should be applied to an event.
983    #[derive(
984        Clone,
985        Copy,
986        Debug,
987        PartialEq,
988        Eq,
989        Hash,
990        PartialOrd,
991        Ord,
992        ::prost::Enumeration
993    )]
994    #[repr(i32)]
995    pub enum TraceLevel {
996        /// Do not trace the input event.
997        None = 0,
998        /// Trace the event as a redacted event, where certain sensitive fields are
999        /// omitted from the trace, including the coordinates of pointer events and
1000        /// the key/scan codes of key events.
1001        Redacted = 1,
1002        /// Trace the complete event.
1003        Complete = 2,
1004    }
1005    impl TraceLevel {
1006        /// String value of the enum field names used in the ProtoBuf definition.
1007        ///
1008        /// The values are not transformed in any way and thus are considered stable
1009        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1010        pub fn as_str_name(&self) -> &'static str {
1011            match self {
1012                Self::None => "TRACE_LEVEL_NONE",
1013                Self::Redacted => "TRACE_LEVEL_REDACTED",
1014                Self::Complete => "TRACE_LEVEL_COMPLETE",
1015            }
1016        }
1017        /// Creates an enum from field names used in the ProtoBuf definition.
1018        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1019            match value {
1020                "TRACE_LEVEL_NONE" => Some(Self::None),
1021                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1022                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1023                _ => None,
1024            }
1025        }
1026    }
1027}
1028#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1029pub struct AndroidLogConfig {
1030    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1031    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1032    /// If set ignores all log messages whose prio is < the given value.
1033    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1034    pub min_prio: ::core::option::Option<i32>,
1035    /// If non-empty ignores all log messages whose tag doesn't match one of the
1036    /// specified values.
1037    #[prost(string, repeated, tag = "4")]
1038    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1039    /// If true, includes the contents of the logcat buffers that were already
1040    /// present before the data source started. By default (false), only new
1041    /// log entries produced after the data source starts are recorded.
1042    /// Can be useful for boot traces or situations where logs from before
1043    /// traced started are important.
1044    #[prost(bool, optional, tag = "5")]
1045    pub preserve_log_buffer: ::core::option::Option<bool>,
1046}
1047/// Data source that polls for display state. This should only be used for
1048/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1049#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1050pub struct AndroidPolledStateConfig {
1051    /// Frequency of polling. If absent the state will be recorded once, at the
1052    /// start of the trace.
1053    /// This is required to be > 100ms to avoid excessive CPU usage.
1054    #[prost(uint32, optional, tag = "1")]
1055    pub poll_ms: ::core::option::Option<u32>,
1056}
1057/// Configuration for the "android.process_state" data source.
1058#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1059pub struct AndroidProcessStateConfig {
1060    /// If true, dumps process name, start seq id, and start time in the snapshot.
1061    /// When false (default), these fields are omitted to save trace buffer space.
1062    #[prost(bool, optional, tag = "1")]
1063    pub dump_process_metadata: ::core::option::Option<bool>,
1064}
1065/// Data source that controls the system properties used to guard initialization
1066/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1067/// processes like SurfaceFlinger.
1068///
1069/// This data source only tells Skia to initialized the Perfetto SDK and start
1070/// routing data to the Track Event system instead of ATrace. For those events
1071/// to actually show up in a trace, the track_event data source must be used as
1072/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1073/// processes may need to be restarted for Skia to revert to using ATrace if
1074/// Track Events are no longer desired.
1075///
1076/// In addition to switching Skia to use Perfetto's track_event data source,
1077/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1078/// internal tracing constraints and allows the track_event config to specify
1079/// which categories should be traced. Filtering to the "skia.always" category
1080/// *tag* in a track_event config can be used to re-enable the standard
1081/// constraints typically used with ATrace.
1082///
1083/// Data source name: android.sdk_sysprop_guard
1084/// Introduced in Android 14 (U) QPR1.
1085/// Next id: 4
1086#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1087pub struct AndroidSdkSyspropGuardConfig {
1088    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1089    /// integration with the track_event data source in RenderEngine.
1090    /// If false or omitted, the simpler ATrace fallback is used.
1091    ///
1092    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1093    /// restarted.
1094    ///
1095    /// Specifically this sets the following system properties:
1096    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1097    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1098    ///
1099    /// Does not affect actual track_event data *collection*, which must be
1100    /// configured separately.
1101    #[prost(bool, optional, tag = "1")]
1102    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1103    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1104    /// with the track_event data source. hwui_package_name_filter
1105    /// can be used to control which apps are affected.
1106    /// If false or omitted, the simpler ATrace fallback is used.
1107    ///
1108    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1109    /// restarted.
1110    ///
1111    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1112    /// If filtering is NOT set, this controls these GLOBAL system properties:
1113    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1114    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1115    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1116    /// for each package listed in the filter:
1117    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1118    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1119    ///
1120    /// Does not affect actual track_event data *collection*, which must be
1121    /// configured separately.
1122    #[prost(bool, optional, tag = "2")]
1123    pub hwui_skia_track_events: ::core::option::Option<bool>,
1124    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1125    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1126    #[prost(string, repeated, tag = "3")]
1127    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1128        ::prost::alloc::string::String,
1129    >,
1130}
1131/// Data source that polls for system properties.
1132#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1133pub struct AndroidSystemPropertyConfig {
1134    /// Frequency of polling. If absent the state will be recorded once, at the
1135    /// start of the trace.
1136    /// This is required to be > 100ms to avoid excessive CPU usage.
1137    #[prost(uint32, optional, tag = "1")]
1138    pub poll_ms: ::core::option::Option<u32>,
1139    /// Properties to poll. All property names must start with "debug.tracing.".
1140    #[prost(string, repeated, tag = "2")]
1141    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1142}
1143/// Configuration for the android.app_wakelocks data source.
1144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1145pub struct AppWakelocksConfig {
1146    /// Specifies the delay (in milliseconds) after which the data source will
1147    /// attempt to write events. Writing less frequently reduces the trace size by
1148    /// making better use of the packed arrays and reducing the total number of
1149    /// TracePackets needed (which each have dozens of bytes of overhead). The
1150    /// suggested delay is 5000ms.
1151    #[prost(int32, optional, tag = "1")]
1152    pub write_delay_ms: ::core::option::Option<i32>,
1153    /// When set, wakelocks held for less than this amount of time are filtered
1154    /// from the resulting trace. Note: duration is computed by matching wakelocks
1155    /// with identical attributes, not by tracking the underlying objects. The
1156    /// threshold should be < the trace's flush_period_ms.
1157    #[prost(int32, optional, tag = "2")]
1158    pub filter_duration_below_ms: ::core::option::Option<i32>,
1159    /// When true, the owner_pid is dropped from the resulting output, reducing the
1160    /// size of the interning tables.
1161    #[prost(bool, optional, tag = "3")]
1162    pub drop_owner_pid: ::core::option::Option<bool>,
1163}
1164/// Data source that records CPU per UID data.
1165#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1166pub struct CpuPerUidConfig {
1167    /// Record at this frequency.
1168    #[prost(uint32, optional, tag = "1")]
1169    pub poll_ms: ::core::option::Option<u32>,
1170}
1171/// Config for the "android.display.video" data source. Unset/0 fields use
1172/// the producer's default.
1173#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1174pub struct DisplayVideoConfig {
1175    /// Scale applied to each display's resolution before capture (0.25 =
1176    /// quarter size).
1177    #[prost(float, optional, tag = "1")]
1178    pub scale: ::core::option::Option<f32>,
1179    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
1180    pub format: ::core::option::Option<i32>,
1181    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
1182    #[prost(uint32, optional, tag = "3")]
1183    pub key_frame_interval_secs: ::core::option::Option<u32>,
1184    /// Per-display cap on emitted bytes. On reaching it the stream is torn
1185    /// down with a VideoFrameError (SIZE_CAP_HIT).
1186    #[prost(uint64, optional, tag = "4")]
1187    pub max_stream_size_bytes: ::core::option::Option<u64>,
1188    /// Target video encoder bitrate in bits per second. Controls quality vs
1189    /// trace size at a fixed resolution (unlike `scale`, which changes the
1190    /// resolution). Unset lets the producer pick a default from the (scaled)
1191    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
1192    #[prost(uint32, optional, tag = "5")]
1193    pub bitrate_bps: ::core::option::Option<u32>,
1194}
1195/// Nested message and enum types in `DisplayVideoConfig`.
1196pub mod display_video_config {
1197    #[derive(
1198        Clone,
1199        Copy,
1200        Debug,
1201        PartialEq,
1202        Eq,
1203        Hash,
1204        PartialOrd,
1205        Ord,
1206        ::prost::Enumeration
1207    )]
1208    #[repr(i32)]
1209    pub enum Format {
1210        /// Default (H.264).
1211        Unspecified = 0,
1212        H264 = 1,
1213        Hevc = 2,
1214    }
1215    impl Format {
1216        /// String value of the enum field names used in the ProtoBuf definition.
1217        ///
1218        /// The values are not transformed in any way and thus are considered stable
1219        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1220        pub fn as_str_name(&self) -> &'static str {
1221            match self {
1222                Self::Unspecified => "FORMAT_UNSPECIFIED",
1223                Self::H264 => "FORMAT_H264",
1224                Self::Hevc => "FORMAT_HEVC",
1225            }
1226        }
1227        /// Creates an enum from field names used in the ProtoBuf definition.
1228        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1229            match value {
1230                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1231                "FORMAT_H264" => Some(Self::H264),
1232                "FORMAT_HEVC" => Some(Self::Hevc),
1233                _ => None,
1234            }
1235        }
1236    }
1237}
1238/// Custom configuration for the "android.inputmethod" data source.
1239#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1240pub struct InputMethodConfig {
1241    /// If true, enables tracing in the clients.
1242    #[prost(bool, optional, tag = "1")]
1243    pub client: ::core::option::Option<bool>,
1244    /// If true, enables tracing in InputMethodService.
1245    #[prost(bool, optional, tag = "2")]
1246    pub service: ::core::option::Option<bool>,
1247    /// If true, enables tracing in InputMethodManagerService.
1248    #[prost(bool, optional, tag = "3")]
1249    pub manager_service: ::core::option::Option<bool>,
1250}
1251/// Data source that records kernel (and native) wakelock data.
1252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1253pub struct KernelWakelocksConfig {
1254    /// Record at this frequency.
1255    #[prost(uint32, optional, tag = "1")]
1256    pub poll_ms: ::core::option::Option<u32>,
1257}
1258/// Network tracing data source that records details on all packets sent or
1259/// received by the network.
1260#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1261pub struct NetworkPacketTraceConfig {
1262    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1263    /// ring buffer. The polling interval should be such that the ring buffer is
1264    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1265    /// The minimum polling rate is 100ms (values below this are ignored).
1266    /// Introduced in Android 14 (U).
1267    #[prost(uint32, optional, tag = "1")]
1268    pub poll_ms: ::core::option::Option<u32>,
1269    /// The aggregation_threshold is the number of packets at which an event will
1270    /// switch from per-packet details to aggregate details. For example, a value
1271    /// of 50 means that if a particular event (grouped by the unique combinations
1272    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1273    /// packets, the exact timestamp and length are recorded for each packet. If
1274    /// there were 50 or more packets in an event, it would only record the total
1275    /// duration, packets, and length. A value of zero or unspecified will always
1276    /// / record per-packet details. A value of 1 always records aggregate details.
1277    #[prost(uint32, optional, tag = "2")]
1278    pub aggregation_threshold: ::core::option::Option<u32>,
1279    /// Specifies the maximum number of packet contexts to intern at a time. This
1280    /// prevents the interning table from growing too large and controls whether
1281    /// interning is enabled or disabled (a value of zero disables interning and
1282    /// is the default). When a data sources interning table reaches this amount,
1283    /// packet contexts will be inlined into NetworkPacketEvents.
1284    #[prost(uint32, optional, tag = "3")]
1285    pub intern_limit: ::core::option::Option<u32>,
1286    /// The following fields specify whether certain fields should be dropped from
1287    /// the output. Dropping fields improves normalization results, reduces the
1288    /// size of the interning table, and slightly reduces event size.
1289    #[prost(bool, optional, tag = "4")]
1290    pub drop_local_port: ::core::option::Option<bool>,
1291    #[prost(bool, optional, tag = "5")]
1292    pub drop_remote_port: ::core::option::Option<bool>,
1293    #[prost(bool, optional, tag = "6")]
1294    pub drop_tcp_flags: ::core::option::Option<bool>,
1295}
1296/// Data source that lists details (such as version code) about packages on an
1297/// Android device.
1298#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1299pub struct PackagesListConfig {
1300    /// If not empty, emit info about only the following list of package names
1301    /// (exact match, no regex). Can be combined with
1302    /// |package_name_regex_filter|: a package is included if it matches either
1303    /// filter. If both filters are empty, emit info about all packages.
1304    #[prost(string, repeated, tag = "1")]
1305    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1306    /// If not empty, emit info about only the packages whose names match any of
1307    /// the following regexes (full match, not partial). Can be combined with
1308    /// |package_name_filter|: a package is included if it matches either filter.
1309    /// If both filters are empty, emit info about all packages.
1310    /// This field was introduced in Android 26Q2 (Perfetto v55).
1311    #[prost(string, repeated, tag = "3")]
1312    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1313        ::prost::alloc::string::String,
1314    >,
1315    /// If present and non-zero, the data source will periodically poll for CPU
1316    /// use by packages and only emit results for those that it sees. If absent,
1317    /// the data source will emit results for all packages at startup. The package
1318    /// name filters apply either way.
1319    #[prost(uint32, optional, tag = "2")]
1320    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1321}
1322/// Data source that records events from the modem.
1323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1324pub struct PixelModemConfig {
1325    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1326    pub event_group: ::core::option::Option<i32>,
1327    /// If set, record only events with these hashes.
1328    #[prost(int64, repeated, packed = "false", tag = "2")]
1329    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1330    /// If set and allow_list is not set, deny events with these hashes.
1331    #[prost(int64, repeated, packed = "false", tag = "3")]
1332    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1333}
1334/// Nested message and enum types in `PixelModemConfig`.
1335pub mod pixel_modem_config {
1336    /// Event group to record, as defined by the modem.
1337    #[derive(
1338        Clone,
1339        Copy,
1340        Debug,
1341        PartialEq,
1342        Eq,
1343        Hash,
1344        PartialOrd,
1345        Ord,
1346        ::prost::Enumeration
1347    )]
1348    #[repr(i32)]
1349    pub enum EventGroup {
1350        Unknown = 0,
1351        /// Events suitable for low bandwidth tracing only.
1352        LowBandwidth = 1,
1353        /// Events suitable for high and low bandwidth tracing.
1354        HighAndLowBandwidth = 2,
1355    }
1356    impl EventGroup {
1357        /// String value of the enum field names used in the ProtoBuf definition.
1358        ///
1359        /// The values are not transformed in any way and thus are considered stable
1360        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1361        pub fn as_str_name(&self) -> &'static str {
1362            match self {
1363                Self::Unknown => "EVENT_GROUP_UNKNOWN",
1364                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1365                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1366            }
1367        }
1368        /// Creates an enum from field names used in the ProtoBuf definition.
1369        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1370            match value {
1371                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
1372                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
1373                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
1374                _ => None,
1375            }
1376        }
1377    }
1378}
1379/// Custom configuration for the "android.protolog" data source.
1380/// ProtoLog is a logging mechanism that is intented to be more efficient than
1381/// logcat. This configures what logs to capture in the tracing instance.
1382#[derive(Clone, PartialEq, ::prost::Message)]
1383pub struct ProtoLogConfig {
1384    /// Specified the configurations for each of the logging groups. If none is
1385    /// specified for a group the defaults will be used.
1386    #[prost(message, repeated, tag = "1")]
1387    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1388    /// Specified what tracing mode to use for the tracing instance.
1389    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
1390    pub tracing_mode: ::core::option::Option<i32>,
1391    /// If set, any message with log level higher than this level (inclusive) will
1392    /// be traced. Group overrides take precedence over this value.
1393    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
1394    pub default_log_from_level: ::core::option::Option<i32>,
1395}
1396/// Nested message and enum types in `ProtoLogConfig`.
1397pub mod proto_log_config {
1398    #[derive(
1399        Clone,
1400        Copy,
1401        Debug,
1402        PartialEq,
1403        Eq,
1404        Hash,
1405        PartialOrd,
1406        Ord,
1407        ::prost::Enumeration
1408    )]
1409    #[repr(i32)]
1410    pub enum TracingMode {
1411        /// When using the DEFAULT tracing mode, only log groups and levels specified
1412        /// in the group_overrides are traced.
1413        Default = 0,
1414        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1415        /// traced, unless specified in the group_overrides.
1416        EnableAll = 1,
1417    }
1418    impl TracingMode {
1419        /// String value of the enum field names used in the ProtoBuf definition.
1420        ///
1421        /// The values are not transformed in any way and thus are considered stable
1422        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1423        pub fn as_str_name(&self) -> &'static str {
1424            match self {
1425                Self::Default => "DEFAULT",
1426                Self::EnableAll => "ENABLE_ALL",
1427            }
1428        }
1429        /// Creates an enum from field names used in the ProtoBuf definition.
1430        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1431            match value {
1432                "DEFAULT" => Some(Self::Default),
1433                "ENABLE_ALL" => Some(Self::EnableAll),
1434                _ => None,
1435            }
1436        }
1437    }
1438}
1439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1440pub struct ProtoLogGroup {
1441    /// The ProtoLog group name this configuration entry applies to.
1442    #[prost(string, optional, tag = "1")]
1443    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1444    /// Specify the level from which to start capturing protologs.
1445    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1446    /// message will be traced.
1447    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
1448    pub log_from: ::core::option::Option<i32>,
1449    /// When set to true we will collect the stacktrace for each protolog message
1450    /// in this group that we are tracing.
1451    #[prost(bool, optional, tag = "3")]
1452    pub collect_stacktrace: ::core::option::Option<bool>,
1453}
1454/// Custom configuration for the "android.surfaceflinger.layers" data source.
1455#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1456pub struct SurfaceFlingerLayersConfig {
1457    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
1458    pub mode: ::core::option::Option<i32>,
1459    #[prost(
1460        enumeration = "surface_flinger_layers_config::TraceFlag",
1461        repeated,
1462        packed = "false",
1463        tag = "2"
1464    )]
1465    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1466}
1467/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1468pub mod surface_flinger_layers_config {
1469    #[derive(
1470        Clone,
1471        Copy,
1472        Debug,
1473        PartialEq,
1474        Eq,
1475        Hash,
1476        PartialOrd,
1477        Ord,
1478        ::prost::Enumeration
1479    )]
1480    #[repr(i32)]
1481    pub enum Mode {
1482        Unspecified = 0,
1483        /// Trace layers snapshots. A snapshot is taken every time a layers change
1484        /// occurs.
1485        Active = 1,
1486        /// Generate layers snapshots from the transactions kept in the
1487        /// SurfaceFlinger's internal ring buffer.
1488        /// The layers snapshots generation occurs when this data source is flushed.
1489        Generated = 2,
1490        /// Trace a single layers snapshot.
1491        Dump = 3,
1492        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1493        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1494        /// when a bugreport is taken.
1495        GeneratedBugreportOnly = 4,
1496        /// Layer snapshots are generated by ProtoVM from layer patches
1497        Protovm = 5,
1498    }
1499    impl Mode {
1500        /// String value of the enum field names used in the ProtoBuf definition.
1501        ///
1502        /// The values are not transformed in any way and thus are considered stable
1503        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1504        pub fn as_str_name(&self) -> &'static str {
1505            match self {
1506                Self::Unspecified => "MODE_UNSPECIFIED",
1507                Self::Active => "MODE_ACTIVE",
1508                Self::Generated => "MODE_GENERATED",
1509                Self::Dump => "MODE_DUMP",
1510                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1511                Self::Protovm => "MODE_PROTOVM",
1512            }
1513        }
1514        /// Creates an enum from field names used in the ProtoBuf definition.
1515        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1516            match value {
1517                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1518                "MODE_ACTIVE" => Some(Self::Active),
1519                "MODE_GENERATED" => Some(Self::Generated),
1520                "MODE_DUMP" => Some(Self::Dump),
1521                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
1522                "MODE_PROTOVM" => Some(Self::Protovm),
1523                _ => None,
1524            }
1525        }
1526    }
1527    #[derive(
1528        Clone,
1529        Copy,
1530        Debug,
1531        PartialEq,
1532        Eq,
1533        Hash,
1534        PartialOrd,
1535        Ord,
1536        ::prost::Enumeration
1537    )]
1538    #[repr(i32)]
1539    pub enum TraceFlag {
1540        Unspecified = 0,
1541        Input = 2,
1542        Composition = 4,
1543        Extra = 8,
1544        Hwc = 16,
1545        Buffers = 32,
1546        VirtualDisplays = 64,
1547        /// INPUT | COMPOSITION | EXTRA
1548        All = 14,
1549    }
1550    impl TraceFlag {
1551        /// String value of the enum field names used in the ProtoBuf definition.
1552        ///
1553        /// The values are not transformed in any way and thus are considered stable
1554        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1555        pub fn as_str_name(&self) -> &'static str {
1556            match self {
1557                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1558                Self::Input => "TRACE_FLAG_INPUT",
1559                Self::Composition => "TRACE_FLAG_COMPOSITION",
1560                Self::Extra => "TRACE_FLAG_EXTRA",
1561                Self::Hwc => "TRACE_FLAG_HWC",
1562                Self::Buffers => "TRACE_FLAG_BUFFERS",
1563                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1564                Self::All => "TRACE_FLAG_ALL",
1565            }
1566        }
1567        /// Creates an enum from field names used in the ProtoBuf definition.
1568        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1569            match value {
1570                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
1571                "TRACE_FLAG_INPUT" => Some(Self::Input),
1572                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
1573                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
1574                "TRACE_FLAG_HWC" => Some(Self::Hwc),
1575                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
1576                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
1577                "TRACE_FLAG_ALL" => Some(Self::All),
1578                _ => None,
1579            }
1580        }
1581    }
1582}
1583/// Custom configuration for the "android.surfaceflinger.transactions" data
1584/// source.
1585#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1586pub struct SurfaceFlingerTransactionsConfig {
1587    #[prost(
1588        enumeration = "surface_flinger_transactions_config::Mode",
1589        optional,
1590        tag = "1"
1591    )]
1592    pub mode: ::core::option::Option<i32>,
1593}
1594/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1595pub mod surface_flinger_transactions_config {
1596    #[derive(
1597        Clone,
1598        Copy,
1599        Debug,
1600        PartialEq,
1601        Eq,
1602        Hash,
1603        PartialOrd,
1604        Ord,
1605        ::prost::Enumeration
1606    )]
1607    #[repr(i32)]
1608    pub enum Mode {
1609        Unspecified = 0,
1610        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1611        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1612        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1613        /// initial state and the latest transactions.
1614        Continuous = 1,
1615        /// SurfaceFlinger writes the initial state and then each incoming
1616        /// transaction until the data source is stopped.
1617        Active = 2,
1618    }
1619    impl Mode {
1620        /// String value of the enum field names used in the ProtoBuf definition.
1621        ///
1622        /// The values are not transformed in any way and thus are considered stable
1623        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1624        pub fn as_str_name(&self) -> &'static str {
1625            match self {
1626                Self::Unspecified => "MODE_UNSPECIFIED",
1627                Self::Continuous => "MODE_CONTINUOUS",
1628                Self::Active => "MODE_ACTIVE",
1629            }
1630        }
1631        /// Creates an enum from field names used in the ProtoBuf definition.
1632        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1633            match value {
1634                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1635                "MODE_CONTINUOUS" => Some(Self::Continuous),
1636                "MODE_ACTIVE" => Some(Self::Active),
1637                _ => None,
1638            }
1639        }
1640    }
1641}
1642/// Data source that lists details (such as version code) about users on an
1643/// Android device.
1644#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1645pub struct AndroidUserListConfig {
1646    /// An allowlist of user type strings, used to control the granularity of
1647    /// user type information emitted in the trace. Exact, case-sensitive string
1648    /// matching is used.
1649    ///
1650    /// Any user type read from the device that is NOT present in the
1651    /// effective allowlist will have its type reported as
1652    /// "android.os.usertype.FILTERED".
1653    ///
1654    /// The effective allowlist is determined as follows:
1655    ///
1656    /// 1. If this 'user_type_filter' field is provided and non-empty:
1657    ///     This list itself is the effective allowlist.
1658    ///     Example TraceConfig:
1659    ///     --------------------
1660    ///     data_sources {
1661    ///         config {
1662    ///             name: "android.user_list"
1663    ///             target_buffer: 0
1664    ///             user_list_config {
1665    ///               # Only report these specific types, others become FILTERED.
1666    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1667    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1668    ///             }
1669    ///         }
1670    ///     }
1671    ///
1672    ///
1673    /// Note: This field does not support regular expressions.
1674    #[prost(string, repeated, tag = "1")]
1675    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1676}
1677/// Custom configuration for the "android.windowmanager" data source.
1678#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1679pub struct WindowManagerConfig {
1680    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
1681    pub log_frequency: ::core::option::Option<i32>,
1682    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
1683    pub log_level: ::core::option::Option<i32>,
1684    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
1685    pub log_mode: ::core::option::Option<i32>,
1686}
1687/// Nested message and enum types in `WindowManagerConfig`.
1688pub mod window_manager_config {
1689    #[derive(
1690        Clone,
1691        Copy,
1692        Debug,
1693        PartialEq,
1694        Eq,
1695        Hash,
1696        PartialOrd,
1697        Ord,
1698        ::prost::Enumeration
1699    )]
1700    #[repr(i32)]
1701    pub enum LogFrequency {
1702        Unspecified = 0,
1703        /// Trace state snapshots when a frame is committed.
1704        Frame = 1,
1705        /// Trace state snapshots every time a transaction is committed.
1706        Transaction = 2,
1707        /// Trace single state snapshots when the data source is started.
1708        SingleDump = 3,
1709    }
1710    impl LogFrequency {
1711        /// String value of the enum field names used in the ProtoBuf definition.
1712        ///
1713        /// The values are not transformed in any way and thus are considered stable
1714        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1715        pub fn as_str_name(&self) -> &'static str {
1716            match self {
1717                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1718                Self::Frame => "LOG_FREQUENCY_FRAME",
1719                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
1720                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1721            }
1722        }
1723        /// Creates an enum from field names used in the ProtoBuf definition.
1724        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1725            match value {
1726                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
1727                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
1728                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
1729                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
1730                _ => None,
1731            }
1732        }
1733    }
1734    #[derive(
1735        Clone,
1736        Copy,
1737        Debug,
1738        PartialEq,
1739        Eq,
1740        Hash,
1741        PartialOrd,
1742        Ord,
1743        ::prost::Enumeration
1744    )]
1745    #[repr(i32)]
1746    pub enum LogLevel {
1747        Unspecified = 0,
1748        /// Logs all elements with maximum amount of information.
1749        Verbose = 1,
1750        /// Logs all elements but doesn't write all configuration data.
1751        Debug = 2,
1752        /// Logs only visible elements, with the minimum amount of performance
1753        /// overhead
1754        Critical = 3,
1755    }
1756    impl LogLevel {
1757        /// String value of the enum field names used in the ProtoBuf definition.
1758        ///
1759        /// The values are not transformed in any way and thus are considered stable
1760        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1761        pub fn as_str_name(&self) -> &'static str {
1762            match self {
1763                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1764                Self::Verbose => "LOG_LEVEL_VERBOSE",
1765                Self::Debug => "LOG_LEVEL_DEBUG",
1766                Self::Critical => "LOG_LEVEL_CRITICAL",
1767            }
1768        }
1769        /// Creates an enum from field names used in the ProtoBuf definition.
1770        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1771            match value {
1772                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
1773                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
1774                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
1775                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
1776                _ => None,
1777            }
1778        }
1779    }
1780    #[derive(
1781        Clone,
1782        Copy,
1783        Debug,
1784        PartialEq,
1785        Eq,
1786        Hash,
1787        PartialOrd,
1788        Ord,
1789        ::prost::Enumeration
1790    )]
1791    #[repr(i32)]
1792    pub enum LogMode {
1793        Unspecified = 0,
1794        /// Always logs a full state dump of the window hierarchy.
1795        FullState = 1,
1796        /// Logs a full state dump of the window hierarchy only when tracing starts.
1797        /// The following trace packets are lightweight patches containing only the
1798        /// last changes.
1799        Incremental = 2,
1800    }
1801    impl LogMode {
1802        /// String value of the enum field names used in the ProtoBuf definition.
1803        ///
1804        /// The values are not transformed in any way and thus are considered stable
1805        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1806        pub fn as_str_name(&self) -> &'static str {
1807            match self {
1808                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
1809                Self::FullState => "LOG_MODE_FULL_STATE",
1810                Self::Incremental => "LOG_MODE_INCREMENTAL",
1811            }
1812        }
1813        /// Creates an enum from field names used in the ProtoBuf definition.
1814        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1815            match value {
1816                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1817                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
1818                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
1819                _ => None,
1820            }
1821        }
1822    }
1823}
1824#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1825pub struct ChromeConfig {
1826    #[prost(string, optional, tag = "1")]
1827    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1828    /// When enabled, the data source should only fill in fields in the output that
1829    /// are not potentially privacy sensitive.
1830    #[prost(bool, optional, tag = "2")]
1831    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1832    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1833    /// JSON format. Note that the trace data will still be returned as a series of
1834    /// TracePackets, but the embedded data will be JSON instead of serialized
1835    /// protobuf.
1836    #[prost(bool, optional, tag = "3")]
1837    pub convert_to_legacy_json: ::core::option::Option<bool>,
1838    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
1839    pub client_priority: ::core::option::Option<i32>,
1840    /// Applicable only when using legacy JSON format.
1841    /// If |json_agent_label_filter| is not empty, only data pertaining to
1842    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1843    #[prost(string, optional, tag = "5")]
1844    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1845    ///   When enabled, event names should not contain package names.
1846    #[prost(bool, optional, tag = "6")]
1847    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1848}
1849/// Nested message and enum types in `ChromeConfig`.
1850pub mod chrome_config {
1851    /// Priority of the tracing session client. A higher priority session may
1852    /// preempt a lower priority one in configurations where concurrent sessions
1853    /// aren't supported.
1854    #[derive(
1855        Clone,
1856        Copy,
1857        Debug,
1858        PartialEq,
1859        Eq,
1860        Hash,
1861        PartialOrd,
1862        Ord,
1863        ::prost::Enumeration
1864    )]
1865    #[repr(i32)]
1866    pub enum ClientPriority {
1867        Unknown = 0,
1868        Background = 1,
1869        UserInitiated = 2,
1870    }
1871    impl ClientPriority {
1872        /// String value of the enum field names used in the ProtoBuf definition.
1873        ///
1874        /// The values are not transformed in any way and thus are considered stable
1875        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1876        pub fn as_str_name(&self) -> &'static str {
1877            match self {
1878                Self::Unknown => "UNKNOWN",
1879                Self::Background => "BACKGROUND",
1880                Self::UserInitiated => "USER_INITIATED",
1881            }
1882        }
1883        /// Creates an enum from field names used in the ProtoBuf definition.
1884        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1885            match value {
1886                "UNKNOWN" => Some(Self::Unknown),
1887                "BACKGROUND" => Some(Self::Background),
1888                "USER_INITIATED" => Some(Self::UserInitiated),
1889                _ => None,
1890            }
1891        }
1892    }
1893}
1894#[derive(Clone, PartialEq, ::prost::Message)]
1895pub struct ChromiumHistogramSamplesConfig {
1896    /// List of histograms to record. If no histogram is specified, all histograms
1897    /// are recorded.
1898    #[prost(message, repeated, tag = "1")]
1899    pub histograms: ::prost::alloc::vec::Vec<
1900        chromium_histogram_samples_config::HistogramSample,
1901    >,
1902    /// Default: false (i.e. histogram names are NOT filtered out by default)
1903    /// When true, histogram_name will be filtered out.
1904    #[prost(bool, optional, tag = "2")]
1905    pub filter_histogram_names: ::core::option::Option<bool>,
1906}
1907/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1908pub mod chromium_histogram_samples_config {
1909    /// Records when a value within the specified bounds \[min_value, max_value\] is
1910    /// emitted into a Chrome histogram.
1911    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1912    pub struct HistogramSample {
1913        #[prost(string, optional, tag = "1")]
1914        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1915        #[prost(int64, optional, tag = "2")]
1916        pub min_value: ::core::option::Option<i64>,
1917        #[prost(int64, optional, tag = "3")]
1918        pub max_value: ::core::option::Option<i64>,
1919    }
1920}
1921#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1922pub struct ChromiumSamplingHeapProfilerConfig {
1923    /// Sampling interval in bytes.
1924    #[prost(uint64, optional, tag = "1")]
1925    pub sampling_interval_bytes: ::core::option::Option<u64>,
1926    /// Sampling interval in milliseconds.
1927    #[prost(uint32, optional, tag = "2")]
1928    pub sampling_interval_ms: ::core::option::Option<u32>,
1929}
1930#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1931pub struct ChromiumStackSamplingProfilerConfig {
1932    /// Sampling interval in milliseconds.
1933    #[prost(uint32, optional, tag = "1")]
1934    pub sampling_interval_ms: ::core::option::Option<u32>,
1935}
1936#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1937pub struct ChromiumSystemMetricsConfig {
1938    /// Samples counters every X ms.
1939    #[prost(uint32, optional, tag = "1")]
1940    pub sampling_interval_ms: ::core::option::Option<u32>,
1941}
1942#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1943pub struct V8Config {
1944    /// Whether to log the actual content of scripts (e.g. content of the JS file
1945    /// that was compiled to generate code).
1946    /// ATTENTION: This could considerably increase the size of the resuling trace
1947    ///             file.
1948    #[prost(bool, optional, tag = "1")]
1949    pub log_script_sources: ::core::option::Option<bool>,
1950    /// Whether to log the generated code for jitted functions (machine code or
1951    /// bytecode).
1952    /// ATTENTION: This could considerably increase the size of the resuling trace
1953    ///             file.
1954    #[prost(bool, optional, tag = "2")]
1955    pub log_instructions: ::core::option::Option<bool>,
1956}
1957/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1958/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1959/// ns-evntrace-event_trace_properties
1960#[derive(Clone, PartialEq, ::prost::Message)]
1961pub struct EtwConfig {
1962    /// The kernel_flags determines the flags that will be used by the etw tracing
1963    /// session. These kernel flags have been built to expose the useful events
1964    /// captured from the kernel mode only.
1965    #[deprecated]
1966    #[prost(
1967        enumeration = "etw_config::KernelFlag",
1968        repeated,
1969        packed = "false",
1970        tag = "1"
1971    )]
1972    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1973    /// Provides events relating to the scheduler.
1974    #[prost(string, repeated, tag = "2")]
1975    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
1976        ::prost::alloc::string::String,
1977    >,
1978    /// Provides events relating to the memory manager.
1979    #[prost(string, repeated, tag = "3")]
1980    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1981    /// Provides events relating to file I/O.
1982    #[deprecated]
1983    #[prost(string, repeated, tag = "4")]
1984    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1985    /// Events for which stacks should be collected.
1986    #[prost(string, repeated, tag = "5")]
1987    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1988    /// Provides events relating to disk I/O.
1989    #[deprecated]
1990    #[prost(string, repeated, tag = "6")]
1991    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1992    /// Provides events relating to multiple kinds of IO including disk, cache, and
1993    /// network.
1994    #[prost(string, repeated, tag = "7")]
1995    pub system_io_provider_events: ::prost::alloc::vec::Vec<
1996        ::prost::alloc::string::String,
1997    >,
1998    /// Debug IDs for images whose stack samples should be symbolized.
1999    #[prost(message, repeated, tag = "8")]
2000    pub stack_sampling_debug_ids: ::prost::alloc::vec::Vec<etw_config::DebugId>,
2001}
2002/// Nested message and enum types in `EtwConfig`.
2003pub mod etw_config {
2004    /// A debug ID that uniquely identifies an image (i.e., executable) for
2005    /// symbolization when stack sampling.
2006    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2007    pub struct DebugId {
2008        /// The full path to the image file.
2009        #[prost(string, optional, tag = "1")]
2010        pub path: ::core::option::Option<::prost::alloc::string::String>,
2011        /// The unique identifier for the image file.
2012        #[prost(string, optional, tag = "2")]
2013        pub debug_id: ::core::option::Option<::prost::alloc::string::String>,
2014    }
2015    /// The KernelFlag represent list of kernel flags that we are intrested in.
2016    /// To get a more extensive list run 'xperf -providers k'.
2017    #[derive(
2018        Clone,
2019        Copy,
2020        Debug,
2021        PartialEq,
2022        Eq,
2023        Hash,
2024        PartialOrd,
2025        Ord,
2026        ::prost::Enumeration
2027    )]
2028    #[repr(i32)]
2029    pub enum KernelFlag {
2030        Cswitch = 0,
2031        Dispatcher = 1,
2032    }
2033    impl KernelFlag {
2034        /// String value of the enum field names used in the ProtoBuf definition.
2035        ///
2036        /// The values are not transformed in any way and thus are considered stable
2037        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2038        pub fn as_str_name(&self) -> &'static str {
2039            match self {
2040                Self::Cswitch => "CSWITCH",
2041                Self::Dispatcher => "DISPATCHER",
2042            }
2043        }
2044        /// Creates an enum from field names used in the ProtoBuf definition.
2045        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2046            match value {
2047                "CSWITCH" => Some(Self::Cswitch),
2048                "DISPATCHER" => Some(Self::Dispatcher),
2049                _ => None,
2050            }
2051        }
2052    }
2053}
2054#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2055pub struct FrozenFtraceConfig {
2056    /// The instance name which stores the previous boot ftrace data. Required.
2057    #[prost(string, optional, tag = "1")]
2058    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2059}
2060/// Next id: 38
2061#[derive(Clone, PartialEq, ::prost::Message)]
2062pub struct FtraceConfig {
2063    /// Ftrace events to record, example: "sched/sched_switch".
2064    #[prost(string, repeated, tag = "1")]
2065    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2066    /// Android-specific event categories:
2067    #[prost(string, repeated, tag = "2")]
2068    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2069    #[prost(string, repeated, tag = "3")]
2070    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2071    /// Some processes can emit data through atrace or through the perfetto SDK via
2072    /// the "track_event" data source. For these categories, the SDK will be
2073    /// preferred, if possible, for this config.
2074    #[prost(string, repeated, tag = "28")]
2075    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2076        ::prost::alloc::string::String,
2077    >,
2078    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2079    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2080    /// events for convenience (and the vendor-specific events on top).
2081    /// Introduced in: perfetto v52.
2082    #[prost(bool, optional, tag = "34")]
2083    pub atrace_userspace_only: ::core::option::Option<bool>,
2084    /// Size of each per-cpu kernel ftrace ring buffer.
2085    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2086    /// buffers cannot be resized without pausing recording in the kernel.
2087    #[prost(uint32, optional, tag = "10")]
2088    pub buffer_size_kb: ::core::option::Option<u32>,
2089    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2090    /// implementation to choose a bigger buffer size.
2091    ///
2092    /// Most configs for perfetto v43+ should simply leave both fields unset.
2093    ///
2094    /// If you need a config compatible with a range of perfetto builds and you
2095    /// used to set a non-default buffer_size_kb, consider setting both fields.
2096    /// Example:
2097    ///    buffer_size_kb: 4096
2098    ///    buffer_size_lower_bound: true
2099    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2100    /// On v43+, buffers will be at least 4 MB.
2101    /// In both cases, neither is guaranteed if there are other concurrent
2102    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2103    /// the recording in the kernel.
2104    /// Introduced in: perfetto v43.
2105    #[prost(bool, optional, tag = "27")]
2106    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2107    /// If set, specifies how often the tracing daemon reads from the kernel ring
2108    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2109    /// Leave unset unless you're fine-tuning a local config.
2110    #[prost(uint32, optional, tag = "11")]
2111    pub drain_period_ms: ::core::option::Option<u32>,
2112    /// If set, the tracing daemon will read kernel ring buffers as soon as
2113    /// they're filled past this percentage of occupancy. In other words, a value
2114    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2115    /// half-full. Not guaranteed if there are multiple concurrent tracing
2116    /// sessions.
2117    /// Currently does nothing on Linux kernels below v6.9.
2118    /// Introduced in: perfetto v48.
2119    #[prost(uint32, optional, tag = "29")]
2120    pub drain_buffer_percent: ::core::option::Option<u32>,
2121    #[prost(message, optional, tag = "12")]
2122    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2123    #[prost(message, optional, tag = "22")]
2124    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2125    /// Enables symbol name resolution against /proc/kallsyms.
2126    /// It requires that either traced_probes is running as root or that
2127    /// kptr_restrict has been manually lowered.
2128    /// It does not disclose KASLR, symbol addresses are mangled.
2129    #[prost(bool, optional, tag = "13")]
2130    pub symbolize_ksyms: ::core::option::Option<bool>,
2131    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2132    pub ksyms_mem_policy: ::core::option::Option<i32>,
2133    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2134    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2135    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2136    /// The historical context for this is the following:
2137    /// - Up to Android S (12), the rss_stat was internally throttled in its
2138    ///    kernel implementation.
2139    /// - A change introduced in the kernels after S has introduced a new
2140    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2141    ///    (hence very spammy).
2142    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2143    ///    need to deal with both cases.
2144    /// For more context: go/rss-stat-throttled.
2145    #[prost(bool, optional, tag = "15")]
2146    pub throttle_rss_stat: ::core::option::Option<bool>,
2147    /// If true, use self-describing proto messages when writing events not known
2148    /// at compile time (aka generic events). Each event bundle will have a set of
2149    /// serialised proto descriptors for events within that bundle.
2150    ///
2151    /// Default if unset:
2152    /// * v53+: true
2153    /// * before v53: false
2154    ///
2155    /// Added in: perfetto v50.
2156    #[prost(bool, optional, tag = "32")]
2157    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2158    /// If true, avoid enabling events that aren't statically known by
2159    /// traced_probes. Otherwise, the default is to emit such events as
2160    /// GenericFtraceEvent protos.
2161    /// Prefer to keep this flag at its default. This was added for Android
2162    /// tracing, where atrace categories and/or atrace HAL requested events can
2163    /// expand to events that aren't of interest to the tracing user.
2164    /// Introduced in: Android T.
2165    #[prost(bool, optional, tag = "16")]
2166    pub disable_generic_events: ::core::option::Option<bool>,
2167    /// The subset of syscalls to record. To record all syscalls, leave this unset
2168    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2169    /// * before perfetto v43, requires the config to also enable
2170    ///    raw_syscalls/sys_{enter,exit}.
2171    /// * perfetto v43+ does the right thing if you set only this field.
2172    /// Example: \["sys_read", "sys_open"\].
2173    /// Introduced in: Android U.
2174    #[prost(string, repeated, tag = "18")]
2175    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2176    /// If true, enable the "function_graph" kernel tracer that emits events
2177    /// whenever a kernel function is entered and exited
2178    /// (funcgraph_entry/funcgraph_exit).
2179    /// Notes on use:
2180    /// * Requires |symbolize_ksyms| for function name resolution.
2181    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2182    ///    set of functions, otherwise the event bandwidth will be too high for
2183    ///    practical use.
2184    /// * The data source might be rejected if there is already a concurrent
2185    ///    ftrace data source that does not use function graph itself, as we do not
2186    ///    support switching kernel tracers mid-trace.
2187    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2188    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2189    ///    "function_graph".
2190    /// Android:
2191    /// * Available only on debuggable builds.
2192    /// * Introduced in: Android U.
2193    #[prost(bool, optional, tag = "19")]
2194    pub enable_function_graph: ::core::option::Option<bool>,
2195    /// Constrains the set of functions traced when |enable_function_graph| is
2196    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2197    /// in which case all matching functions will be traced. See kernel
2198    /// documentation on ftrace "set_ftrace_filter" file for more details.
2199    /// Android:
2200    /// * Available only on debuggable builds.
2201    /// * Introduced in: Android U.
2202    #[prost(string, repeated, tag = "20")]
2203    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2204    /// If |enable_function_graph| is true, trace this set of functions *and* all
2205    /// of its callees. Supports globs. Can be set together with
2206    /// |function_filters|, in which case only callees matching the filter will be
2207    /// traced. If setting both, you most likely want all roots to also be
2208    /// included in |function_filters|.
2209    /// Android:
2210    /// * Available only on debuggable builds.
2211    /// * Introduced in: Android U.
2212    #[prost(string, repeated, tag = "21")]
2213    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2214    /// If |enable_function_graph| is true, only trace the specified
2215    /// number of calls down the stack. Sets the max_graph_depth value
2216    /// in sys/kernel/tracing/
2217    ///
2218    /// Only respected for the first tracing session that enables
2219    /// function_graph tracing.
2220    ///
2221    /// Introduced in: perfetto v51.
2222    /// Supported on: Android 25Q3+.
2223    #[prost(uint32, optional, tag = "33")]
2224    pub function_graph_max_depth: ::core::option::Option<u32>,
2225    /// Ftrace events to record, specific for kprobes and kretprobes
2226    #[prost(message, repeated, tag = "30")]
2227    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2228    /// If true, does not clear kernel ftrace buffers when starting the trace.
2229    /// This makes sense only if this is the first ftrace data source instance
2230    /// created after the daemon has been started. Can be useful for gathering boot
2231    /// traces, if ftrace has been separately configured (e.g. via kernel
2232    /// commandline).
2233    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2234    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2235    /// anything besides ftrace. Otherwise timestamps might be skewed.
2236    #[prost(bool, optional, tag = "23")]
2237    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2238    /// If true, overrides the default timestamp clock and uses a raw hardware
2239    /// based monotonic clock for getting timestamps.
2240    /// * Introduced in: Android U.
2241    #[prost(bool, optional, tag = "24")]
2242    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2243    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2244    /// for event recording. Normally, this means
2245    /// `/sys/kernel/tracing/instances/$instance_name`.
2246    ///
2247    /// Names "hyp" and "hypervisor" are reserved.
2248    ///
2249    /// The instance must already exist, the tracing daemon *will not* create it
2250    /// for you as it typically doesn't have such permissions.
2251    /// Only a subset of features is guaranteed to work with non-default instances,
2252    /// at the time of writing:
2253    ///   * ftrace_events
2254    ///   * buffer_size_kb
2255    #[prost(string, optional, tag = "25")]
2256    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2257    /// For perfetto developer use. If true and on a debuggable android build,
2258    /// serialise raw tracing pages that the implementation cannot parse.
2259    #[prost(bool, optional, tag = "31")]
2260    pub debug_ftrace_abi: ::core::option::Option<bool>,
2261    /// Filter ftrace events by Thread ID (TID).
2262    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2263    ///
2264    /// Note: this is an exclusive feature, see:
2265    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2266    ///
2267    /// Introduced in: perfetto v52.
2268    /// Supported on: Android 25Q3+.
2269    #[prost(uint32, repeated, packed = "false", tag = "35")]
2270    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2271    #[prost(message, repeated, tag = "36")]
2272    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2273    /// This mask restricts tracing to a specific set of CPUs using a
2274    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2275    /// 32-bit chunk of the CPU mask.
2276    ///
2277    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2278    ///    - Rightmost chunk: CPUs 0-31
2279    ///    - 2nd chunk from right: CPUs 32-63
2280    ///    - ...and so on.
2281    ///
2282    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2283    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2284    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2285    /// chunk0 to 0-31.
2286    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2287    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2288    ///
2289    /// Note: This is an exclusive feature, see:
2290    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2291    ///
2292    /// Introduced in: perfetto v52.
2293    /// Supported on: Android 25Q3+.
2294    #[prost(string, optional, tag = "37")]
2295    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2296    /// No-op in perfetto v28+. Name preserved because of existing references in
2297    /// textproto configs.
2298    #[deprecated]
2299    #[prost(bool, optional, tag = "14")]
2300    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2301}
2302/// Nested message and enum types in `FtraceConfig`.
2303pub mod ftrace_config {
2304    /// Configuration for compact encoding of scheduler events. When enabled (and
2305    /// recording the relevant ftrace events), specific high-volume events are
2306    /// encoded in a denser format than normal.
2307    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2308    pub struct CompactSchedConfig {
2309        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2310        /// record those events in the compact format.
2311        ///
2312        /// If the field is unset, the default is:
2313        /// * perfetto v42.0+: enabled
2314        /// * before: disabled
2315        #[prost(bool, optional, tag = "1")]
2316        pub enabled: ::core::option::Option<bool>,
2317    }
2318    /// Optional filter for "ftrace/print" events.
2319    ///
2320    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2321    /// are processed in order), its `allow` field will be used as the outcome: if
2322    /// `allow` is true, the event will be included in the trace, otherwise it will
2323    /// be discarded. If an event does not match any rule, it will be allowed by
2324    /// default (a rule with an empty prefix and allow=false, disallows everything
2325    /// by default).
2326    #[derive(Clone, PartialEq, ::prost::Message)]
2327    pub struct PrintFilter {
2328        #[prost(message, repeated, tag = "1")]
2329        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2330    }
2331    /// Nested message and enum types in `PrintFilter`.
2332    pub mod print_filter {
2333        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2334        pub struct Rule {
2335            #[prost(bool, optional, tag = "2")]
2336            pub allow: ::core::option::Option<bool>,
2337            #[prost(oneof = "rule::Match", tags = "1, 3")]
2338            pub r#match: ::core::option::Option<rule::Match>,
2339        }
2340        /// Nested message and enum types in `Rule`.
2341        pub mod rule {
2342            /// Matches an atrace message of the form:
2343            /// <type>|pid|<prefix>...
2344            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2345            pub struct AtraceMessage {
2346                #[prost(string, optional, tag = "1")]
2347                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2348                #[prost(string, optional, tag = "2")]
2349                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2350            }
2351            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2352            pub enum Match {
2353                /// This rule matches if `prefix` matches exactly with the beginning of
2354                /// the "ftrace/print" "buf" field.
2355                #[prost(string, tag = "1")]
2356                Prefix(::prost::alloc::string::String),
2357                /// This rule matches if the "buf" field contains an atrace-style print
2358                /// message as specified in `atrace_msg`.
2359                #[prost(message, tag = "3")]
2360                AtraceMsg(AtraceMessage),
2361            }
2362        }
2363    }
2364    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2365    pub struct KprobeEvent {
2366        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2367        #[prost(string, optional, tag = "1")]
2368        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2369        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
2370        pub r#type: ::core::option::Option<i32>,
2371    }
2372    /// Nested message and enum types in `KprobeEvent`.
2373    pub mod kprobe_event {
2374        #[derive(
2375            Clone,
2376            Copy,
2377            Debug,
2378            PartialEq,
2379            Eq,
2380            Hash,
2381            PartialOrd,
2382            Ord,
2383            ::prost::Enumeration
2384        )]
2385        #[repr(i32)]
2386        pub enum KprobeType {
2387            Unknown = 0,
2388            Kprobe = 1,
2389            Kretprobe = 2,
2390            Both = 3,
2391        }
2392        impl KprobeType {
2393            /// String value of the enum field names used in the ProtoBuf definition.
2394            ///
2395            /// The values are not transformed in any way and thus are considered stable
2396            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2397            pub fn as_str_name(&self) -> &'static str {
2398                match self {
2399                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
2400                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
2401                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
2402                    Self::Both => "KPROBE_TYPE_BOTH",
2403                }
2404            }
2405            /// Creates an enum from field names used in the ProtoBuf definition.
2406            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2407                match value {
2408                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
2409                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
2410                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
2411                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
2412                    _ => None,
2413                }
2414            }
2415        }
2416    }
2417    /// Tracefs options to set directly in the tracefs instance. This is a very
2418    /// niche feature since almost all of the options deal with formatting textual
2419    /// output (the /trace file), which perfetto doesn't use.
2420    ///
2421    /// The options with a known use-case:
2422    /// * event-fork: when using `tids_to_trace` above, the kernel will
2423    ///    automatically add newly spawned descendant threads to the set of TIDs.
2424    ///
2425    /// Full list of options is available at
2426    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
2427    ///
2428    /// Note: this is an exclusive feature, see:
2429    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2430    ///
2431    /// Introduced in: perfetto v52.
2432    /// Supported on: Android 25Q3+.
2433    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2434    pub struct TracefsOption {
2435        /// The name of the tracefs option as found in tracefs/trace_options (without
2436        /// the "no" prefix).
2437        #[prost(string, optional, tag = "1")]
2438        pub name: ::core::option::Option<::prost::alloc::string::String>,
2439        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
2440        pub state: ::core::option::Option<i32>,
2441    }
2442    /// Nested message and enum types in `TracefsOption`.
2443    pub mod tracefs_option {
2444        #[derive(
2445            Clone,
2446            Copy,
2447            Debug,
2448            PartialEq,
2449            Eq,
2450            Hash,
2451            PartialOrd,
2452            Ord,
2453            ::prost::Enumeration
2454        )]
2455        #[repr(i32)]
2456        pub enum State {
2457            Unknown = 0,
2458            Enabled = 1,
2459            Disabled = 2,
2460        }
2461        impl State {
2462            /// String value of the enum field names used in the ProtoBuf definition.
2463            ///
2464            /// The values are not transformed in any way and thus are considered stable
2465            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2466            pub fn as_str_name(&self) -> &'static str {
2467                match self {
2468                    Self::Unknown => "STATE_UNKNOWN",
2469                    Self::Enabled => "STATE_ENABLED",
2470                    Self::Disabled => "STATE_DISABLED",
2471                }
2472            }
2473            /// Creates an enum from field names used in the ProtoBuf definition.
2474            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2475                match value {
2476                    "STATE_UNKNOWN" => Some(Self::Unknown),
2477                    "STATE_ENABLED" => Some(Self::Enabled),
2478                    "STATE_DISABLED" => Some(Self::Disabled),
2479                    _ => None,
2480                }
2481            }
2482        }
2483    }
2484    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
2485    /// should keep the symbol map in memory (and reuse it for future tracing
2486    /// sessions) or clear it (saving memory) and re-create it on each tracing
2487    /// session (wasting cpu and wall time).
2488    /// The tradeoff is roughly:
2489    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
2490    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
2491    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
2492    #[derive(
2493        Clone,
2494        Copy,
2495        Debug,
2496        PartialEq,
2497        Eq,
2498        Hash,
2499        PartialOrd,
2500        Ord,
2501        ::prost::Enumeration
2502    )]
2503    #[repr(i32)]
2504    pub enum KsymsMemPolicy {
2505        KsymsUnspecified = 0,
2506        KsymsCleanupOnStop = 1,
2507        KsymsRetain = 2,
2508    }
2509    impl KsymsMemPolicy {
2510        /// String value of the enum field names used in the ProtoBuf definition.
2511        ///
2512        /// The values are not transformed in any way and thus are considered stable
2513        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2514        pub fn as_str_name(&self) -> &'static str {
2515            match self {
2516                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
2517                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
2518                Self::KsymsRetain => "KSYMS_RETAIN",
2519            }
2520        }
2521        /// Creates an enum from field names used in the ProtoBuf definition.
2522        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2523            match value {
2524                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
2525                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
2526                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
2527                _ => None,
2528            }
2529        }
2530    }
2531}
2532#[derive(Clone, PartialEq, ::prost::Message)]
2533pub struct GpuCounterConfig {
2534    /// Desired sampling interval for counters.
2535    #[prost(uint64, optional, tag = "1")]
2536    pub counter_period_ns: ::core::option::Option<u64>,
2537    /// List of counter IDs to be sampled.
2538    #[prost(uint32, repeated, packed = "false", tag = "2")]
2539    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2540    /// List of counter names to be sampled. Requires producer support; check
2541    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2542    /// Glob patterns may be used to match multiple counters by name; check
2543    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2544    #[prost(string, repeated, tag = "6")]
2545    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2546    /// Fix gpu clock rate during trace session.
2547    #[prost(bool, optional, tag = "4")]
2548    pub fix_gpu_clock: ::core::option::Option<bool>,
2549    /// Sample counters by instrumenting command buffers.
2550    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
2551    pub instrumented_sampling_mode: ::core::option::Option<
2552        gpu_counter_config::InstrumentedSamplingMode,
2553    >,
2554}
2555/// Nested message and enum types in `GpuCounterConfig`.
2556pub mod gpu_counter_config {
2557    /// Configuration for sampling counters by instrumenting command buffers.
2558    ///
2559    /// When instrumented_sampling_config is used (instead of the
2560    /// instrumented_sampling bool), the following steps determine whether
2561    /// instrumented counters are enabled for a given GPU activity:
2562    ///
2563    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2564    ///     activity must match at least one filter. If empty, all activities
2565    ///     pass this step.
2566    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2567    ///     activity must fall within a matching TX range. Activities in TX
2568    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2569    ///     take precedence over includes). If both are empty, all activities
2570    ///     pass this step.
2571    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2572    ///     activities within the specified skip/count ranges are instrumented.
2573    ///     If empty, all activities that passed the previous steps are
2574    ///     instrumented.
2575    #[derive(Clone, PartialEq, ::prost::Message)]
2576    pub struct InstrumentedSamplingConfig {
2577        /// GPU activity name filters. An activity matches if it matches any filter.
2578        #[prost(message, repeated, tag = "3")]
2579        pub activity_name_filters: ::prost::alloc::vec::Vec<
2580            instrumented_sampling_config::ActivityNameFilter,
2581        >,
2582        /// Glob patterns to use for including GPU activities in TX ranges. TX
2583        /// ranges are in-process annotations that mark different sections of GPU
2584        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2585        /// activity is included if any range in its nesting hierarchy matches.
2586        /// Only activities that fall within a matching TX range will be
2587        /// instrumented.
2588        #[prost(string, repeated, tag = "6")]
2589        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
2590            ::prost::alloc::string::String,
2591        >,
2592        /// Glob patterns to use for excluding GPU activities from TX ranges.
2593        /// TX ranges can be nested, and an activity is excluded if any range
2594        /// in its nesting hierarchy matches. Excludes take precedence over
2595        /// includes.
2596        #[prost(string, repeated, tag = "7")]
2597        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
2598            ::prost::alloc::string::String,
2599        >,
2600        /// Ranges of GPU activities to instrument. Applied after activity name
2601        /// and TX range filters. If empty, all activities that passed the
2602        /// previous filters are instrumented.
2603        #[prost(message, repeated, tag = "5")]
2604        pub activity_ranges: ::prost::alloc::vec::Vec<
2605            instrumented_sampling_config::ActivityRange,
2606        >,
2607    }
2608    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2609    pub mod instrumented_sampling_config {
2610        /// Filters GPU activities by name. Each filter specifies a glob pattern
2611        /// and the basis for matching (mangled or demangled kernel name).
2612        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2613        pub struct ActivityNameFilter {
2614            /// required. Glob pattern to use for GPU activity name filtering.
2615            #[prost(string, optional, tag = "1")]
2616            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2617            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2618            /// specified.
2619            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
2620            pub name_base: ::core::option::Option<i32>,
2621        }
2622        /// Nested message and enum types in `ActivityNameFilter`.
2623        pub mod activity_name_filter {
2624            #[derive(
2625                Clone,
2626                Copy,
2627                Debug,
2628                PartialEq,
2629                Eq,
2630                Hash,
2631                PartialOrd,
2632                Ord,
2633                ::prost::Enumeration
2634            )]
2635            #[repr(i32)]
2636            pub enum NameBase {
2637                /// Match against the mangled (compiler-encoded) kernel name.
2638                /// Example: for a kernel whose demangled name is
2639                /// "matmul(float*,int,int)", the mangled name might be
2640                /// "_Z6matmulPfii". The glob pattern is matched against this
2641                /// mangled form.
2642                MangledKernelName = 0,
2643                /// Match against the fully demangled kernel name, including
2644                /// parameters, templates, and qualifiers.
2645                /// Example: "matmul(float*,int,int)". The glob pattern is
2646                /// matched against this full demangled form.
2647                DemangledKernelName = 1,
2648                /// Match against only the function name portion of the
2649                /// demangled kernel name, without parameters, templates,
2650                /// return types, or namespaces.
2651                /// Example: "matmul". The glob pattern is matched against
2652                /// just the bare function name.
2653                FunctionName = 2,
2654            }
2655            impl NameBase {
2656                /// String value of the enum field names used in the ProtoBuf definition.
2657                ///
2658                /// The values are not transformed in any way and thus are considered stable
2659                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2660                pub fn as_str_name(&self) -> &'static str {
2661                    match self {
2662                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
2663                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2664                        Self::FunctionName => "FUNCTION_NAME",
2665                    }
2666                }
2667                /// Creates an enum from field names used in the ProtoBuf definition.
2668                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2669                    match value {
2670                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
2671                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
2672                        "FUNCTION_NAME" => Some(Self::FunctionName),
2673                        _ => None,
2674                    }
2675                }
2676            }
2677        }
2678        /// Defines a range of GPU activities to instrument.
2679        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2680        pub struct ActivityRange {
2681            /// Number of GPU activities to skip before starting to instrument
2682            /// command buffers. Defaults to 0 if not specified.
2683            #[prost(uint32, optional, tag = "1")]
2684            pub skip: ::core::option::Option<u32>,
2685            /// Limit for the number of GPU activities to sample counters for by
2686            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2687            /// remaining activities) if not specified.
2688            #[prost(uint32, optional, tag = "2")]
2689            pub count: ::core::option::Option<u32>,
2690        }
2691    }
2692    /// Sample counters by instrumenting command buffers.
2693    #[derive(Clone, PartialEq, ::prost::Oneof)]
2694    pub enum InstrumentedSamplingMode {
2695        #[prost(bool, tag = "3")]
2696        InstrumentedSampling(bool),
2697        #[prost(message, tag = "5")]
2698        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2699    }
2700}
2701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2702pub struct GpuRenderStagesConfig {
2703    /// Enable to separate the color and depth/stencil load and store stages
2704    /// into a separate stages. If disabled, the depth/stencil load and store
2705    /// stages will be combined.  Disabled by default. This option has no effect if
2706    /// Low Overhead mode is enabled.
2707    #[prost(bool, optional, tag = "1")]
2708    pub full_loadstore: ::core::option::Option<bool>,
2709    /// Use the low overhead mode for traces. In this mode render stages are
2710    /// combined into a single workload stage. This provides less granular data but
2711    /// induces minimal GPU overhead. Disabled by default.
2712    #[prost(bool, optional, tag = "2")]
2713    pub low_overhead: ::core::option::Option<bool>,
2714    /// Trace metrics to capture for each render stage
2715    #[prost(string, repeated, tag = "3")]
2716    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2717}
2718#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2719pub struct VulkanMemoryConfig {
2720    /// Tracking driver memory usage events
2721    #[prost(bool, optional, tag = "1")]
2722    pub track_driver_memory_usage: ::core::option::Option<bool>,
2723    /// Tracking device memory usage events
2724    #[prost(bool, optional, tag = "2")]
2725    pub track_device_memory_usage: ::core::option::Option<bool>,
2726}
2727/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2728/// systems.
2729#[derive(Clone, PartialEq, ::prost::Message)]
2730pub struct InodeFileConfig {
2731    /// How long to pause between batches.
2732    #[prost(uint32, optional, tag = "1")]
2733    pub scan_interval_ms: ::core::option::Option<u32>,
2734    /// How long to wait before the first scan in order to accumulate inodes.
2735    #[prost(uint32, optional, tag = "2")]
2736    pub scan_delay_ms: ::core::option::Option<u32>,
2737    /// How many inodes to scan in one batch.
2738    #[prost(uint32, optional, tag = "3")]
2739    pub scan_batch_size: ::core::option::Option<u32>,
2740    /// Do not scan for inodes not found in the static map.
2741    #[prost(bool, optional, tag = "4")]
2742    pub do_not_scan: ::core::option::Option<bool>,
2743    /// If non-empty, only scan inodes corresponding to block devices named in
2744    /// this list.
2745    #[prost(string, repeated, tag = "5")]
2746    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2747    /// When encountering an inode belonging to a block device corresponding
2748    /// to one of the mount points in this map, scan its scan_roots instead.
2749    #[prost(message, repeated, tag = "6")]
2750    pub mount_point_mapping: ::prost::alloc::vec::Vec<
2751        inode_file_config::MountPointMappingEntry,
2752    >,
2753}
2754/// Nested message and enum types in `InodeFileConfig`.
2755pub mod inode_file_config {
2756    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2757    pub struct MountPointMappingEntry {
2758        #[prost(string, optional, tag = "1")]
2759        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2760        #[prost(string, repeated, tag = "2")]
2761        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2762    }
2763}
2764#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2765pub struct ConsoleConfig {
2766    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
2767    pub output: ::core::option::Option<i32>,
2768    #[prost(bool, optional, tag = "2")]
2769    pub enable_colors: ::core::option::Option<bool>,
2770}
2771/// Nested message and enum types in `ConsoleConfig`.
2772pub mod console_config {
2773    #[derive(
2774        Clone,
2775        Copy,
2776        Debug,
2777        PartialEq,
2778        Eq,
2779        Hash,
2780        PartialOrd,
2781        Ord,
2782        ::prost::Enumeration
2783    )]
2784    #[repr(i32)]
2785    pub enum Output {
2786        Unspecified = 0,
2787        Stdout = 1,
2788        Stderr = 2,
2789    }
2790    impl Output {
2791        /// String value of the enum field names used in the ProtoBuf definition.
2792        ///
2793        /// The values are not transformed in any way and thus are considered stable
2794        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2795        pub fn as_str_name(&self) -> &'static str {
2796            match self {
2797                Self::Unspecified => "OUTPUT_UNSPECIFIED",
2798                Self::Stdout => "OUTPUT_STDOUT",
2799                Self::Stderr => "OUTPUT_STDERR",
2800            }
2801        }
2802        /// Creates an enum from field names used in the ProtoBuf definition.
2803        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2804            match value {
2805                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
2806                "OUTPUT_STDOUT" => Some(Self::Stdout),
2807                "OUTPUT_STDERR" => Some(Self::Stderr),
2808                _ => None,
2809            }
2810        }
2811    }
2812}
2813/// Configuration for trace packet interception. Used for diverting trace data to
2814/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2815/// Perfetto SDK.
2816#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2817pub struct InterceptorConfig {
2818    /// Matches the name given to RegisterInterceptor().
2819    #[prost(string, optional, tag = "1")]
2820    pub name: ::core::option::Option<::prost::alloc::string::String>,
2821    #[prost(message, optional, tag = "100")]
2822    pub console_config: ::core::option::Option<ConsoleConfig>,
2823}
2824/// Configuration for the "linux.systemd_journald" data source.
2825/// Next field id: 4
2826#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2827pub struct SystemdJournaldConfig {
2828    /// Minimum syslog priority level to capture (inclusive).
2829    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
2830    /// Default (0 / unset): capture all priorities (equivalent to 7).
2831    #[prost(uint32, optional, tag = "1")]
2832    pub min_prio: ::core::option::Option<u32>,
2833    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
2834    /// matches one of these strings.
2835    #[prost(string, repeated, tag = "2")]
2836    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2837    /// If non-empty, only capture journal entries from these systemd unit names.
2838    #[prost(string, repeated, tag = "3")]
2839    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2840}
2841#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2842pub struct AndroidPowerConfig {
2843    #[prost(uint32, optional, tag = "1")]
2844    pub battery_poll_ms: ::core::option::Option<u32>,
2845    #[prost(
2846        enumeration = "android_power_config::BatteryCounters",
2847        repeated,
2848        packed = "false",
2849        tag = "2"
2850    )]
2851    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2852    /// Where available enables per-power-rail measurements.
2853    #[prost(bool, optional, tag = "3")]
2854    pub collect_power_rails: ::core::option::Option<bool>,
2855    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2856    /// Available from Android S.
2857    #[prost(bool, optional, tag = "4")]
2858    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2859    /// Provides a breakdown of time in state for various subsystems.
2860    /// Available from Android U.
2861    #[prost(bool, optional, tag = "5")]
2862    pub collect_entity_state_residency: ::core::option::Option<bool>,
2863}
2864/// Nested message and enum types in `AndroidPowerConfig`.
2865pub mod android_power_config {
2866    #[derive(
2867        Clone,
2868        Copy,
2869        Debug,
2870        PartialEq,
2871        Eq,
2872        Hash,
2873        PartialOrd,
2874        Ord,
2875        ::prost::Enumeration
2876    )]
2877    #[repr(i32)]
2878    pub enum BatteryCounters {
2879        BatteryCounterUnspecified = 0,
2880        /// Coulomb counter.
2881        BatteryCounterCharge = 1,
2882        /// Charge (%).
2883        BatteryCounterCapacityPercent = 2,
2884        /// Instantaneous current.
2885        BatteryCounterCurrent = 3,
2886        /// Avg current.
2887        BatteryCounterCurrentAvg = 4,
2888        /// Instantaneous voltage.
2889        BatteryCounterVoltage = 5,
2890    }
2891    impl BatteryCounters {
2892        /// String value of the enum field names used in the ProtoBuf definition.
2893        ///
2894        /// The values are not transformed in any way and thus are considered stable
2895        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2896        pub fn as_str_name(&self) -> &'static str {
2897            match self {
2898                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2899                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2900                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2901                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2902                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2903                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2904            }
2905        }
2906        /// Creates an enum from field names used in the ProtoBuf definition.
2907        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2908            match value {
2909                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
2910                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
2911                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
2912                    Some(Self::BatteryCounterCapacityPercent)
2913                }
2914                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
2915                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
2916                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
2917                _ => None,
2918            }
2919        }
2920    }
2921}
2922/// Configuration that allows to boost the priority of the 'traced' or
2923/// 'traced_probs' processes, by changing the scheduler configuration.
2924/// Only supported on Linux and Android the boosted process must have
2925/// 'CAP_SYS_NICE' capability.
2926#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2927pub struct PriorityBoostConfig {
2928    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
2929    pub policy: ::core::option::Option<i32>,
2930    #[prost(uint32, optional, tag = "2")]
2931    pub priority: ::core::option::Option<u32>,
2932}
2933/// Nested message and enum types in `PriorityBoostConfig`.
2934pub mod priority_boost_config {
2935    #[derive(
2936        Clone,
2937        Copy,
2938        Debug,
2939        PartialEq,
2940        Eq,
2941        Hash,
2942        PartialOrd,
2943        Ord,
2944        ::prost::Enumeration
2945    )]
2946    #[repr(i32)]
2947    pub enum BoostPolicy {
2948        PolicyUnspecified = 0,
2949        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
2950        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2951        /// than default 0, 20 is the highest priority.
2952        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2953        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2954        PolicySchedOther = 1,
2955        /// The Real-time policy, Priority range: \[1; 99\]
2956        PolicySchedFifo = 2,
2957    }
2958    impl BoostPolicy {
2959        /// String value of the enum field names used in the ProtoBuf definition.
2960        ///
2961        /// The values are not transformed in any way and thus are considered stable
2962        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2963        pub fn as_str_name(&self) -> &'static str {
2964            match self {
2965                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
2966                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
2967                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
2968            }
2969        }
2970        /// Creates an enum from field names used in the ProtoBuf definition.
2971        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2972            match value {
2973                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
2974                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
2975                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
2976                _ => None,
2977            }
2978        }
2979    }
2980}
2981/// Config for polling process-related information from /proc/pid/status and
2982/// related files on Linux.
2983///
2984/// Data source name: "linux.process_stats".
2985#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2986pub struct ProcessStatsConfig {
2987    #[prost(
2988        enumeration = "process_stats_config::Quirks",
2989        repeated,
2990        packed = "false",
2991        tag = "1"
2992    )]
2993    pub quirks: ::prost::alloc::vec::Vec<i32>,
2994    /// If enabled all processes will be scanned and dumped when the trace starts.
2995    #[prost(bool, optional, tag = "2")]
2996    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2997    /// If enabled thread names are also recoded (this is redundant if sched_switch
2998    /// is enabled).
2999    #[prost(bool, optional, tag = "3")]
3000    pub record_thread_names: ::core::option::Option<bool>,
3001    /// If > 0 samples counters (see process_stats.proto) from
3002    /// /proc/pid/status and oom_score_adj every X ms.
3003    /// This is required to be > 100ms to avoid excessive CPU usage.
3004    #[prost(uint32, optional, tag = "4")]
3005    pub proc_stats_poll_ms: ::core::option::Option<u32>,
3006    /// Explicit caching period during which the polling won't re-emit identical
3007    /// counter values. This is required to be either = 0 or a multiple of
3008    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
3009    /// rounded down to the nearest multiple.
3010    #[prost(uint32, optional, tag = "6")]
3011    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
3012    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
3013    /// /proc/pid/smaps_rollup.
3014    ///
3015    /// Android: does NOT work with the system daemons by default, as it requires
3016    /// running the recording process (traced_probes or tracebox) as root. It is
3017    /// possible to avoid the root requirement, but the exact steps depend on the
3018    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
3019    /// check, and might be further covered by the procfs "hidepid" mount option.
3020    #[prost(bool, optional, tag = "10")]
3021    pub scan_smaps_rollup: ::core::option::Option<bool>,
3022    /// If true: process descriptions will include process age (starttime in
3023    /// /proc/pid/stat).
3024    /// Introduced in: perfetto v44.
3025    #[prost(bool, optional, tag = "11")]
3026    pub record_process_age: ::core::option::Option<bool>,
3027    /// If true and |proc_stats_poll_ms| is set, process stats will include time
3028    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
3029    /// Introduced in: perfetto v44.
3030    #[prost(bool, optional, tag = "12")]
3031    pub record_process_runtime: ::core::option::Option<bool>,
3032    /// If true obtain per-process dmabuf resident set size from
3033    /// /proc/pid/dmabuf_rss.
3034    /// This feature is not in upstream linux, and is available only on some
3035    /// Android kernels.
3036    #[prost(bool, optional, tag = "13")]
3037    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
3038    /// WARNING: unmaintained and deprecated. If true this will resolve file
3039    /// descriptors for each process so these can be mapped to their actual device
3040    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
3041    /// or new fds opened after initially scanning a process will not be
3042    /// recognized.
3043    #[prost(bool, optional, tag = "9")]
3044    pub resolve_process_fds: ::core::option::Option<bool>,
3045    /// If true, do *not* write a ProcessTree::Thread message for the main thread
3046    /// of a process. This was the default behaviour before perfetto v58.
3047    ///
3048    /// Added in perfetto v58.
3049    #[prost(bool, optional, tag = "14")]
3050    pub skip_main_thread_message: ::core::option::Option<bool>,
3051}
3052/// Nested message and enum types in `ProcessStatsConfig`.
3053pub mod process_stats_config {
3054    #[derive(
3055        Clone,
3056        Copy,
3057        Debug,
3058        PartialEq,
3059        Eq,
3060        Hash,
3061        PartialOrd,
3062        Ord,
3063        ::prost::Enumeration
3064    )]
3065    #[repr(i32)]
3066    pub enum Quirks {
3067        Unspecified = 0,
3068        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
3069        /// startup is now disabled by default and can be re-enabled using the
3070        /// |scan_all_processes_on_start| arg.
3071        #[deprecated]
3072        DisableInitialDump = 1,
3073        /// If set, disables the special interaction with "linux.ftrace" data source,
3074        /// where the process stats rescrapes any thread id seen in the ftrace
3075        /// stream.
3076        DisableOnDemand = 2,
3077    }
3078    impl Quirks {
3079        /// String value of the enum field names used in the ProtoBuf definition.
3080        ///
3081        /// The values are not transformed in any way and thus are considered stable
3082        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3083        pub fn as_str_name(&self) -> &'static str {
3084            match self {
3085                Self::Unspecified => "QUIRKS_UNSPECIFIED",
3086                #[allow(deprecated)]
3087                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
3088                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
3089            }
3090        }
3091        /// Creates an enum from field names used in the ProtoBuf definition.
3092        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3093            match value {
3094                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
3095                "DISABLE_INITIAL_DUMP" => {
3096                    Some(#[allow(deprecated)] Self::DisableInitialDump)
3097                }
3098                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
3099                _ => None,
3100            }
3101        }
3102    }
3103}
3104/// Configuration for go/heapprofd.
3105/// Next id: 28
3106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3107pub struct HeapprofdConfig {
3108    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
3109    ///
3110    /// These are:
3111    /// * All heaps if heap_sampling_intervals is empty.
3112    /// * Those profiled due to all_heaps and not named in heaps if
3113    ///    heap_sampling_intervals is not empty.
3114    /// * The implicit libc.malloc heap if heaps is empty.
3115    ///
3116    /// Set to 1 for perfect accuracy.
3117    /// Otherwise, sample every sample_interval_bytes on average.
3118    ///
3119    /// See
3120    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
3121    /// for more details.
3122    ///
3123    /// BUGS
3124    /// Before Android 12, setting this to 0 would crash the target process.
3125    ///
3126    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
3127    /// this field or with heap_sampling_intervals), otherwise the producer will
3128    /// not start.
3129    #[prost(uint64, optional, tag = "1")]
3130    pub sampling_interval_bytes: ::core::option::Option<u64>,
3131    /// If less than the given numbers of bytes are left free in the shared
3132    /// memory buffer, increase sampling interval by a factor of two.
3133    /// Adaptive sampling is disabled when set to 0.
3134    #[prost(uint64, optional, tag = "24")]
3135    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
3136    /// Stop doubling the sampling_interval once the sampling interval has reached
3137    /// this value.
3138    #[prost(uint64, optional, tag = "25")]
3139    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
3140    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
3141    /// as the following section (A), and on newer versions are both (A) and (B):
3142    ///
3143    /// (A) E.g. surfaceflinger, com.android.phone
3144    /// This input is normalized in the following way: if it contains slashes,
3145    /// everything up to the last slash is discarded. If it contains "@",
3146    /// everything after the first @ is discared.
3147    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
3148    /// This transformation is also applied to the processes' command lines when
3149    /// matching.
3150    ///
3151    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
3152    /// case it is matched against running processes' command lines using glob
3153    /// semantics. If the pattern starts with '/' it is matched against the full
3154    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
3155    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
3156    /// normalized as described above.
3157    /// Wildcard patterns are supported only for profiling already-running
3158    /// processes. A config must set no_startup=true if using wildcards, or it will
3159    /// be rejected.
3160    #[prost(string, repeated, tag = "2")]
3161    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3162    /// For watermark based triggering or local debugging.
3163    #[prost(uint64, repeated, packed = "false", tag = "4")]
3164    pub pid: ::prost::alloc::vec::Vec<u64>,
3165    /// Only profile target if it was installed by one of the packages given.
3166    /// Special values are:
3167    /// * @system: installed on the system partition
3168    /// * @product: installed on the product partition
3169    /// * @null: sideloaded
3170    /// Supported on Android 12+.
3171    #[prost(string, repeated, tag = "26")]
3172    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3173    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
3174    /// "malloc".
3175    ///
3176    /// Introduced in Android 12.
3177    #[prost(string, repeated, tag = "20")]
3178    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3179    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
3180    /// combination with all_heaps;
3181    ///
3182    /// Introduced in Android 12.
3183    #[prost(string, repeated, tag = "27")]
3184    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3185    #[prost(bool, optional, tag = "23")]
3186    pub stream_allocations: ::core::option::Option<bool>,
3187    /// If given, needs to be the same length as heaps and gives the sampling
3188    /// interval for the respective entry in heaps.
3189    ///
3190    /// Otherwise, sampling_interval_bytes is used.
3191    ///
3192    /// It is recommended to set sampling_interval_bytes to a reasonable default
3193    /// value when using this, as a value of 0 for sampling_interval_bytes will
3194    /// crash the target process before Android 12.
3195    ///
3196    /// Introduced in Android 12.
3197    ///
3198    /// All values must be non-zero or the producer will not start.
3199    #[prost(uint64, repeated, packed = "false", tag = "22")]
3200    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
3201    /// Sample all heaps registered by target process. Introduced in Android 12.
3202    #[prost(bool, optional, tag = "21")]
3203    pub all_heaps: ::core::option::Option<bool>,
3204    /// Profile all processes eligible for profiling on the system.
3205    /// See
3206    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
3207    /// for which processes are eligible.
3208    ///
3209    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
3210    /// will crash when trying to launch a new process as it will have an
3211    /// unexpected open socket to heapprofd.
3212    ///
3213    /// heapprofd will likely be overloaded by the amount of data for low
3214    /// sampling intervals.
3215    #[prost(bool, optional, tag = "5")]
3216    pub all: ::core::option::Option<bool>,
3217    /// Do not profile processes whose anon RSS + swap < given value.
3218    /// Introduced in Android 11.
3219    #[prost(uint32, optional, tag = "15")]
3220    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3221    /// Stop profile if heapprofd memory usage goes beyond the given value.
3222    /// Introduced in Android 11.
3223    #[prost(uint32, optional, tag = "16")]
3224    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
3225    /// Stop profile if heapprofd CPU time since start of this data-source
3226    /// goes beyond given value.
3227    /// Introduced in Android 11.
3228    #[prost(uint64, optional, tag = "17")]
3229    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
3230    /// Do not emit function names for mappings starting with this prefix.
3231    /// E.g. /system to not emit symbols for any system libraries.
3232    #[prost(string, repeated, tag = "7")]
3233    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3234    /// Dump at a predefined interval.
3235    #[prost(message, optional, tag = "6")]
3236    pub continuous_dump_config: ::core::option::Option<
3237        heapprofd_config::ContinuousDumpConfig,
3238    >,
3239    /// Size of the shared memory buffer between the profiled processes and
3240    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
3241    /// MiB.
3242    ///
3243    /// Needs to be:
3244    /// * at least 8192,
3245    /// * a power of two,
3246    /// * a multiple of 4096.
3247    #[prost(uint64, optional, tag = "8")]
3248    pub shmem_size_bytes: ::core::option::Option<u64>,
3249    /// When the shmem buffer is full, block the client instead of ending the
3250    /// trace. Use with caution as this will significantly slow down the target
3251    /// process.
3252    #[prost(bool, optional, tag = "9")]
3253    pub block_client: ::core::option::Option<bool>,
3254    /// If set, stop the trace session after blocking the client for this
3255    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
3256    /// Introduced in Android 11.
3257    #[prost(uint32, optional, tag = "14")]
3258    pub block_client_timeout_us: ::core::option::Option<u32>,
3259    /// Do not profile processes from startup, only match already running
3260    /// processes.
3261    ///
3262    /// Can not be set at the same time as no_running.
3263    /// Introduced in Android 11.
3264    #[prost(bool, optional, tag = "10")]
3265    pub no_startup: ::core::option::Option<bool>,
3266    /// Do not profile running processes. Only match processes on startup.
3267    ///
3268    /// Can not be set at the same time as no_startup.
3269    /// Introduced in Android 11.
3270    #[prost(bool, optional, tag = "11")]
3271    pub no_running: ::core::option::Option<bool>,
3272    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
3273    /// at the point in time when the sampled heap usage of the process was at its
3274    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
3275    /// self_allocated and self_freed to not be set.
3276    /// Introduced in Android 11.
3277    #[prost(bool, optional, tag = "13")]
3278    pub dump_at_max: ::core::option::Option<bool>,
3279    /// Escape hatch if the session is being torn down because of a forked child
3280    /// that shares memory space, but is not correctly identified as a vforked
3281    /// child.
3282    /// Introduced in Android 11.
3283    #[prost(bool, optional, tag = "18")]
3284    pub disable_fork_teardown: ::core::option::Option<bool>,
3285    /// We try to automatically detect when a target applicatation vforks but then
3286    /// does a memory allocation (or free). This auto-detection can be disabled
3287    /// with this.
3288    /// Introduced in Android 11.
3289    #[prost(bool, optional, tag = "19")]
3290    pub disable_vfork_detection: ::core::option::Option<bool>,
3291}
3292/// Nested message and enum types in `HeapprofdConfig`.
3293pub mod heapprofd_config {
3294    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3295    pub struct ContinuousDumpConfig {
3296        /// ms to wait before first dump.
3297        #[prost(uint32, optional, tag = "5")]
3298        pub dump_phase_ms: ::core::option::Option<u32>,
3299        /// ms to wait between following dumps.
3300        #[prost(uint32, optional, tag = "6")]
3301        pub dump_interval_ms: ::core::option::Option<u32>,
3302    }
3303}
3304/// Config for the "linux.smaps" data source, describes one-shot or periodic
3305/// /proc/pid/smaps collection.
3306///
3307/// A valid config must specify at least one |target_cmdline|. Example:
3308///
3309/// data_sources {
3310///    config {
3311///      name: "linux.smaps"
3312///      process_smaps_config {
3313///        scope {
3314///          target_cmdline: "top"
3315///          target_cmdline: "tmux"
3316///        }
3317///      }
3318///    }
3319/// }
3320#[derive(Clone, PartialEq, ::prost::Message)]
3321pub struct ProcessSmapsConfig {
3322    /// Which fields to record per process.
3323    /// If unset, defaults to {size, rss, anon, swap}, aggregated by path name.
3324    #[prost(message, optional, tag = "1")]
3325    pub smaps_config: ::core::option::Option<SmapsConfig>,
3326    #[prost(message, optional, tag = "2")]
3327    pub scope: ::core::option::Option<process_smaps_config::Scope>,
3328    /// How often to recapture the smaps, including re-evaluating which processes
3329    /// match the |scope|. May be overridden by the implementation (at the time of
3330    /// writing, \[1s, 24hr\] range).
3331    /// If zero or unset, each process is captured only once at start.
3332    #[prost(uint32, optional, tag = "3")]
3333    pub read_period_ms: ::core::option::Option<u32>,
3334}
3335/// Nested message and enum types in `ProcessSmapsConfig`.
3336pub mod process_smaps_config {
3337    /// Which processes to record. At least one field must be set.
3338    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3339    pub struct Scope {
3340        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3341        /// comm string).
3342        ///
3343        /// This field can specify a single wildcard (*), and the profiler will
3344        /// attempt to match it in two possible ways:
3345        /// * if the pattern starts with a '/', then it is matched against the first
3346        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3347        ///    "/bin/echo".
3348        /// * otherwise the pattern is matched against the part of argv0
3349        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3350        ///    For example "echo" would match "/bin/echo".
3351        ///
3352        /// Implementation note: at most 511 characters of cmdline are considered.
3353        #[prost(string, repeated, tag = "1")]
3354        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3355    }
3356}
3357/// Describes what to record from /proc/pid/smaps.
3358#[derive(Clone, PartialEq, ::prost::Message)]
3359pub struct SmapsConfig {
3360    /// Set of fields to collect.
3361    /// If unset, defaults to: size, rss, anonymous, swap.
3362    #[prost(
3363        enumeration = "smaps_config::VmaField",
3364        repeated,
3365        packed = "false",
3366        tag = "1"
3367    )]
3368    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
3369    /// If false, mappings are aggregated by their path name.
3370    /// If true, each mapping is serialised separately.
3371    #[prost(bool, optional, tag = "2")]
3372    pub unaggregated: ::core::option::Option<bool>,
3373    /// Optional ordered list of redaction rules for the name of the mapping.
3374    /// Note that all mappings will still be emitted, these rules only affect the
3375    /// emitted name.
3376    /// If unset, all names are written as is.
3377    /// If set, the first matching rule decides on the action.
3378    /// If no rules match, the name is written as is.
3379    #[prost(message, repeated, tag = "3")]
3380    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
3381}
3382/// Nested message and enum types in `SmapsConfig`.
3383pub mod smaps_config {
3384    #[derive(
3385        Clone,
3386        Copy,
3387        Debug,
3388        PartialEq,
3389        Eq,
3390        Hash,
3391        PartialOrd,
3392        Ord,
3393        ::prost::Enumeration
3394    )]
3395    #[repr(i32)]
3396    pub enum VmaField {
3397        Unknown = 0,
3398        Size = 1,
3399        Rss = 2,
3400        Anonymous = 3,
3401        Swap = 4,
3402        SharedClean = 5,
3403        SharedDirty = 6,
3404        PrivateClean = 7,
3405        PrivateDirty = 8,
3406        Locked = 9,
3407        Pss = 10,
3408        PssDirty = 11,
3409        SwapPss = 12,
3410    }
3411    impl VmaField {
3412        /// String value of the enum field names used in the ProtoBuf definition.
3413        ///
3414        /// The values are not transformed in any way and thus are considered stable
3415        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3416        pub fn as_str_name(&self) -> &'static str {
3417            match self {
3418                Self::Unknown => "VMA_FIELD_UNKNOWN",
3419                Self::Size => "VMA_FIELD_SIZE",
3420                Self::Rss => "VMA_FIELD_RSS",
3421                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
3422                Self::Swap => "VMA_FIELD_SWAP",
3423                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
3424                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
3425                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
3426                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
3427                Self::Locked => "VMA_FIELD_LOCKED",
3428                Self::Pss => "VMA_FIELD_PSS",
3429                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
3430                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
3431            }
3432        }
3433        /// Creates an enum from field names used in the ProtoBuf definition.
3434        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3435            match value {
3436                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
3437                "VMA_FIELD_SIZE" => Some(Self::Size),
3438                "VMA_FIELD_RSS" => Some(Self::Rss),
3439                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
3440                "VMA_FIELD_SWAP" => Some(Self::Swap),
3441                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
3442                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
3443                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
3444                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
3445                "VMA_FIELD_LOCKED" => Some(Self::Locked),
3446                "VMA_FIELD_PSS" => Some(Self::Pss),
3447                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
3448                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
3449                _ => None,
3450            }
3451        }
3452    }
3453}
3454#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3455pub struct RedactionRule {
3456    /// The pattern to match against.
3457    #[prost(string, optional, tag = "1")]
3458    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
3459    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
3460    pub match_mode: ::core::option::Option<i32>,
3461    /// If the pattern matches, keep the entire name. In other words, do not
3462    /// redact. This option exists since the rules are evaluated in order, so a
3463    /// more specific allow rule with keep_full can match before a more general
3464    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
3465    /// |keep_path_elements|.
3466    #[prost(bool, optional, tag = "3")]
3467    pub keep_full: ::core::option::Option<bool>,
3468    /// If the pattern matches, replace the name with this string (defaulting to
3469    /// <pf_redacted> if unset). The final emitted name might be further augmented
3470    /// by the options below keeping parts of the original name.
3471    #[prost(string, optional, tag = "4")]
3472    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
3473    /// If the pattern matches, keep the file extension, if any.
3474    /// Can be combined with |keep_path_elements|.
3475    #[prost(bool, optional, tag = "5")]
3476    pub keep_file_extension: ::core::option::Option<bool>,
3477    /// If the pattern matches, keep the first N path elements (as separated by
3478    /// '/'). If the name is not a path, this option does nothing. Can be combined
3479    /// with |keep_file_extension|.
3480    #[prost(uint32, optional, tag = "6")]
3481    pub keep_path_elements: ::core::option::Option<u32>,
3482}
3483/// Nested message and enum types in `RedactionRule`.
3484pub mod redaction_rule {
3485    /// How to match |pattern| against the name of the mapping.
3486    /// Note for future extensions: unrecognised enums are treated as always
3487    /// matching.
3488    #[derive(
3489        Clone,
3490        Copy,
3491        Debug,
3492        PartialEq,
3493        Eq,
3494        Hash,
3495        PartialOrd,
3496        Ord,
3497        ::prost::Enumeration
3498    )]
3499    #[repr(i32)]
3500    pub enum MatchMode {
3501        Unknown = 0,
3502        /// The pattern matches if it is a prefix of the mapping name.
3503        Prefix = 1,
3504        /// The pattern is matched against the mapping name as a pathname glob
3505        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
3506        /// The key distinction is that path separators in the name are *not* matched
3507        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
3508        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
3509        /// Note: any "(deleted)" suffix is excluded before matching.
3510        GlobPath = 2,
3511        /// The pattern is matched against the mapping name without special-casing
3512        /// path separators. So a pattern of the form "/usr/*/llvm" would match
3513        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
3514        /// Note: any "(deleted)" suffix is excluded before matching.
3515        GlobString = 3,
3516    }
3517    impl MatchMode {
3518        /// String value of the enum field names used in the ProtoBuf definition.
3519        ///
3520        /// The values are not transformed in any way and thus are considered stable
3521        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3522        pub fn as_str_name(&self) -> &'static str {
3523            match self {
3524                Self::Unknown => "MATCH_MODE_UNKNOWN",
3525                Self::Prefix => "MATCH_MODE_PREFIX",
3526                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
3527                Self::GlobString => "MATCH_MODE_GLOB_STRING",
3528            }
3529        }
3530        /// Creates an enum from field names used in the ProtoBuf definition.
3531        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3532            match value {
3533                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
3534                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
3535                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
3536                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
3537                _ => None,
3538            }
3539        }
3540    }
3541}
3542/// Configuration for managed app heap graph snapshots.
3543#[derive(Clone, PartialEq, ::prost::Message)]
3544pub struct JavaHprofConfig {
3545    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3546    /// comm string). The semantics of this field were changed since its original
3547    /// introduction.
3548    ///
3549    /// On Android T+ (13+), this field can specify a single wildcard (*), and
3550    /// the profiler will attempt to match it in two possible ways:
3551    /// * if the pattern starts with a '/', then it is matched against the first
3552    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3553    ///    "/bin/echo".
3554    /// * otherwise the pattern is matched against the part of argv0
3555    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3556    ///    For example "echo" would match "/bin/echo".
3557    ///
3558    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3559    /// normalized prior to an exact string comparison. Normalization is as
3560    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3561    /// the string contains forward slashes, trim everything up to and including
3562    /// the last one.
3563    ///
3564    /// Implementation note: in either case, at most 511 characters of cmdline
3565    /// are considered.
3566    #[prost(string, repeated, tag = "1")]
3567    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3568    /// For watermark based triggering or local debugging.
3569    #[prost(uint64, repeated, packed = "false", tag = "2")]
3570    pub pid: ::prost::alloc::vec::Vec<u64>,
3571    /// Only profile target if it was installed by one of the packages given.
3572    /// Special values are:
3573    /// * @system: installed on the system partition
3574    /// * @product: installed on the product partition
3575    /// * @null: sideloaded
3576    /// Supported on Android 12+.
3577    #[prost(string, repeated, tag = "7")]
3578    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3579    /// Dump at a predefined interval.
3580    #[prost(message, optional, tag = "3")]
3581    pub continuous_dump_config: ::core::option::Option<
3582        java_hprof_config::ContinuousDumpConfig,
3583    >,
3584    /// Do not profile processes whose anon RSS + swap < given value.
3585    #[prost(uint32, optional, tag = "4")]
3586    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3587    /// Do not profile processes whose Java heap size < given value.
3588    #[prost(uint32, optional, tag = "9")]
3589    pub min_java_heap_size_kb: ::core::option::Option<u32>,
3590    /// Include the process' /proc/self/smaps.
3591    /// This only shows maps that:
3592    /// * start with /system
3593    /// * start with /vendor
3594    /// * start with /data/app
3595    /// * contain "extracted in memory from Y", where Y matches any of the above
3596    ///
3597    /// Superseded by |smaps_config| in perfetto v58+.
3598    #[prost(bool, optional, tag = "5")]
3599    pub dump_smaps: ::core::option::Option<bool>,
3600    /// If set, include /proc/self/smaps memory mappings.
3601    ///
3602    /// Added in perfetto v58.
3603    #[prost(message, optional, tag = "8")]
3604    pub smaps_config: ::core::option::Option<SmapsConfig>,
3605    /// Exclude objects of the following types from the profile. This can be
3606    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
3607    #[prost(string, repeated, tag = "6")]
3608    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3609    /// Dump the callsite of the thread triggering the OutOfMemoryError.
3610    /// Only applicable to OutOfMemoryError heap dumps
3611    #[prost(bool, optional, tag = "10")]
3612    pub dump_oome_callstack: ::core::option::Option<bool>,
3613}
3614/// Nested message and enum types in `JavaHprofConfig`.
3615pub mod java_hprof_config {
3616    /// If dump_interval_ms != 0, the following configuration is used.
3617    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3618    pub struct ContinuousDumpConfig {
3619        /// ms to wait before first continuous dump.
3620        /// A dump is always created at the beginning of the trace.
3621        #[prost(uint32, optional, tag = "1")]
3622        pub dump_phase_ms: ::core::option::Option<u32>,
3623        /// ms to wait between following dumps.
3624        #[prost(uint32, optional, tag = "2")]
3625        pub dump_interval_ms: ::core::option::Option<u32>,
3626        /// If true, scans all the processes to find `process_cmdline` and filter by
3627        /// `min_anonymous_memory_kb` only at data source start. Default on Android
3628        /// S-.
3629        ///
3630        /// If false, rescans all the processes to find on every dump. Default on
3631        /// Android T+.
3632        #[prost(bool, optional, tag = "3")]
3633        pub scan_pids_only_on_start: ::core::option::Option<bool>,
3634    }
3635}
3636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3637pub struct PerfEvents {}
3638/// Nested message and enum types in `PerfEvents`.
3639pub mod perf_events {
3640    /// The primary event to count. If recording multiple events, this
3641    /// counter is the "group leader".
3642    /// Commented from the perspective of its use in |PerfEventConfig|.
3643    /// Next id: 13
3644    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3645    pub struct Timebase {
3646        /// Optional modifiers for the event. Modelled after the perftool's
3647        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
3648        /// Currently supported: count scoping such as :u, :k, :uk, ...
3649        /// Modifiers can differ between the timebase and followers.
3650        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
3651        pub modifiers: ::prost::alloc::vec::Vec<i32>,
3652        /// If set, samples will be timestamped with the given clock.
3653        /// If unset, the clock is chosen by the implementation.
3654        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
3655        /// used for hardware events (due to interrupt safety), for which the
3656        /// recommendation is to use one of the monotonic clocks.
3657        #[prost(enumeration = "PerfClock", optional, tag = "11")]
3658        pub timestamp_clock: ::core::option::Option<i32>,
3659        /// Optional arbitrary name for the event, to identify it in the parsed
3660        /// trace. Does *not* affect the profiling itself. If unset, the trace
3661        /// parser will choose a suitable name.
3662        #[prost(string, optional, tag = "10")]
3663        pub name: ::core::option::Option<::prost::alloc::string::String>,
3664        /// How often to snapshot the counter, along with any follower events and
3665        /// any additional sampled data such as callstacks.
3666        ///
3667        /// This choice also controls how the readings are taken:
3668        /// * With |frequency| or |period|, samples are taken by the kernel
3669        ///    into a ring buffer. Analogous to `perf record`.
3670        /// * With |poll_period_ms|, the userspace periodically snapshots
3671        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3672        /// Prefer the sampling options unless you're recording PMUs whose
3673        /// perf drivers only support the reading mode.
3674        ///
3675        /// If unset, an implementation-defined sampling default is used.
3676        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
3677        pub interval: ::core::option::Option<timebase::Interval>,
3678        /// Counting event to use as the timebase.
3679        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3680        /// which is what you usually want.
3681        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
3682        pub event: ::core::option::Option<timebase::Event>,
3683    }
3684    /// Nested message and enum types in `Timebase`.
3685    pub mod timebase {
3686        /// How often to snapshot the counter, along with any follower events and
3687        /// any additional sampled data such as callstacks.
3688        ///
3689        /// This choice also controls how the readings are taken:
3690        /// * With |frequency| or |period|, samples are taken by the kernel
3691        ///    into a ring buffer. Analogous to `perf record`.
3692        /// * With |poll_period_ms|, the userspace periodically snapshots
3693        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3694        /// Prefer the sampling options unless you're recording PMUs whose
3695        /// perf drivers only support the reading mode.
3696        ///
3697        /// If unset, an implementation-defined sampling default is used.
3698        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
3699        pub enum Interval {
3700            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
3701            /// same as 1/period.
3702            /// Details: the actual sampling will still be based on a period, but the
3703            /// kernel will dynamically adjust it based on the observed event rate, to
3704            /// approximate this frequency. Works best with steady-rate events like
3705            /// timers.
3706            /// Not guaranteed to be honored as the kernel can throttle the sampling
3707            /// rate if it's too high.
3708            #[prost(uint64, tag = "2")]
3709            Frequency(u64),
3710            /// Per-cpu sampling will occur every |period| counts of |event|.
3711            /// Prefer |frequency| by default, as it's easier to oversample with a
3712            /// fixed period.
3713            /// Not guaranteed to be honored as the kernel can throttle the sampling
3714            /// rate if it's too high.
3715            #[prost(uint64, tag = "1")]
3716            Period(u64),
3717            /// Per-cpu values are read by the userspace every interval. If using this
3718            /// mode, only follower events are supported. Options such as
3719            /// |PerfEventConfig.CallstackSampling| are incompatible.
3720            /// The period can't be guaranteed to be exact since the readings are taken
3721            /// by userspace.
3722            #[prost(uint32, tag = "6")]
3723            PollPeriodMs(u32),
3724        }
3725        /// Counting event to use as the timebase.
3726        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3727        /// which is what you usually want.
3728        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3729        pub enum Event {
3730            #[prost(enumeration = "super::Counter", tag = "4")]
3731            Counter(i32),
3732            #[prost(message, tag = "3")]
3733            Tracepoint(super::Tracepoint),
3734            #[prost(message, tag = "5")]
3735            RawEvent(super::RawEvent),
3736        }
3737    }
3738    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3739    pub struct Tracepoint {
3740        /// Group and name for the tracepoint, acceptable forms:
3741        /// * "sched/sched_switch"
3742        /// * "sched:sched_switch"
3743        #[prost(string, optional, tag = "1")]
3744        pub name: ::core::option::Option<::prost::alloc::string::String>,
3745        /// Optional field-level filter for the tracepoint. Only events matching this
3746        /// filter will be counted (and therefore contribute to the sampling period).
3747        /// Example: "prev_pid >= 42 && next_pid == 0".
3748        /// For full syntax, see kernel documentation on "Event filtering":
3749        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
3750        #[prost(string, optional, tag = "2")]
3751        pub filter: ::core::option::Option<::prost::alloc::string::String>,
3752    }
3753    /// Syscall-level description of the event, propagated to the perf_event_attr
3754    /// struct. Primarily for local use-cases, since the event availability and
3755    /// encoding is hardware-specific.
3756    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3757    pub struct RawEvent {
3758        /// Either |type| or |pmu_name| can be set.
3759        #[prost(uint32, optional, tag = "1")]
3760        pub r#type: ::core::option::Option<u32>,
3761        #[prost(uint64, optional, tag = "2")]
3762        pub config: ::core::option::Option<u64>,
3763        #[prost(uint64, optional, tag = "3")]
3764        pub config1: ::core::option::Option<u64>,
3765        #[prost(uint64, optional, tag = "4")]
3766        pub config2: ::core::option::Option<u64>,
3767        /// The name of a dynamic PMU under /sys/bus/event_source/devices
3768        /// (e.g. "armv8_pmuv3").
3769        /// If set, leave |type| unset.
3770        /// Android: the relevant sysfs paths are not allowlisted by default, so
3771        /// this option will require a rooted device with selinux disabled.
3772        #[prost(string, optional, tag = "5")]
3773        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
3774    }
3775    /// Builtin counter names from the uapi header. Commented with their perf tool
3776    /// aliases.
3777    /// TODO(rsavitski): consider generating enums for cache events (should be
3778    /// finite), and generally make this list as extensive as possible. Excluding
3779    /// things like dynamic PMUs since those don't fit into a static enum.
3780    /// Next id: 21
3781    #[derive(
3782        Clone,
3783        Copy,
3784        Debug,
3785        PartialEq,
3786        Eq,
3787        Hash,
3788        PartialOrd,
3789        Ord,
3790        ::prost::Enumeration
3791    )]
3792    #[repr(i32)]
3793    pub enum Counter {
3794        UnknownCounter = 0,
3795        /// cpu-clock
3796        SwCpuClock = 1,
3797        /// page-faults, faults
3798        SwPageFaults = 2,
3799        /// task-clock
3800        SwTaskClock = 3,
3801        /// context-switches, cs
3802        SwContextSwitches = 4,
3803        /// cpu-migrations, migrations
3804        SwCpuMigrations = 5,
3805        /// minor-faults
3806        SwPageFaultsMin = 6,
3807        /// major-faults
3808        SwPageFaultsMaj = 7,
3809        /// alignment-faults
3810        SwAlignmentFaults = 8,
3811        /// emulation-faults
3812        SwEmulationFaults = 9,
3813        /// dummy
3814        SwDummy = 20,
3815        /// cpu-cycles, cycles
3816        HwCpuCycles = 10,
3817        /// instructions
3818        HwInstructions = 11,
3819        /// cache-references
3820        HwCacheReferences = 12,
3821        /// cache-misses
3822        HwCacheMisses = 13,
3823        /// branch-instructions, branches
3824        HwBranchInstructions = 14,
3825        /// branch-misses
3826        HwBranchMisses = 15,
3827        /// bus-cycles
3828        HwBusCycles = 16,
3829        /// stalled-cycles-frontend, idle-cycles-frontend
3830        HwStalledCyclesFrontend = 17,
3831        /// stalled-cycles-backend, idle-cycles-backend
3832        HwStalledCyclesBackend = 18,
3833        /// ref-cycles
3834        HwRefCpuCycles = 19,
3835    }
3836    impl Counter {
3837        /// String value of the enum field names used in the ProtoBuf definition.
3838        ///
3839        /// The values are not transformed in any way and thus are considered stable
3840        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3841        pub fn as_str_name(&self) -> &'static str {
3842            match self {
3843                Self::UnknownCounter => "UNKNOWN_COUNTER",
3844                Self::SwCpuClock => "SW_CPU_CLOCK",
3845                Self::SwPageFaults => "SW_PAGE_FAULTS",
3846                Self::SwTaskClock => "SW_TASK_CLOCK",
3847                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
3848                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
3849                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
3850                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
3851                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
3852                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
3853                Self::SwDummy => "SW_DUMMY",
3854                Self::HwCpuCycles => "HW_CPU_CYCLES",
3855                Self::HwInstructions => "HW_INSTRUCTIONS",
3856                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
3857                Self::HwCacheMisses => "HW_CACHE_MISSES",
3858                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
3859                Self::HwBranchMisses => "HW_BRANCH_MISSES",
3860                Self::HwBusCycles => "HW_BUS_CYCLES",
3861                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
3862                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
3863                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
3864            }
3865        }
3866        /// Creates an enum from field names used in the ProtoBuf definition.
3867        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3868            match value {
3869                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
3870                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
3871                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
3872                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
3873                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
3874                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
3875                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
3876                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
3877                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
3878                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
3879                "SW_DUMMY" => Some(Self::SwDummy),
3880                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
3881                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
3882                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
3883                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
3884                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
3885                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
3886                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
3887                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
3888                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
3889                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
3890                _ => None,
3891            }
3892        }
3893    }
3894    /// Subset of clocks that is supported by perf timestamping.
3895    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
3896    /// would require additions to the trace clock synchronisation logic.
3897    #[derive(
3898        Clone,
3899        Copy,
3900        Debug,
3901        PartialEq,
3902        Eq,
3903        Hash,
3904        PartialOrd,
3905        Ord,
3906        ::prost::Enumeration
3907    )]
3908    #[repr(i32)]
3909    pub enum PerfClock {
3910        UnknownPerfClock = 0,
3911        Realtime = 1,
3912        Monotonic = 2,
3913        MonotonicRaw = 3,
3914        Boottime = 4,
3915    }
3916    impl PerfClock {
3917        /// String value of the enum field names used in the ProtoBuf definition.
3918        ///
3919        /// The values are not transformed in any way and thus are considered stable
3920        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3921        pub fn as_str_name(&self) -> &'static str {
3922            match self {
3923                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
3924                Self::Realtime => "PERF_CLOCK_REALTIME",
3925                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
3926                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
3927                Self::Boottime => "PERF_CLOCK_BOOTTIME",
3928            }
3929        }
3930        /// Creates an enum from field names used in the ProtoBuf definition.
3931        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3932            match value {
3933                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
3934                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
3935                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
3936                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
3937                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
3938                _ => None,
3939            }
3940        }
3941    }
3942    #[derive(
3943        Clone,
3944        Copy,
3945        Debug,
3946        PartialEq,
3947        Eq,
3948        Hash,
3949        PartialOrd,
3950        Ord,
3951        ::prost::Enumeration
3952    )]
3953    #[repr(i32)]
3954    pub enum EventModifier {
3955        UnknownEventModifier = 0,
3956        /// count only while in userspace
3957        CountUserspace = 1,
3958        /// count only while in kernel
3959        CountKernel = 2,
3960        /// count only while in hypervisor
3961        CountHypervisor = 3,
3962    }
3963    impl EventModifier {
3964        /// String value of the enum field names used in the ProtoBuf definition.
3965        ///
3966        /// The values are not transformed in any way and thus are considered stable
3967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3968        pub fn as_str_name(&self) -> &'static str {
3969            match self {
3970                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
3971                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
3972                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
3973                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
3974            }
3975        }
3976        /// Creates an enum from field names used in the ProtoBuf definition.
3977        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3978            match value {
3979                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
3980                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
3981                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
3982                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
3983                _ => None,
3984            }
3985        }
3986    }
3987}
3988/// Additional events associated with a leader.
3989/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
3990#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3991pub struct FollowerEvent {
3992    /// Modifiers can differ between the timebase and followers.
3993    #[prost(
3994        enumeration = "perf_events::EventModifier",
3995        repeated,
3996        packed = "false",
3997        tag = "5"
3998    )]
3999    pub modifiers: ::prost::alloc::vec::Vec<i32>,
4000    /// Optional arbitrary name for the event, to identify it in the parsed
4001    /// trace. Does *not* affect the profiling itself. If unset, the trace
4002    /// parser will choose a suitable name.
4003    #[prost(string, optional, tag = "4")]
4004    pub name: ::core::option::Option<::prost::alloc::string::String>,
4005    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
4006    pub event: ::core::option::Option<follower_event::Event>,
4007}
4008/// Nested message and enum types in `FollowerEvent`.
4009pub mod follower_event {
4010    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
4011    pub enum Event {
4012        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
4013        Counter(i32),
4014        #[prost(message, tag = "2")]
4015        Tracepoint(super::perf_events::Tracepoint),
4016        #[prost(message, tag = "3")]
4017        RawEvent(super::perf_events::RawEvent),
4018    }
4019}
4020/// Configuration for the traced_perf profiler.
4021///
4022/// Example config for basic cpu profiling:
4023///    perf_event_config {
4024///      timebase {
4025///        frequency: 80
4026///      }
4027///      callstack_sampling {
4028///        scope {
4029///          target_cmdline: "surfaceflinger"
4030///          target_cmdline: "system_server"
4031///        }
4032///        kernel_frames: true
4033///      }
4034///    }
4035///
4036/// Next id: 23
4037#[derive(Clone, PartialEq, ::prost::Message)]
4038pub struct PerfEventConfig {
4039    /// What event to sample on, and how often.
4040    /// Defined in common/perf_events.proto.
4041    #[prost(message, optional, tag = "15")]
4042    pub timebase: ::core::option::Option<perf_events::Timebase>,
4043    /// Other events associated with the leader described in the timebase.
4044    #[prost(message, repeated, tag = "19")]
4045    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
4046    /// If set, the profiler will sample userspace processes' callstacks at the
4047    /// interval specified by the |timebase|.
4048    /// If unset, the profiler will record only the event counts.
4049    #[prost(message, optional, tag = "16")]
4050    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
4051    /// List of cpu indices for counting. If empty, the default is all cpus.
4052    ///
4053    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
4054    /// counter-only traces. A future change will likely reorganise the options,
4055    /// but this field will continue to be supported.
4056    ///
4057    /// Available since: perfetto v50.
4058    #[prost(uint32, repeated, packed = "false", tag = "20")]
4059    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
4060    /// Allow failure of perf_event_open
4061    #[prost(bool, optional, tag = "21")]
4062    pub ignore_open_failure: ::core::option::Option<bool>,
4063    /// If not empty, consider only CPUs whose CPUID matches one of these values.
4064    #[prost(string, repeated, tag = "22")]
4065    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4066    /// How often the per-cpu ring buffers are read by the producer.
4067    /// If unset, an implementation-defined default is used.
4068    #[prost(uint32, optional, tag = "8")]
4069    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
4070    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
4071    /// kernel. If set, must be a power of two.
4072    /// If unset, an implementation-defined default is used.
4073    #[prost(uint32, optional, tag = "3")]
4074    pub ring_buffer_pages: ::core::option::Option<u32>,
4075    /// Drop samples if the heap memory held by the samples in the unwinder queue
4076    /// is above the given limit. This counts the memory across all concurrent data
4077    /// sources (not just this one's), and there is no fairness guarantee - the
4078    /// whole quota might be used up by a concurrent source.
4079    #[prost(uint64, optional, tag = "17")]
4080    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
4081    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
4082    /// footprint exceeds this value.
4083    #[prost(uint32, optional, tag = "13")]
4084    pub max_daemon_memory_kb: ::core::option::Option<u32>,
4085    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
4086    /// sampled process. This is primarily for Android, where this lookup is
4087    /// asynchronous. As long as the producer is waiting, the associated samples
4088    /// will be kept enqueued (putting pressure on the capacity of the shared
4089    /// unwinding queue). Once a lookup for a process expires, all associated
4090    /// samples are discarded. However, if the lookup still succeeds after the
4091    /// timeout, future samples will be handled normally.
4092    /// If unset, an implementation-defined default is used.
4093    #[prost(uint32, optional, tag = "9")]
4094    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
4095    /// Optional period for clearing state cached by the userspace unwinder. This
4096    /// is a heavy operation that is only necessary for traces that target a wide
4097    /// set of processes, and require the memory footprint to be reset
4098    /// periodically. To effectively disable the cache clearing, set to a value
4099    /// greater than your trace duration.
4100    ///
4101    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
4102    ///
4103    /// If zero or unset:
4104    /// * before perfetto v52: no cache clearing.
4105    /// * perfetto v52+: implementation chooses an infrequent default.
4106    #[prost(uint32, optional, tag = "10")]
4107    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
4108    /// If set, only profile target if it was installed by a package with one of
4109    /// these names. Special values:
4110    /// * "@system": installed on the system partition
4111    /// * "@product": installed on the product partition
4112    /// * "@null": sideloaded
4113    /// Supported on Android 12+.
4114    #[prost(string, repeated, tag = "18")]
4115    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4116    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
4117    /// We rely on this to detect such configs.
4118    #[prost(bool, optional, tag = "1")]
4119    pub all_cpus: ::core::option::Option<bool>,
4120    #[prost(uint32, optional, tag = "2")]
4121    pub sampling_frequency: ::core::option::Option<u32>,
4122    #[prost(bool, optional, tag = "12")]
4123    pub kernel_frames: ::core::option::Option<bool>,
4124    #[prost(int32, repeated, packed = "false", tag = "4")]
4125    pub target_pid: ::prost::alloc::vec::Vec<i32>,
4126    #[prost(string, repeated, tag = "5")]
4127    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4128    #[prost(int32, repeated, packed = "false", tag = "6")]
4129    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4130    #[prost(string, repeated, tag = "7")]
4131    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4132    #[prost(uint32, optional, tag = "11")]
4133    pub additional_cmdline_count: ::core::option::Option<u32>,
4134}
4135/// Nested message and enum types in `PerfEventConfig`.
4136pub mod perf_event_config {
4137    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4138    pub struct CallstackSampling {
4139        /// Defines a set of processes for which samples are retained/skipped. If
4140        /// unset, all samples are kept, but beware that it will be very heavy on the
4141        /// stack unwinder, which might start dropping samples due to overload.
4142        #[prost(message, optional, tag = "1")]
4143        pub scope: ::core::option::Option<Scope>,
4144        /// If true, callstacks will include the kernel-space frames. Such frames can
4145        /// be identified by a magical "kernel" string as their mapping name.
4146        /// Requires traced_perf to be running as root, or kptr_restrict to have been
4147        /// manually unrestricted. On Android, the platform should do the right thing
4148        /// on debug builds.
4149        /// This does *not* disclose KASLR, as only the function names are emitted.
4150        #[prost(bool, optional, tag = "2")]
4151        pub kernel_frames: ::core::option::Option<bool>,
4152        /// Whether to record and unwind userspace callstacks. If unset, defaults to
4153        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
4154        /// as the most common default (this defaulting is only applicable if the
4155        /// outer CallstackSampling message is explicitly set).
4156        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
4157        pub user_frames: ::core::option::Option<i32>,
4158    }
4159    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4160    pub struct Scope {
4161        /// Process ID (TGID) allowlist. If this list is not empty, only matching
4162        /// samples will be retained. If multiple allow/deny-lists are
4163        /// specified by the config, then all of them are evaluated for each sampled
4164        /// process.
4165        #[prost(int32, repeated, packed = "false", tag = "1")]
4166        pub target_pid: ::prost::alloc::vec::Vec<i32>,
4167        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4168        /// comm string). The semantics of this field were changed since its original
4169        /// introduction.
4170        ///
4171        /// On Android T+ (13+), this field can specify a single wildcard (*), and
4172        /// the profiler will attempt to match it in two possible ways:
4173        /// * if the pattern starts with a '/', then it is matched against the first
4174        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4175        ///    "/bin/echo".
4176        /// * otherwise the pattern is matched against the part of argv0
4177        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4178        ///    For example "echo" would match "/bin/echo".
4179        ///
4180        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4181        /// normalized prior to an exact string comparison. Normalization is as
4182        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4183        /// the string contains forward slashes, trim everything up to and including
4184        /// the last one.
4185        ///
4186        /// Implementation note: in either case, at most 511 characters of cmdline
4187        /// are considered.
4188        #[prost(string, repeated, tag = "2")]
4189        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4190        /// List of excluded pids.
4191        #[prost(int32, repeated, packed = "false", tag = "3")]
4192        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4193        /// List of excluded cmdlines. See description of |target_cmdline| for how
4194        /// this is handled.
4195        #[prost(string, repeated, tag = "4")]
4196        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4197        /// Number of additional command lines to sample. Only those which are
4198        /// neither explicitly included nor excluded will be considered. Processes
4199        /// are accepted on a first come, first served basis.
4200        #[prost(uint32, optional, tag = "5")]
4201        pub additional_cmdline_count: ::core::option::Option<u32>,
4202        /// If set to N, all encountered processes will be put into one of the N
4203        /// possible bins, and only one randomly-chosen bin will be selected for
4204        /// unwinding. The binning is simply "pid % N", under the assumption that
4205        /// low-order bits of pids are roughly uniformly distributed. Other explicit
4206        /// inclusions/exclusions in this |Scope| message are still respected.
4207        ///
4208        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
4209        /// values will be queryable in trace processor under the "stats" table as
4210        /// "perf_process_shard_count" and "perf_chosen_process_shard".
4211        ///
4212        /// NB: all data sources in a config that set |process_shard_count| must set
4213        /// it to the same value. The profiler will choose one bin for all those data
4214        /// sources.
4215        #[prost(uint32, optional, tag = "6")]
4216        pub process_shard_count: ::core::option::Option<u32>,
4217    }
4218    /// Userspace unwinding mode.
4219    #[derive(
4220        Clone,
4221        Copy,
4222        Debug,
4223        PartialEq,
4224        Eq,
4225        Hash,
4226        PartialOrd,
4227        Ord,
4228        ::prost::Enumeration
4229    )]
4230    #[repr(i32)]
4231    pub enum UnwindMode {
4232        UnwindUnknown = 0,
4233        /// Do not unwind userspace:
4234        UnwindSkip = 1,
4235        /// Use libunwindstack (default):
4236        UnwindDwarf = 2,
4237        /// Use userspace frame pointer unwinder:
4238        UnwindFramePointer = 3,
4239        /// Ask the kernel to unwind the userspace stack via frame pointers, using
4240        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
4241        /// sample, which avoids the per-sample copy cost and the depth limit
4242        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
4243        /// (including system libraries) is built with frame pointers - the kernel
4244        /// walks the chain and returns instruction addresses, which still need to
4245        /// be symbolized offline using the recorded process mappings.
4246        UnwindKernelFramePointer = 4,
4247    }
4248    impl UnwindMode {
4249        /// String value of the enum field names used in the ProtoBuf definition.
4250        ///
4251        /// The values are not transformed in any way and thus are considered stable
4252        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4253        pub fn as_str_name(&self) -> &'static str {
4254            match self {
4255                Self::UnwindUnknown => "UNWIND_UNKNOWN",
4256                Self::UnwindSkip => "UNWIND_SKIP",
4257                Self::UnwindDwarf => "UNWIND_DWARF",
4258                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
4259                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
4260            }
4261        }
4262        /// Creates an enum from field names used in the ProtoBuf definition.
4263        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4264            match value {
4265                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
4266                "UNWIND_SKIP" => Some(Self::UnwindSkip),
4267                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
4268                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
4269                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
4270                _ => None,
4271            }
4272        }
4273    }
4274}
4275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4276pub struct ProtoVmConfig {
4277    #[prost(uint32, optional, tag = "1")]
4278    pub memory_limit_kb: ::core::option::Option<u32>,
4279}
4280/// QnxConfig is used with trace_qnx_probes build from
4281/// <https://github.com/qnx-ports/perfetto>
4282#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4283pub struct QnxConfig {
4284    /// The number of buffers that tracelog will init for the QNX trace.
4285    #[prost(uint32, optional, tag = "1")]
4286    pub qnx_kernel_buffers: ::core::option::Option<u32>,
4287    /// The number of kernel buffers that tracelog will init for the QNX trace.
4288    #[prost(uint32, optional, tag = "2")]
4289    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
4290    /// Flag indicating whether the QNX kernel tracing should produce wide
4291    /// events which contain additional data or fast events which are most
4292    /// concise. In fast mode we lose the priority information
4293    #[prost(bool, optional, tag = "3")]
4294    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
4295    /// The number of pages initialized by default the parser's page cache.
4296    #[prost(uint32, optional, tag = "4")]
4297    pub qnx_cache_pages: ::core::option::Option<u32>,
4298    /// The max pages the page cache should allocate (must be at least as big)
4299    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
4300    /// unbounded. The cache will prefer to re-use existing pages so growth will
4301    /// only happen when needed (when parser is not keeping up).
4302    #[prost(int32, optional, tag = "5")]
4303    pub qnx_cache_max_pages: ::core::option::Option<i32>,
4304    /// The initial size of the the buffer used to hold the trace header values
4305    /// this dynamic buffer will grow as needed but reallocs can be avoided by
4306    /// selecting an initial size large enough to hold all the initial header
4307    /// data.
4308    #[prost(uint32, optional, tag = "6")]
4309    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
4310}
4311/// This file is named 'statsd_tracing_config.proto' rather than
4312/// 'statsd_config.proto' (which would be more consistent with the other
4313/// config protos) so it doesn't show up and confuse folks looking for
4314/// the existing statsd_config.proto for configuring statsd itself.
4315/// Same for the config proto itself.
4316#[derive(Clone, PartialEq, ::prost::Message)]
4317pub struct StatsdTracingConfig {
4318    /// This is for the common case of the atom id being known in the enum AtomId.
4319    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
4320    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
4321    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
4322    /// (e.g. non-upstream atoms that don't exist in AOSP).
4323    #[prost(int32, repeated, packed = "false", tag = "2")]
4324    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
4325    #[prost(message, repeated, tag = "3")]
4326    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
4327}
4328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4329pub struct StatsdPullAtomConfig {
4330    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
4331    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4332    #[prost(int32, repeated, packed = "false", tag = "2")]
4333    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4334    #[prost(int32, optional, tag = "3")]
4335    pub pull_frequency_ms: ::core::option::Option<i32>,
4336    #[prost(string, repeated, tag = "4")]
4337    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4338}
4339/// This file defines the configuration for the Linux /proc poller data source,
4340/// which injects counters in the trace.
4341/// Counters that are needed in the trace must be explicitly listed in the
4342/// *_counters fields. This is to avoid spamming the trace with all counters
4343/// at all times.
4344/// The sampling rate is configurable. All polling rates (*_period_ms) need
4345/// to be integer multiples of each other.
4346/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
4347/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
4348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4349pub struct SysStatsConfig {
4350    /// Polls /proc/meminfo every X ms, if non-zero.
4351    /// This is required to be > 10ms to avoid excessive CPU usage.
4352    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
4353    #[prost(uint32, optional, tag = "1")]
4354    pub meminfo_period_ms: ::core::option::Option<u32>,
4355    /// If empty all known counters are reported. Otherwise, only the counters
4356    /// specified below are reported.
4357    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
4358    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
4359    /// Polls /proc/vmstat every X ms, if non-zero.
4360    /// This is required to be > 10ms to avoid excessive CPU usage.
4361    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
4362    #[prost(uint32, optional, tag = "3")]
4363    pub vmstat_period_ms: ::core::option::Option<u32>,
4364    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
4365    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
4366    /// Pols /proc/stat every X ms, if non-zero.
4367    /// This is required to be > 10ms to avoid excessive CPU usage.
4368    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
4369    #[prost(uint32, optional, tag = "5")]
4370    pub stat_period_ms: ::core::option::Option<u32>,
4371    #[prost(
4372        enumeration = "sys_stats_config::StatCounters",
4373        repeated,
4374        packed = "false",
4375        tag = "6"
4376    )]
4377    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
4378    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
4379    /// This is required to be > 10ms to avoid excessive CPU usage.
4380    /// This option can be used to record unchanging values.
4381    /// Updates from frequency changes can come from ftrace/set_clock_rate.
4382    #[prost(uint32, optional, tag = "7")]
4383    pub devfreq_period_ms: ::core::option::Option<u32>,
4384    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
4385    /// This is required to be > 10ms to avoid excessive CPU usage.
4386    #[prost(uint32, optional, tag = "8")]
4387    pub cpufreq_period_ms: ::core::option::Option<u32>,
4388    /// Polls /proc/buddyinfo every X ms, if non-zero.
4389    /// This is required to be > 10ms to avoid excessive CPU usage.
4390    #[prost(uint32, optional, tag = "9")]
4391    pub buddyinfo_period_ms: ::core::option::Option<u32>,
4392    /// Polls /proc/diskstats every X ms, if non-zero.
4393    /// This is required to be > 10ms to avoid excessive CPU usage.
4394    #[prost(uint32, optional, tag = "10")]
4395    pub diskstat_period_ms: ::core::option::Option<u32>,
4396    /// Polls /proc/pressure/* every X ms, if non-zero.
4397    /// This is required to be > 10ms to avoid excessive CPU usage.
4398    #[prost(uint32, optional, tag = "11")]
4399    pub psi_period_ms: ::core::option::Option<u32>,
4400    /// Polls /sys/class/thermal/* every X ms, if non-zero.
4401    /// This is required to be > 10ms to avoid excessive CPU usage.
4402    #[prost(uint32, optional, tag = "12")]
4403    pub thermal_period_ms: ::core::option::Option<u32>,
4404    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
4405    /// This is required to be > 10ms to avoid excessive CPU usage.
4406    #[prost(uint32, optional, tag = "13")]
4407    pub cpuidle_period_ms: ::core::option::Option<u32>,
4408    /// Polls device-specific GPU frequency info every X ms, if non-zero.
4409    /// This is required to be > 10ms to avoid excessive CPU usage.
4410    #[prost(uint32, optional, tag = "14")]
4411    pub gpufreq_period_ms: ::core::option::Option<u32>,
4412    /// Polls /proc/slabinfo every X ms, if non-zero.
4413    /// This is required to be > 10ms to avoid excessive CPU usage.
4414    #[prost(uint32, optional, tag = "15")]
4415    pub slab_period_ms: ::core::option::Option<u32>,
4416}
4417/// Nested message and enum types in `SysStatsConfig`.
4418pub mod sys_stats_config {
4419    #[derive(
4420        Clone,
4421        Copy,
4422        Debug,
4423        PartialEq,
4424        Eq,
4425        Hash,
4426        PartialOrd,
4427        Ord,
4428        ::prost::Enumeration
4429    )]
4430    #[repr(i32)]
4431    pub enum StatCounters {
4432        StatUnspecified = 0,
4433        StatCpuTimes = 1,
4434        StatIrqCounts = 2,
4435        StatSoftirqCounts = 3,
4436        StatForkCount = 4,
4437    }
4438    impl StatCounters {
4439        /// String value of the enum field names used in the ProtoBuf definition.
4440        ///
4441        /// The values are not transformed in any way and thus are considered stable
4442        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4443        pub fn as_str_name(&self) -> &'static str {
4444            match self {
4445                Self::StatUnspecified => "STAT_UNSPECIFIED",
4446                Self::StatCpuTimes => "STAT_CPU_TIMES",
4447                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
4448                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
4449                Self::StatForkCount => "STAT_FORK_COUNT",
4450            }
4451        }
4452        /// Creates an enum from field names used in the ProtoBuf definition.
4453        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4454            match value {
4455                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
4456                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
4457                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
4458                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
4459                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
4460                _ => None,
4461            }
4462        }
4463    }
4464}
4465/// This data-source does a one-off recording of system information when
4466/// the trace starts.
4467/// Currently this includes:
4468/// - Values of
4469/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
4470/// datasource has no configuration options at present.
4471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4472pub struct SystemInfoConfig {
4473    /// If true, records hardware interrupt ID-to-name mappings from
4474    /// /proc/interrupts.
4475    #[prost(bool, optional, tag = "1")]
4476    pub irq_names: ::core::option::Option<bool>,
4477}
4478/// The configuration for a fake producer used in tests.
4479#[derive(Clone, PartialEq, ::prost::Message)]
4480pub struct TestConfig {
4481    /// The number of messages the fake producer should send.
4482    #[prost(uint32, optional, tag = "1")]
4483    pub message_count: ::core::option::Option<u32>,
4484    /// The maximum number of messages which should be sent each second.
4485    /// The actual obserced speed may be lower if the producer is unable to
4486    /// work fast enough.
4487    /// If this is zero or unset, the producer will send as fast as possible.
4488    #[prost(uint32, optional, tag = "2")]
4489    pub max_messages_per_second: ::core::option::Option<u32>,
4490    /// The seed value for a simple multiplicative congruential pseudo-random
4491    /// number sequence.
4492    #[prost(uint32, optional, tag = "3")]
4493    pub seed: ::core::option::Option<u32>,
4494    /// The size of each message in bytes. Should be greater than or equal 5 to
4495    /// account for the number of bytes needed to encode the random number and a
4496    /// null byte for the string.
4497    #[prost(uint32, optional, tag = "4")]
4498    pub message_size: ::core::option::Option<u32>,
4499    /// Whether the producer should send a event batch when the data source is
4500    /// is initially registered.
4501    #[prost(bool, optional, tag = "5")]
4502    pub send_batch_on_register: ::core::option::Option<bool>,
4503    #[prost(message, optional, tag = "6")]
4504    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
4505}
4506/// Nested message and enum types in `TestConfig`.
4507pub mod test_config {
4508    #[derive(Clone, PartialEq, ::prost::Message)]
4509    pub struct DummyFields {
4510        #[prost(uint32, optional, tag = "1")]
4511        pub field_uint32: ::core::option::Option<u32>,
4512        #[prost(int32, optional, tag = "2")]
4513        pub field_int32: ::core::option::Option<i32>,
4514        #[prost(uint64, optional, tag = "3")]
4515        pub field_uint64: ::core::option::Option<u64>,
4516        #[prost(int64, optional, tag = "4")]
4517        pub field_int64: ::core::option::Option<i64>,
4518        #[prost(fixed64, optional, tag = "5")]
4519        pub field_fixed64: ::core::option::Option<u64>,
4520        #[prost(sfixed64, optional, tag = "6")]
4521        pub field_sfixed64: ::core::option::Option<i64>,
4522        #[prost(fixed32, optional, tag = "7")]
4523        pub field_fixed32: ::core::option::Option<u32>,
4524        #[prost(sfixed32, optional, tag = "8")]
4525        pub field_sfixed32: ::core::option::Option<i32>,
4526        #[prost(double, optional, tag = "9")]
4527        pub field_double: ::core::option::Option<f64>,
4528        #[prost(float, optional, tag = "10")]
4529        pub field_float: ::core::option::Option<f32>,
4530        #[prost(sint64, optional, tag = "11")]
4531        pub field_sint64: ::core::option::Option<i64>,
4532        #[prost(sint32, optional, tag = "12")]
4533        pub field_sint32: ::core::option::Option<i32>,
4534        #[prost(string, optional, tag = "13")]
4535        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
4536        #[prost(bytes = "vec", optional, tag = "14")]
4537        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4538    }
4539}
4540/// The following fields define the set of enabled trace categories. Each list
4541/// item is a glob.
4542///
4543/// To determine if category is enabled, it is checked against the filters in
4544/// the following order:
4545///
4546///    1. Exact matches in enabled categories.
4547///    2. Exact matches in enabled tags.
4548///    3. Exact matches in disabled categories.
4549///    4. Exact matches in disabled tags.
4550///    5. Pattern matches in enabled categories.
4551///    6. Pattern matches in enabled tags.
4552///    7. Pattern matches in disabled categories.
4553///    8. Pattern matches in disabled tags.
4554///
4555/// If none of the steps produced a match:
4556///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
4557///   default.
4558///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
4559///
4560/// Examples:
4561///
4562///   - To enable all non-slow/debug categories:
4563///
4564///        enabled_categories: "*"
4565///
4566///   - To enable specific categories:
4567///
4568///        disabled_categories: "*"
4569///        enabled_categories: "my_category"
4570///        enabled_categories: "my_category2"
4571///
4572///   - To enable only categories with a specific tag:
4573///
4574///        disabled_tags: "*"
4575///        enabled_tags: "my_tag"
4576///
4577#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4578pub struct TrackEventConfig {
4579    /// Default: \[\]
4580    #[prost(string, repeated, tag = "1")]
4581    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4582    /// Default: \[\]
4583    #[prost(string, repeated, tag = "2")]
4584    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4585    /// Default: \["slow", "debug"\]
4586    #[prost(string, repeated, tag = "3")]
4587    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4588    /// Default: \[\]
4589    #[prost(string, repeated, tag = "4")]
4590    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4591    /// Default: false (i.e. enabled by default)
4592    #[prost(bool, optional, tag = "5")]
4593    pub disable_incremental_timestamps: ::core::option::Option<bool>,
4594    /// Allows to specify a custom unit different than the default (ns).
4595    /// Also affects thread timestamps if enable_thread_time_sampling = true.
4596    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
4597    /// 3000 ns = 3 us.
4598    /// Default: 1 (if unset, it should be read as 1).
4599    #[prost(uint64, optional, tag = "6")]
4600    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
4601    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
4602    /// When true, any debug annotations provided as arguments to the
4603    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
4604    /// still be emitted even if set to true.
4605    #[prost(bool, optional, tag = "7")]
4606    pub filter_debug_annotations: ::core::option::Option<bool>,
4607    /// Default: false (i.e. disabled)
4608    /// When true, the SDK samples and emits the current thread time counter value
4609    /// for each event on the current thread's track. This value represents the
4610    /// total CPU time consumed by that thread since its creation.
4611    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
4612    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
4613    #[prost(bool, optional, tag = "8")]
4614    pub enable_thread_time_sampling: ::core::option::Option<bool>,
4615    /// When enable_thread_time_sampling is true, and this is specified, thread
4616    /// time is sampled only if the elapsed wall time >
4617    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
4618    /// Effectively, this means thread time will have a leeway of
4619    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
4620    #[prost(uint64, optional, tag = "10")]
4621    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
4622    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
4623    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
4624    /// out.
4625    #[prost(bool, optional, tag = "9")]
4626    pub filter_dynamic_event_names: ::core::option::Option<bool>,
4627}
4628/// The configuration that is passed to each data source when starting tracing.
4629/// Next id: 147
4630#[derive(Clone, PartialEq, ::prost::Message)]
4631pub struct DataSourceConfig {
4632    /// Data source unique name, e.g., "linux.ftrace". This must match
4633    /// the name passed by the data source when it registers (see
4634    /// RegisterDataSource()).
4635    #[prost(string, optional, tag = "1")]
4636    pub name: ::core::option::Option<::prost::alloc::string::String>,
4637    /// The index of the logging buffer where TracePacket(s) will be stored.
4638    /// This field is quite subtle as it has a double semantic:
4639    /// 1) When the config is passed, this field is a 0-based index relative to the
4640    ///     buffer array in the TraceConfig and defines the mapping between data
4641    ///     sources and config. From v54 this is optional because the user can
4642    ///     instead use target_buffer_name.
4643    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
4644    ///     producer, it overwrites this field with the global buffer index (which
4645    ///     depends on other tracing sessions active). This tells the producer which
4646    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
4647    ///     service always sets the resolved global id, even when using
4648    ///     `target_buffer_name`.
4649    /// In hindsight we should have used two different fields given even in v0 they
4650    /// had a different semantic. But now it's too late as this would be a major
4651    /// protocol breaking change.
4652    #[prost(uint32, optional, tag = "2")]
4653    pub target_buffer: ::core::option::Option<u32>,
4654    /// Alternative to |target_buffer|. References a buffer by name (as specified
4655    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
4656    /// readable and less error-prone than using buffer indices.
4657    /// If both |target_buffer| and |target_buffer_name| are specified, they must
4658    /// refer to the same buffer, otherwise the service will reject the config.
4659    /// Using both fields allows configs to work with both old and new versions
4660    /// of the tracing service. Introduced in v54.
4661    #[prost(string, optional, tag = "11")]
4662    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
4663    /// Set by the service to indicate the duration of the trace.
4664    /// DO NOT SET in consumer as this will be overridden by the service.
4665    #[prost(uint32, optional, tag = "3")]
4666    pub trace_duration_ms: ::core::option::Option<u32>,
4667    /// If true, |trace_duration_ms| should count also time in suspend. This
4668    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
4669    #[prost(bool, optional, tag = "122")]
4670    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4671    /// Set by the service to indicate how long it waits after StopDataSource.
4672    /// DO NOT SET in consumer as this will be overridden by the service.
4673    #[prost(uint32, optional, tag = "7")]
4674    pub stop_timeout_ms: ::core::option::Option<u32>,
4675    /// Set by the service to indicate whether this tracing session has extra
4676    /// guardrails.
4677    /// DO NOT SET in consumer as this will be overridden by the service.
4678    #[prost(bool, optional, tag = "6")]
4679    pub enable_extra_guardrails: ::core::option::Option<bool>,
4680    /// Set by the service to indicate which user initiated this trace.
4681    /// DO NOT SET in consumer as this will be overridden by the service.
4682    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
4683    pub session_initiator: ::core::option::Option<i32>,
4684    /// Set by the service to indicate which tracing session the data source
4685    /// belongs to. The intended use case for this is checking if two data sources,
4686    /// one of which produces metadata for the other one, belong to the same trace
4687    /// session and hence should be linked together.
4688    /// This field was introduced in Aug 2018 after Android P.
4689    /// DO NOT SET in consumer as this will be overridden by the service.
4690    #[prost(uint64, optional, tag = "4")]
4691    pub tracing_session_id: ::core::option::Option<u64>,
4692    /// How to behave when the producer runs out of space in the shared memory
4693    /// buffer. This is only honored by some data sources (in the SDK, the data
4694    /// sources registered with a configurable buffer exhausted policy).
4695    #[prost(
4696        enumeration = "data_source_config::BufferExhaustedPolicy",
4697        optional,
4698        tag = "9"
4699    )]
4700    pub buffer_exhausted_policy: ::core::option::Option<i32>,
4701    #[prost(message, optional, tag = "10")]
4702    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
4703    /// TODO(primiano): today when we enable a protovm_config, we actually accept
4704    /// that if N producers advertise M different versions of the same program we
4705    /// will create M instances of that program.
4706    /// To overcome this, we could move the program to the TraceConfig. But doing
4707    /// so would bloat the trace config size too big and create problems to statsd.
4708    /// Once the config store (b/482305876) exists we should move protovm programs
4709    /// onto that.
4710    #[prost(message, optional, tag = "12")]
4711    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
4712    /// Data source name: linux.ftrace
4713    #[prost(message, optional, tag = "100")]
4714    pub ftrace_config: ::core::option::Option<FtraceConfig>,
4715    /// Data source name: linux.inode_file_map
4716    #[prost(message, optional, tag = "102")]
4717    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
4718    /// Data source name: linux.process_stats
4719    #[prost(message, optional, tag = "103")]
4720    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
4721    /// Data source name: linux.sys_stats
4722    #[prost(message, optional, tag = "104")]
4723    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
4724    /// Data source name: android.heapprofd
4725    /// Introduced in Android 10.
4726    #[prost(message, optional, tag = "105")]
4727    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
4728    /// Data source name: android.java_hprof
4729    /// Introduced in Android 11.
4730    #[prost(message, optional, tag = "110")]
4731    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
4732    /// Data source name: android.power
4733    #[prost(message, optional, tag = "106")]
4734    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
4735    /// Data source name: android.log
4736    #[prost(message, optional, tag = "107")]
4737    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
4738    /// Data source name: gpu.counters
4739    #[prost(message, optional, tag = "108")]
4740    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
4741    /// Data source name: android.game_interventions
4742    #[prost(message, optional, tag = "116")]
4743    pub android_game_intervention_list_config: ::core::option::Option<
4744        AndroidGameInterventionListConfig,
4745    >,
4746    /// Data source name: android.packages_list
4747    #[prost(message, optional, tag = "109")]
4748    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
4749    /// Data source name: linux.perf
4750    #[prost(message, optional, tag = "111")]
4751    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
4752    /// Data source name: vulkan.memory_tracker
4753    #[prost(message, optional, tag = "112")]
4754    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
4755    /// Data source name: track_event
4756    #[prost(message, optional, tag = "113")]
4757    pub track_event_config: ::core::option::Option<TrackEventConfig>,
4758    /// Data source name: android.polled_state
4759    #[prost(message, optional, tag = "114")]
4760    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
4761    /// Data source name: android.system_property
4762    #[prost(message, optional, tag = "118")]
4763    pub android_system_property_config: ::core::option::Option<
4764        AndroidSystemPropertyConfig,
4765    >,
4766    /// Data source name: android.statsd
4767    #[prost(message, optional, tag = "117")]
4768    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
4769    /// Data source name: linux.system_info
4770    #[prost(message, optional, tag = "119")]
4771    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
4772    /// Data source name: linux.frozen_ftrace
4773    #[prost(message, optional, tag = "136")]
4774    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
4775    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
4776    /// avoid proto serialization and de-serialization there because that would
4777    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
4778    /// C++ class for it so it can pass around plain C++ objets.
4779    #[prost(message, optional, tag = "101")]
4780    pub chrome_config: ::core::option::Option<ChromeConfig>,
4781    /// Data source name: code.v8.dev
4782    #[prost(message, optional, tag = "127")]
4783    pub v8_config: ::core::option::Option<V8Config>,
4784    /// If an interceptor is specified here, packets for this data source will be
4785    /// rerouted to the interceptor instead of the main trace buffer. This can be
4786    /// used, for example, to write trace data into ETW or for logging trace points
4787    /// to the console.
4788    ///
4789    /// Note that interceptors are only supported by data sources registered
4790    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
4791    /// traced_probes) may not support interception.
4792    #[prost(message, optional, tag = "115")]
4793    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
4794    /// Data source name: android.network_packets.
4795    /// Introduced in Android 14 (U).
4796    #[prost(message, optional, tag = "120")]
4797    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
4798    /// Data source name: android.surfaceflinger.layers
4799    #[prost(message, optional, tag = "121")]
4800    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
4801    /// Data source name: android.surfaceflinger.transactions
4802    #[prost(message, optional, tag = "123")]
4803    pub surfaceflinger_transactions_config: ::core::option::Option<
4804        SurfaceFlingerTransactionsConfig,
4805    >,
4806    /// Data source name: android.sdk_sysprop_guard
4807    /// Introduced in Android 14 (U) QPR1.
4808    #[prost(message, optional, tag = "124")]
4809    pub android_sdk_sysprop_guard_config: ::core::option::Option<
4810        AndroidSdkSyspropGuardConfig,
4811    >,
4812    /// Data source name: windows.etw
4813    #[prost(message, optional, tag = "125")]
4814    pub etw_config: ::core::option::Option<EtwConfig>,
4815    /// Data source name: android.protolog
4816    #[prost(message, optional, tag = "126")]
4817    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
4818    /// Data source name: android.input.inputevent
4819    #[prost(message, optional, tag = "128")]
4820    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
4821    /// Data source name: android.pixel.modem
4822    #[prost(message, optional, tag = "129")]
4823    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
4824    /// Data source name: android.windowmanager
4825    #[prost(message, optional, tag = "130")]
4826    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
4827    /// Data source name: org.chromium.system_metrics
4828    #[prost(message, optional, tag = "131")]
4829    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
4830    /// Data source name: android.kernel_wakelocks
4831    #[prost(message, optional, tag = "132")]
4832    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
4833    /// Data source name: gpu.renderstages
4834    #[prost(message, optional, tag = "133")]
4835    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
4836    /// Data source name: org.chromium.histogram_samples
4837    #[prost(message, optional, tag = "134")]
4838    pub chromium_histogram_samples: ::core::option::Option<
4839        ChromiumHistogramSamplesConfig,
4840    >,
4841    /// Data source name: android.app_wakelocks
4842    #[prost(message, optional, tag = "135")]
4843    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
4844    /// Data source name: android.cpu_per_uid
4845    #[prost(message, optional, tag = "137")]
4846    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
4847    /// Data source name: android.user_list
4848    #[prost(message, optional, tag = "138")]
4849    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
4850    /// Data source name: android.inputmethod
4851    #[prost(message, optional, tag = "139")]
4852    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
4853    /// Data source name: android.aflags
4854    #[prost(message, optional, tag = "140")]
4855    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
4856    /// Data source name: linux.systemd_journald
4857    #[prost(message, optional, tag = "141")]
4858    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
4859    /// Data source name: android.display.video
4860    #[prost(message, optional, tag = "142")]
4861    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
4862    /// Data source name: org.chromium.sampler_profiler
4863    #[prost(message, optional, tag = "143")]
4864    pub chromium_stack_sampling_profiler: ::core::option::Option<
4865        ChromiumStackSamplingProfilerConfig,
4866    >,
4867    /// Data source name: org.chromium.native_heap_profiler
4868    #[prost(message, optional, tag = "144")]
4869    pub chromium_sampling_heap_profiler: ::core::option::Option<
4870        ChromiumSamplingHeapProfilerConfig,
4871    >,
4872    /// Data source name: android.process_state
4873    #[prost(message, optional, tag = "145")]
4874    pub android_process_state_config: ::core::option::Option<AndroidProcessStateConfig>,
4875    /// Data source name: linux.smaps
4876    #[prost(message, optional, tag = "146")]
4877    pub process_smaps_config: ::core::option::Option<ProcessSmapsConfig>,
4878    /// Data source name: qnx.kernel
4879    #[prost(message, optional, tag = "150")]
4880    pub qnx_config: ::core::option::Option<QnxConfig>,
4881    /// This is a fallback mechanism to send a free-form text config to the
4882    /// producer. In theory this should never be needed. All the code that
4883    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
4884    /// the trace config proto and propagate unknown fields. However, if anything
4885    /// in the pipeline (client or backend) ends up breaking this forward compat
4886    /// plan, this field will become the escape hatch to allow future data sources
4887    /// to get some meaningful configuration.
4888    #[prost(string, optional, tag = "1000")]
4889    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
4890    /// This field is only used for testing.
4891    #[prost(message, optional, tag = "1001")]
4892    pub for_testing: ::core::option::Option<TestConfig>,
4893}
4894/// Nested message and enum types in `DataSourceConfig`.
4895pub mod data_source_config {
4896    #[derive(
4897        Clone,
4898        Copy,
4899        Debug,
4900        PartialEq,
4901        Eq,
4902        Hash,
4903        PartialOrd,
4904        Ord,
4905        ::prost::Enumeration
4906    )]
4907    #[repr(i32)]
4908    pub enum SessionInitiator {
4909        Unspecified = 0,
4910        /// This trace was initiated from a trusted system app has DUMP and
4911        /// USAGE_STATS permission. This system app is expected to not expose the
4912        /// trace to the user of the device.
4913        /// This is determined by checking the UID initiating the trace.
4914        TrustedSystem = 1,
4915    }
4916    impl SessionInitiator {
4917        /// String value of the enum field names used in the ProtoBuf definition.
4918        ///
4919        /// The values are not transformed in any way and thus are considered stable
4920        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4921        pub fn as_str_name(&self) -> &'static str {
4922            match self {
4923                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
4924                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
4925            }
4926        }
4927        /// Creates an enum from field names used in the ProtoBuf definition.
4928        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4929            match value {
4930                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
4931                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
4932                _ => None,
4933            }
4934        }
4935    }
4936    #[derive(
4937        Clone,
4938        Copy,
4939        Debug,
4940        PartialEq,
4941        Eq,
4942        Hash,
4943        PartialOrd,
4944        Ord,
4945        ::prost::Enumeration
4946    )]
4947    #[repr(i32)]
4948    pub enum BufferExhaustedPolicy {
4949        /// The data source will use its default buffer exhausted policy, specified
4950        /// by the code when the data source is registered.
4951        BufferExhaustedUnspecified = 0,
4952        /// The data source will drop packets when there's no space in the shared
4953        /// memory buffer.
4954        BufferExhaustedDrop = 1,
4955        /// The data source will wait when there's no space in the shared memory
4956        /// buffer. If there's still not space, after a few seconds, the whole
4957        /// producer process will be aborted.
4958        BufferExhaustedStallThenAbort = 2,
4959        /// The data source will wait when there's no space in the shared memory
4960        /// buffer.  If there's still not space, after a few seconds, the data source
4961        /// will drop packets.
4962        BufferExhaustedStallThenDrop = 3,
4963    }
4964    impl BufferExhaustedPolicy {
4965        /// String value of the enum field names used in the ProtoBuf definition.
4966        ///
4967        /// The values are not transformed in any way and thus are considered stable
4968        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4969        pub fn as_str_name(&self) -> &'static str {
4970            match self {
4971                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
4972                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
4973                Self::BufferExhaustedStallThenAbort => {
4974                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
4975                }
4976                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
4977            }
4978        }
4979        /// Creates an enum from field names used in the ProtoBuf definition.
4980        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4981            match value {
4982                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
4983                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
4984                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
4985                    Some(Self::BufferExhaustedStallThenAbort)
4986                }
4987                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
4988                    Some(Self::BufferExhaustedStallThenDrop)
4989                }
4990                _ => None,
4991            }
4992        }
4993    }
4994}
4995/// The overall config that is used when starting a new tracing session through
4996/// ProducerPort::StartTracing().
4997/// It contains the general config for the logging buffer(s) and the configs for
4998/// all the data source being enabled.
4999///
5000/// Next id: 50.
5001#[derive(Clone, PartialEq, ::prost::Message)]
5002pub struct TraceConfig {
5003    #[prost(message, repeated, tag = "1")]
5004    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
5005    #[prost(message, repeated, tag = "2")]
5006    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
5007    #[prost(message, optional, tag = "20")]
5008    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
5009    /// If specified, the trace will be stopped |duration_ms| after starting.
5010    /// This does *not* count the time the system is suspended, so we will run
5011    /// for duration_ms of system activity, not wall time.
5012    ///
5013    /// However in case of traces with triggers, see
5014    /// TriggerConfig.trigger_timeout_ms instead.
5015    #[prost(uint32, optional, tag = "3")]
5016    pub duration_ms: ::core::option::Option<u32>,
5017    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
5018    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
5019    /// Linux/Android, no-op on other platforms. This is used when dealing with
5020    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
5021    /// wall-time, making them more likely to hit device reboots (and hence loss).
5022    /// This option also changes consistently the semantic of
5023    /// TriggerConfig.stop_delay_ms.
5024    #[prost(bool, optional, tag = "36")]
5025    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
5026    /// This is set when --dropbox is passed to the Perfetto command line client
5027    /// and enables guardrails that limit resource usage for traces requested
5028    /// by statsd.
5029    #[prost(bool, optional, tag = "4")]
5030    pub enable_extra_guardrails: ::core::option::Option<bool>,
5031    /// Reject producers that are not running under the same UID as the tracing
5032    /// service.
5033    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
5034    pub lockdown_mode: ::core::option::Option<i32>,
5035    #[prost(message, repeated, tag = "6")]
5036    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
5037    /// Statsd-specific metadata.
5038    #[prost(message, optional, tag = "7")]
5039    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
5040    /// When true && |output_path| is empty, the EnableTracing() request must
5041    /// provide a file descriptor. The service will then periodically read packets
5042    /// out of the trace buffer and store it into the passed file.
5043    /// If |output_path| is not empty no fd should be passed, the service
5044    /// will create a new file and write into that (see comment below).
5045    #[prost(bool, optional, tag = "8")]
5046    pub write_into_file: ::core::option::Option<bool>,
5047    /// This must point to a non-existing file. If the file exists the service
5048    /// will NOT overwrite and will fail instead as a security precaution.
5049    /// On Android, when this is used with the system traced, the path must be
5050    /// within /data/misc/perfetto-traces/ or the trace will fail.
5051    /// This option has been introduced in Android R. Before R write_into_file
5052    /// can be used only with the "pass a file descriptor over IPC" mode.
5053    #[prost(string, optional, tag = "29")]
5054    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
5055    /// Optional. If non-zero tunes the write period. A min value of 100ms is
5056    /// enforced (i.e. smaller values are ignored).
5057    #[prost(uint32, optional, tag = "9")]
5058    pub file_write_period_ms: ::core::option::Option<u32>,
5059    /// Optional. When non zero the periodic write stops once at most X bytes
5060    /// have been written into the file. Tracing is disabled when this limit is
5061    /// reached, even if |duration_ms| has not been reached yet.
5062    #[prost(uint64, optional, tag = "10")]
5063    pub max_file_size_bytes: ::core::option::Option<u64>,
5064    #[prost(message, optional, tag = "11")]
5065    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
5066    /// When true, data sources are not started until an explicit call to
5067    /// StartTracing() on the consumer port. This is to support early
5068    /// initialization and fast trace triggering. This can be used only when the
5069    /// Consumer explicitly triggers the StartTracing() method.
5070    /// This should not be used in a remote trace config via statsd, doing so will
5071    /// result in a hung trace session.
5072    #[prost(bool, optional, tag = "12")]
5073    pub deferred_start: ::core::option::Option<bool>,
5074    /// When set, it periodically issues a Flush() to all data source, forcing them
5075    /// to commit their data into the tracing service. This can be used for
5076    /// quasi-real-time streaming mode and to guarantee some partial ordering of
5077    /// events in the trace in windows of X ms.
5078    ///
5079    /// Warning: Perfetto automatically handles periodic flushing so in most
5080    /// scenarios setting this field is not needed. High frequency flushing can
5081    /// significantly impact performance.
5082    #[prost(uint32, optional, tag = "13")]
5083    pub flush_period_ms: ::core::option::Option<u32>,
5084    /// Wait for this long for producers to acknowledge flush requests.
5085    /// Default 5s.
5086    #[prost(uint32, optional, tag = "14")]
5087    pub flush_timeout_ms: ::core::option::Option<u32>,
5088    /// Wait for this long for producers to acknowledge stop requests.
5089    /// Default 5s.
5090    #[prost(uint32, optional, tag = "23")]
5091    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
5092    /// Android-only. If set, sends an intent to the Traceur system app when the
5093    /// trace ends to notify it about the trace readiness.
5094    #[prost(bool, optional, tag = "16")]
5095    pub notify_traceur: ::core::option::Option<bool>,
5096    /// This field was introduced in Android S.
5097    /// Android-only. If set to a value > 0, marks the trace session as a candidate
5098    /// for being attached to a bugreport. This field effectively acts as a z-index
5099    /// for bugreports. When Android's dumpstate runs perfetto
5100    /// --save-for-bugreport, traced will pick the tracing session with the highest
5101    /// score (score <= 0 is ignored) and:
5102    /// On Android S, T:  will steal its contents, save the trace into
5103    ///      a known path and stop prematurely.
5104    /// On Android U+: will create a read-only snapshot and save that into a known
5105    ///      path, without stoppin the original tracing session.
5106    /// When this field is set the tracing session becomes eligible to be cloned
5107    /// by other UIDs.
5108    #[prost(int32, optional, tag = "30")]
5109    pub bugreport_score: ::core::option::Option<i32>,
5110    /// When set, defines name of the file that will be saved under
5111    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
5112    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
5113    /// starting from the highest `bugreport_score`.
5114    /// Introduced in v42 / Android V.
5115    #[prost(string, optional, tag = "38")]
5116    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
5117    #[prost(message, optional, tag = "17")]
5118    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
5119    /// When this is non-empty the perfetto command line tool will ignore the rest
5120    /// of this TraceConfig and instead connect to the perfetto service as a
5121    /// producer and send these triggers, potentially stopping or starting traces
5122    /// that were previous configured to use a TriggerConfig.
5123    #[prost(string, repeated, tag = "18")]
5124    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5125    #[prost(message, optional, tag = "21")]
5126    pub incremental_state_config: ::core::option::Option<
5127        trace_config::IncrementalStateConfig,
5128    >,
5129    /// No longer needed as we unconditionally allow tracing on user builds.
5130    #[deprecated]
5131    #[prost(bool, optional, tag = "19")]
5132    pub allow_user_build_tracing: ::core::option::Option<bool>,
5133    /// If set the tracing service will ensure there is at most one tracing session
5134    /// with this key.
5135    #[prost(string, optional, tag = "22")]
5136    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
5137    #[deprecated]
5138    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
5139    pub compression_type: ::core::option::Option<i32>,
5140    #[prost(message, optional, tag = "47")]
5141    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
5142    #[prost(message, optional, tag = "25")]
5143    pub incident_report_config: ::core::option::Option<
5144        trace_config::IncidentReportConfig,
5145    >,
5146    /// Android-only. Not for general use. If specified, sets the logging to statsd
5147    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
5148    /// this to enabled (if not explicitly set in the config) when specifying
5149    /// --upload.
5150    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
5151    pub statsd_logging: ::core::option::Option<i32>,
5152    /// An identifier clients can use to tie this trace to other logging.
5153    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
5154    /// Trace UUID. If this field is set, the tracing service will respect the
5155    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
5156    /// gap-less snapshotting is not used.
5157    #[deprecated]
5158    #[prost(int64, optional, tag = "27")]
5159    pub trace_uuid_msb: ::core::option::Option<i64>,
5160    #[deprecated]
5161    #[prost(int64, optional, tag = "28")]
5162    pub trace_uuid_lsb: ::core::option::Option<i64>,
5163    #[prost(message, optional, tag = "33")]
5164    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
5165    #[prost(message, optional, tag = "34")]
5166    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
5167    #[prost(message, optional, tag = "35")]
5168    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
5169    #[prost(message, repeated, tag = "39")]
5170    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
5171    /// Priority boost to be applied to the traced process, when the session is
5172    /// running.
5173    #[prost(message, optional, tag = "40")]
5174    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
5175    /// When set to a value > 0, this tracing session will be started in
5176    /// "exclusive mode". This has the following semantics:
5177    /// - It can only be set by shell or root users.
5178    /// - A new exclusive session will only be started if its priority is strictly
5179    ///    higher than any other active tracing session.
5180    /// - If a new exclusive session is started, all other existing tracing
5181    ///    sessions (exclusive or not) are aborted.
5182    /// - While an exclusive session is active, any new non-exclusive session (or
5183    ///    any exclusive session with a lower or equal priority) will be rejected.
5184    ///
5185    /// Introduced in: perfetto v52.
5186    /// Supported on: Android 25Q3+.
5187    #[prost(uint32, optional, tag = "41")]
5188    pub exclusive_prio: ::core::option::Option<u32>,
5189    /// Configures how the service should handle flushing data from producers
5190    /// before periodically writing the trace into the output file.
5191    /// Only applicable when |write_into_file| is true.
5192    ///
5193    /// By default, if |write_into_file| is set, the service periodically issues
5194    /// a Flush() to all data sources before writing buffers into the file.
5195    /// This ensures the file always contains the latest available data.
5196    ///
5197    /// Introduced in: perfetto v54.
5198    /// Supported on: Android 26Q1+.
5199    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
5200    pub write_flush_mode: ::core::option::Option<i32>,
5201    /// Whether to sync the output file to storage after each periodic write pass.
5202    /// Only applicable when |write_into_file| is true.
5203    ///
5204    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
5205    /// sync to storage on every write.
5206    ///
5207    /// Introduced in: perfetto v54.
5208    /// Supported on: Android 26Q1+.
5209    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
5210    pub fflush_post_write: ::core::option::Option<i32>,
5211    /// When true, data sources in remote producers (machines connected via
5212    /// traced_relay) will be matched by default. When false (the default), data
5213    /// sources only match the host machine. In either case, an explicit
5214    /// |DataSource.machine_name_filter| takes priority.
5215    ///
5216    /// NB: perfetto versions before v54 do not have this option and match across
5217    /// machines by default. To be compatible across this version boundary, either
5218    /// set this field to true, or set an explicit machine_name_filter on all data
5219    /// sources.
5220    ///
5221    /// Introduced in: perfetto v54.
5222    #[prost(bool, optional, tag = "43")]
5223    pub trace_all_machines: ::core::option::Option<bool>,
5224    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
5225    /// into it and surfaced by trace_processor in the `metadata` table (see
5226    /// common/trace_attributes.proto). Typically set via
5227    /// `perfetto --add-attribute key=value`.
5228    ///
5229    /// Introduced in: perfetto v58.
5230    #[prost(message, optional, tag = "48")]
5231    pub trace_attributes: ::core::option::Option<TraceAttributes>,
5232    /// Android-only. Not for general use. If set to true, writes trace chunks to a
5233    /// persistent file
5234    /// (/data/misc/perfetto-traces/persistent/$unique_session_name.tmp) that
5235    /// survives device reboots (e.g. during OTA updates or battery depletion).
5236    ///
5237    /// Introduced in: perfetto v59.
5238    /// Supported on: Android 26Q4+.
5239    #[prost(bool, optional, tag = "49")]
5240    pub persist_trace_across_reboots: ::core::option::Option<bool>,
5241}
5242/// Nested message and enum types in `TraceConfig`.
5243pub mod trace_config {
5244    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5245    pub struct BufferConfig {
5246        #[prost(uint32, optional, tag = "1")]
5247        pub size_kb: ::core::option::Option<u32>,
5248        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
5249        pub fill_policy: ::core::option::Option<i32>,
5250        /// When true the buffer is moved (rather than copied) onto the cloned
5251        /// session, and an empty buffer of the same size is allocated in the source
5252        /// tracing session. This feature will likely get deprecated in the future.
5253        /// It been introduced mainly to support the surfaceflinger snapshot dump
5254        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
5255        /// that case we don't want to retain another in-memory copy of the buffer.
5256        #[prost(bool, optional, tag = "5")]
5257        pub transfer_on_clone: ::core::option::Option<bool>,
5258        /// Used in conjunction with transfer_on_clone. When true the buffer is
5259        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
5260        /// that if the data source took too long to write the data in a previous
5261        /// clone-related flush, we don't end up with a mixture of leftovers from
5262        /// the previous write and new data.
5263        #[prost(bool, optional, tag = "6")]
5264        pub clear_before_clone: ::core::option::Option<bool>,
5265        /// Optional name for this buffer. If set, data sources can reference this
5266        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
5267        /// using the buffer index. Buffer names must be unique within a tracing
5268        /// session. This provides a more human-readable and less error-prone way to
5269        /// configure which buffer a data source writes to.
5270        #[prost(string, optional, tag = "7")]
5271        pub name: ::core::option::Option<::prost::alloc::string::String>,
5272        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
5273        pub experimental_mode: ::core::option::Option<i32>,
5274    }
5275    /// Nested message and enum types in `BufferConfig`.
5276    pub mod buffer_config {
5277        #[derive(
5278            Clone,
5279            Copy,
5280            Debug,
5281            PartialEq,
5282            Eq,
5283            Hash,
5284            PartialOrd,
5285            Ord,
5286            ::prost::Enumeration
5287        )]
5288        #[repr(i32)]
5289        pub enum FillPolicy {
5290            Unspecified = 0,
5291            /// Default behavior. The buffer operates as a conventional ring buffer.
5292            /// If the writer is faster than the reader (or if the reader reads only
5293            /// after tracing is stopped) newly written packets will overwrite old
5294            /// packets.
5295            RingBuffer = 1,
5296            /// Behaves like RING_BUFFER as long as there is space in the buffer or
5297            /// the reader catches up with the writer. As soon as the writer hits
5298            /// an unread chunk, it stops accepting new data in the buffer.
5299            Discard = 2,
5300        }
5301        impl FillPolicy {
5302            /// String value of the enum field names used in the ProtoBuf definition.
5303            ///
5304            /// The values are not transformed in any way and thus are considered stable
5305            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5306            pub fn as_str_name(&self) -> &'static str {
5307                match self {
5308                    Self::Unspecified => "UNSPECIFIED",
5309                    Self::RingBuffer => "RING_BUFFER",
5310                    Self::Discard => "DISCARD",
5311                }
5312            }
5313            /// Creates an enum from field names used in the ProtoBuf definition.
5314            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5315                match value {
5316                    "UNSPECIFIED" => Some(Self::Unspecified),
5317                    "RING_BUFFER" => Some(Self::RingBuffer),
5318                    "DISCARD" => Some(Self::Discard),
5319                    _ => None,
5320                }
5321            }
5322        }
5323        /// When true, uses the experimental TraceBufferV2 implementation for this
5324        /// buffer. This is for testing purposes only and may be removed in future
5325        /// versions.
5326        #[derive(
5327            Clone,
5328            Copy,
5329            Debug,
5330            PartialEq,
5331            Eq,
5332            Hash,
5333            PartialOrd,
5334            Ord,
5335            ::prost::Enumeration
5336        )]
5337        #[repr(i32)]
5338        pub enum ExperimentalMode {
5339            /// Use the default V1 implementation.
5340            ModeUnspecified = 0,
5341            /// Use TraceBufferV2.
5342            TraceBufferV2 = 1,
5343        }
5344        impl ExperimentalMode {
5345            /// String value of the enum field names used in the ProtoBuf definition.
5346            ///
5347            /// The values are not transformed in any way and thus are considered stable
5348            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5349            pub fn as_str_name(&self) -> &'static str {
5350                match self {
5351                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
5352                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
5353                }
5354            }
5355            /// Creates an enum from field names used in the ProtoBuf definition.
5356            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5357                match value {
5358                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
5359                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
5360                    _ => None,
5361                }
5362            }
5363        }
5364    }
5365    #[derive(Clone, PartialEq, ::prost::Message)]
5366    pub struct DataSource {
5367        /// Filters and data-source specific config. It contains also the unique name
5368        /// of the data source, the one passed in the  DataSourceDescriptor when they
5369        /// register on the service.
5370        #[prost(message, optional, tag = "1")]
5371        pub config: ::core::option::Option<super::DataSourceConfig>,
5372        /// Optional. If multiple producers (~processes) expose the same data source
5373        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
5374        /// the data source is enabled only for producers whose names match any of
5375        /// the filters.
5376        /// |producer_name_filter| has to be an exact match, while
5377        /// |producer_name_regex_filter| is a regular expression.
5378        /// This allows to enable a data source only for specific processes.
5379        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
5380        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
5381        #[prost(string, repeated, tag = "2")]
5382        pub producer_name_filter: ::prost::alloc::vec::Vec<
5383            ::prost::alloc::string::String,
5384        >,
5385        #[prost(string, repeated, tag = "3")]
5386        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
5387            ::prost::alloc::string::String,
5388        >,
5389        /// Filter by machine names. The name of a machine is determined by the
5390        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
5391        /// variable is not set then the
5392        /// persist.traced_relay.machine_name system property is used. If the
5393        /// sysprop isn't set or not in an Android system, then the machine name by
5394        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
5395        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
5396        /// to the host machine, which is the machine running traced.
5397        #[prost(string, repeated, tag = "4")]
5398        pub machine_name_filter: ::prost::alloc::vec::Vec<
5399            ::prost::alloc::string::String,
5400        >,
5401    }
5402    /// Config for disabling builtin data sources in the tracing service.
5403    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5404    pub struct BuiltinDataSource {
5405        /// Disable emitting clock timestamps into the trace.
5406        #[prost(bool, optional, tag = "1")]
5407        pub disable_clock_snapshotting: ::core::option::Option<bool>,
5408        /// Disable echoing the original trace config in the trace.
5409        #[prost(bool, optional, tag = "2")]
5410        pub disable_trace_config: ::core::option::Option<bool>,
5411        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
5412        #[prost(bool, optional, tag = "3")]
5413        pub disable_system_info: ::core::option::Option<bool>,
5414        /// Disable emitting events for data-source state changes (e.g. the marker
5415        /// for all data sources having ACKed the start of the trace).
5416        #[prost(bool, optional, tag = "4")]
5417        pub disable_service_events: ::core::option::Option<bool>,
5418        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
5419        /// also ClockSnapshot's primary_trace_clock. The configured value is written
5420        /// into the trace as part of the ClockSnapshots emitted by the service.
5421        /// Trace processor will attempt to translate packet/event timestamps from
5422        /// various data sources (and their chosen clock domains) to this domain
5423        /// during import. Added in Android R.
5424        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
5425        pub primary_trace_clock: ::core::option::Option<i32>,
5426        /// Time interval in between snapshotting of sync markers, clock snapshots,
5427        /// stats, and other periodic service-emitted events. Note that the service
5428        /// only keeps track of the first and the most recent snapshot until
5429        /// ReadBuffers() is called.
5430        #[prost(uint32, optional, tag = "6")]
5431        pub snapshot_interval_ms: ::core::option::Option<u32>,
5432        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
5433        /// clock should be used for periodic snapshots of service-emitted events.
5434        /// This means, if a snapshot *should* have happened during suspend, it will
5435        /// happen immediately after the device resumes.
5436        ///
5437        /// Choosing a clock like this is done on best-effort basis; not all
5438        /// platforms (e.g. Windows) expose a clock which can be used for periodic
5439        /// tasks counting suspend. If such a clock is not available, the service
5440        /// falls back to the best-available alternative.
5441        ///
5442        /// Introduced in Android S.
5443        /// TODO(lalitm): deprecate this in T and make this the default if nothing
5444        /// crashes in S.
5445        #[prost(bool, optional, tag = "7")]
5446        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
5447        /// Disables the reporting of per-trace-writer histograms in TraceStats.
5448        #[prost(bool, optional, tag = "8")]
5449        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
5450        /// Disable emitting extension descriptors into the trace.
5451        #[prost(bool, optional, tag = "9")]
5452        pub disable_extension_descriptors: ::core::option::Option<bool>,
5453        /// Emit state changes of other tracing sessions running concurrently
5454        /// with this one (see ConcurrentSessionEvent).
5455        ///
5456        /// Introduced in v58 / Android 26Q3+.
5457        #[prost(bool, optional, tag = "10")]
5458        pub enable_concurrent_session_events: ::core::option::Option<bool>,
5459    }
5460    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5461    pub struct ProducerConfig {
5462        /// Identifies the producer for which this config is for.
5463        #[prost(string, optional, tag = "1")]
5464        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
5465        /// Specifies the preferred size of the shared memory buffer. If the size is
5466        /// larger than the max size, the max will be used. If it is smaller than
5467        /// the page size or doesn't fit pages evenly into it, it will fall back to
5468        /// the size specified by the producer or finally the default shared memory
5469        /// size.
5470        #[prost(uint32, optional, tag = "2")]
5471        pub shm_size_kb: ::core::option::Option<u32>,
5472        /// Specifies the preferred size of each page in the shared memory buffer.
5473        /// Must be an integer multiple of 4K.
5474        #[prost(uint32, optional, tag = "3")]
5475        pub page_size_kb: ::core::option::Option<u32>,
5476    }
5477    /// Contains statsd-specific metadata about an alert associated with the trace.
5478    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5479    pub struct StatsdMetadata {
5480        /// The identifier of the alert which triggered this trace.
5481        #[prost(int64, optional, tag = "1")]
5482        pub triggering_alert_id: ::core::option::Option<i64>,
5483        /// The uid which registered the triggering configuration with statsd.
5484        #[prost(int32, optional, tag = "2")]
5485        pub triggering_config_uid: ::core::option::Option<i32>,
5486        /// The identifier of the config which triggered the alert.
5487        #[prost(int64, optional, tag = "3")]
5488        pub triggering_config_id: ::core::option::Option<i64>,
5489        /// The identifier of the subscription which triggered this trace.
5490        #[prost(int64, optional, tag = "4")]
5491        pub triggering_subscription_id: ::core::option::Option<i64>,
5492    }
5493    /// Contains flags which override the default values of the guardrails inside
5494    /// Perfetto.
5495    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5496    pub struct GuardrailOverrides {
5497        /// Override the default limit (in bytes) for uploading data to server within
5498        /// a 24 hour period.
5499        /// On R-, this override only affected userdebug builds. Since S, it also
5500        /// affects user builds.
5501        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
5502        /// was removed from Perfetto.
5503        #[deprecated]
5504        #[prost(uint64, optional, tag = "1")]
5505        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
5506        /// Overrides the guardrail for maximum trace buffer size.
5507        /// Available on U+
5508        #[prost(uint32, optional, tag = "2")]
5509        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
5510    }
5511    /// Triggers allow producers to start or stop the tracing session when an event
5512    /// occurs.
5513    ///
5514    /// For example if we are tracing probabilistically, most traces will be
5515    /// uninteresting. Triggers allow us to keep only the interesting ones such as
5516    /// those traces during which the device temperature reached a certain
5517    /// threshold. In this case the producer can activate a trigger to keep
5518    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
5519    /// (START_TRACING) because it knows something is about to happen.
5520    #[derive(Clone, PartialEq, ::prost::Message)]
5521    pub struct TriggerConfig {
5522        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
5523        pub trigger_mode: ::core::option::Option<i32>,
5524        /// This flag is really a workaround for b/274931668. This is needed only
5525        /// when deploying configs to different versions of the tracing service.
5526        /// When this is set to true this has the same effect of setting trigger_mode
5527        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
5528        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
5529        /// versions of Android and fall back to STOP_TRACING on older versions where
5530        /// CLONE_SNAPSHOT did not exist.
5531        /// When using this flag, trigger_mode must be set to STOP_TRACING.
5532        #[prost(bool, optional, tag = "5")]
5533        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
5534        /// A list of triggers which are related to this configuration. If ANY
5535        /// trigger is seen then an action will be performed based on |trigger_mode|.
5536        #[prost(message, repeated, tag = "2")]
5537        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
5538        /// Required and must be positive if a TriggerConfig is specified. This is
5539        /// how long this TraceConfig should wait for a trigger to arrive. After this
5540        /// period of time if no trigger is seen the TracingSession will be cleaned
5541        /// up.
5542        #[prost(uint32, optional, tag = "3")]
5543        pub trigger_timeout_ms: ::core::option::Option<u32>,
5544    }
5545    /// Nested message and enum types in `TriggerConfig`.
5546    pub mod trigger_config {
5547        #[derive(Clone, PartialEq, ::prost::Message)]
5548        pub struct Trigger {
5549            /// The producer must specify this name to activate the trigger.
5550            #[prost(string, optional, tag = "1")]
5551            pub name: ::core::option::Option<::prost::alloc::string::String>,
5552            /// An std::regex that will match the producer that can activate this
5553            /// trigger. This is optional. If unset any producers can activate this
5554            /// trigger.
5555            #[prost(string, optional, tag = "2")]
5556            pub producer_name_regex: ::core::option::Option<
5557                ::prost::alloc::string::String,
5558            >,
5559            /// After a trigger is received either in START_TRACING or STOP_TRACING
5560            /// mode then the trace will end |stop_delay_ms| after triggering.
5561            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
5562            /// snapshot.
5563            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
5564            /// based on wall-clock, counting also time in suspend.
5565            #[prost(uint32, optional, tag = "3")]
5566            pub stop_delay_ms: ::core::option::Option<u32>,
5567            /// Limits the number of traces this trigger can start/stop in a rolling
5568            /// 24 hour window. If this field is unset or zero, no limit is applied and
5569            /// activiation of this trigger *always* starts/stops the trace.
5570            #[prost(uint32, optional, tag = "4")]
5571            pub max_per_24_h: ::core::option::Option<u32>,
5572            /// A value between 0 and 1 which encodes the probability of skipping a
5573            /// trigger with this name. This is useful for reducing the probability
5574            /// of high-frequency triggers from dominating trace finaization. If this
5575            /// field is unset or zero, the trigger will *never* be skipped. If this
5576            /// field is greater than or equal to 1, this trigger will *always* be
5577            /// skipped i.e. it will be as if this trigger was never included in the
5578            /// first place.
5579            /// This probability check is applied *before* any other limits. For
5580            /// example, if |max_per_24_h| is also set, first we will check if the
5581            /// probability bar is met and only then will we check the |max_per_24_h|
5582            /// limit.
5583            #[prost(double, optional, tag = "5")]
5584            pub skip_probability: ::core::option::Option<f64>,
5585        }
5586        #[derive(
5587            Clone,
5588            Copy,
5589            Debug,
5590            PartialEq,
5591            Eq,
5592            Hash,
5593            PartialOrd,
5594            Ord,
5595            ::prost::Enumeration
5596        )]
5597        #[repr(i32)]
5598        pub enum TriggerMode {
5599            Unspecified = 0,
5600            /// When this mode is chosen, data sources are not started until one of the
5601            /// |triggers| are received. This supports early initialization and fast
5602            /// starting of the tracing system. On triggering, the session will then
5603            /// record for |stop_delay_ms|. However if no trigger is seen
5604            /// after |trigger_timeout_ms| the session will be stopped and no data will
5605            /// be returned.
5606            StartTracing = 1,
5607            /// When this mode is chosen, the session will be started via the normal
5608            /// EnableTracing() & StartTracing(). If no trigger is ever seen
5609            /// the session will be stopped after |trigger_timeout_ms| and no data will
5610            /// be returned. However if triggered the trace will stop after
5611            /// |stop_delay_ms| and any data in the buffer will be returned to the
5612            /// consumer.
5613            StopTracing = 2,
5614            /// When this mode is chosen, this causes a snapshot of the current tracing
5615            /// session to be created after |stop_delay_ms| while the current tracing
5616            /// session continues undisturbed (% an extra flush). This mode can be
5617            /// used only when the tracing session is handled by the "perfetto" cmdline
5618            /// client (which is true in 90% of cases). Part of the business logic
5619            /// necessary for this behavior, and ensuing file handling, lives in
5620            /// perfetto_cmd.cc . On other consumers, this causes only a notification
5621            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
5622            /// consumer is supposed to call CloneSession() itself after the event.
5623            /// Use use_clone_snapshot_if_available=true when targeting older versions
5624            /// of perfetto.
5625            CloneSnapshot = 4,
5626        }
5627        impl TriggerMode {
5628            /// String value of the enum field names used in the ProtoBuf definition.
5629            ///
5630            /// The values are not transformed in any way and thus are considered stable
5631            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5632            pub fn as_str_name(&self) -> &'static str {
5633                match self {
5634                    Self::Unspecified => "UNSPECIFIED",
5635                    Self::StartTracing => "START_TRACING",
5636                    Self::StopTracing => "STOP_TRACING",
5637                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
5638                }
5639            }
5640            /// Creates an enum from field names used in the ProtoBuf definition.
5641            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5642                match value {
5643                    "UNSPECIFIED" => Some(Self::Unspecified),
5644                    "START_TRACING" => Some(Self::StartTracing),
5645                    "STOP_TRACING" => Some(Self::StopTracing),
5646                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
5647                    _ => None,
5648                }
5649            }
5650        }
5651    }
5652    /// Configuration for trace contents that reference earlier trace data. For
5653    /// example, a data source might intern strings, and emit packets containing
5654    /// {interned id : string} pairs. Future packets from that data source can then
5655    /// use the interned ids instead of duplicating the raw string contents. The
5656    /// trace parser will then need to use that interning table to fully interpret
5657    /// the rest of the trace.
5658    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5659    pub struct IncrementalStateConfig {
5660        /// If nonzero, notify eligible data sources to clear their incremental state
5661        /// periodically, with the given period. The notification is sent only to
5662        /// data sources that have |handles_incremental_state_clear| set in their
5663        /// DataSourceDescriptor. The notification requests that the data source
5664        /// stops referring to past trace contents. This is particularly useful when
5665        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
5666        /// trace data.
5667        ///
5668        /// Warning: this time-based global clearing is likely to be removed in the
5669        /// future, to be replaced with a smarter way of sending the notifications
5670        /// only when necessary.
5671        #[prost(uint32, optional, tag = "1")]
5672        pub clear_period_ms: ::core::option::Option<u32>,
5673    }
5674    /// Selects and configures the compression codec, superseding
5675    /// |compression_type|. The codec is chosen by which sub-message is set; when
5676    /// several are set the service picks the highest-numbered one it supports and
5677    /// ignores codecs it doesn't know, so a single config can target old and new
5678    /// services. Falls back to |compression_type| (deflate-only), if given.
5679    ///
5680    /// Introduced in: perfetto v58.
5681    /// Supported on: Android 26Q3+.
5682    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5683    pub struct CompressionConfig {
5684        /// If a config sets more than one of these, the service picks the one with
5685        /// the highest field number (see the rule above): e.g. with deflate (1) and
5686        /// zstd (2) both set, zstd wins.
5687        #[prost(message, optional, tag = "1")]
5688        pub deflate: ::core::option::Option<compression_config::Deflate>,
5689        #[prost(message, optional, tag = "2")]
5690        pub zstd: ::core::option::Option<compression_config::Zstd>,
5691    }
5692    /// Nested message and enum types in `CompressionConfig`.
5693    pub mod compression_config {
5694        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
5695        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5696        pub struct Deflate {}
5697        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5698        pub struct Zstd {
5699            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
5700            /// default (3). Levels above the max are clamped; negatives are valid
5701            /// faster, lower-ratio modes.
5702            #[prost(int32, optional, tag = "1")]
5703            pub level: ::core::option::Option<i32>,
5704        }
5705    }
5706    /// Android-only. Not for general use. If set, saves the trace into an
5707    /// incident. This field is read by perfetto_cmd, rather than the tracing
5708    /// service. This field must be set when passing the --upload flag to
5709    /// perfetto_cmd.
5710    ///
5711    /// In this message, either:
5712    ///   * all of |destination_package|, |destination_class| and |privacy_level|
5713    ///     must be set.
5714    ///   * |skip_incidentd| must be explicitly set to true.
5715    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5716    pub struct IncidentReportConfig {
5717        #[prost(string, optional, tag = "1")]
5718        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
5719        #[prost(string, optional, tag = "2")]
5720        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
5721        /// Level of filtering in the requested incident. See |Destination| in
5722        /// frameworks/base/core/proto/android/privacy.proto.
5723        #[prost(int32, optional, tag = "3")]
5724        pub privacy_level: ::core::option::Option<i32>,
5725        /// If true, then skips saving the trace to incidentd.
5726        ///
5727        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5728        /// or when we explicitly don't want traces to go to incidentd even when they
5729        /// usually would (e.g. configs deployed using statsd but only used for
5730        /// inclusion in bugreports using |bugreport_score|).
5731        ///
5732        /// The motivation for having this flag, instead of just not setting
5733        /// |incident_report_config|, is prevent accidents where
5734        /// |incident_report_config| is omitted by mistake.
5735        #[prost(bool, optional, tag = "5")]
5736        pub skip_incidentd: ::core::option::Option<bool>,
5737        /// If true, do not write the trace into dropbox (i.e. incident only).
5738        /// Otherwise, write to both dropbox and incident.
5739        /// TODO(lalitm): remove this field as we no longer use Dropbox.
5740        #[deprecated]
5741        #[prost(bool, optional, tag = "4")]
5742        pub skip_dropbox: ::core::option::Option<bool>,
5743    }
5744    /// When set applies a post-filter to the trace contents using the filter
5745    /// provided. The filter is applied at ReadBuffers() time and works both in the
5746    /// case of IPC readback and write_into_file. This filter can be generated
5747    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
5748    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
5749    /// design.
5750    ///
5751    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
5752    /// Android T with a different field number. Updated in Android U with a new
5753    /// bytecode version which supports string filtering.
5754    ///
5755    /// =========================
5756    /// Filter bytecode.
5757    /// =========================
5758    #[derive(Clone, PartialEq, ::prost::Message)]
5759    pub struct TraceFilter {
5760        /// The bytecode as implemented in Android T.
5761        #[prost(bytes = "vec", optional, tag = "1")]
5762        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5763        /// The bytecode as implemented in Android U. Adds support for string
5764        /// filtering.
5765        #[prost(bytes = "vec", optional, tag = "2")]
5766        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5767        #[prost(message, optional, tag = "3")]
5768        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
5769        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
5770        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
5771        /// versions ignore this field; new versions apply it.
5772        ///
5773        /// The motivation for this is that adding new opcodes in a backwards
5774        /// compatible way while also minimizing config size is hard. Instead, the
5775        /// overlay mechanism allows us to "patch" specific fields in the original
5776        /// bytecode_v2 with new semantics.
5777        ///
5778        /// See RFC 0011-subset-string-filter-rules.md for more info.
5779        ///
5780        /// Note:
5781        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
5782        /// markers), this overlay uses a triplet format with explicit indices:
5783        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
5784        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
5785        /// Entries must be sorted by (msg_index, field_id).
5786        ///
5787        /// The parser processes bytecode_v2 and this overlay simultaneously:
5788        ///   - any field not mentioned in the overlay is parsed as usual
5789        ///   - any field in the overlay but *not* in the bytecode_v2 is added
5790        ///     with its overlay value
5791        ///   - any field in both the overlay and bytecode_v2 takes the value in the
5792        ///     overlay, the bytecode_v2 value is ignored.
5793        ///
5794        /// Note: despite the name, this was broken in v54 (the overlay was not
5795        /// passed through to the bytecode parser). Only works in v55+.
5796        #[prost(bytes = "vec", optional, tag = "4")]
5797        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5798        /// String filter chain for Perfetto v54+. Rules in this chain either
5799        /// overwrite rules in string_filter_chain (if the name matches) or are
5800        /// appended (if the name doesn't match). This allows modifying existing
5801        /// rules (e.g., changing policy) without duplicating the entire chain.
5802        /// Rules without a name are always appended.
5803        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5804        /// Introduced in: Perfetto v54.
5805        #[prost(message, optional, tag = "5")]
5806        pub string_filter_chain_v54: ::core::option::Option<
5807            trace_filter::StringFilterChain,
5808        >,
5809    }
5810    /// Nested message and enum types in `TraceFilter`.
5811    pub mod trace_filter {
5812        /// A rule specifies how strings should be filtered.
5813        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5814        pub struct StringFilterRule {
5815            /// The policy (i.e. algorithm) dictating how strings matching this rule
5816            /// should be handled.
5817            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
5818            pub policy: ::core::option::Option<i32>,
5819            /// The regex pattern used to match against each string.
5820            #[prost(string, optional, tag = "2")]
5821            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
5822            /// The string which should appear after the tgid in atrace tracepoint
5823            /// strings.
5824            #[prost(string, optional, tag = "3")]
5825            pub atrace_payload_starts_with: ::core::option::Option<
5826                ::prost::alloc::string::String,
5827            >,
5828            /// Optional name for the rule. When merging chains (e.g. via
5829            /// string_filter_chain_v54), rules with matching names in the newer chain
5830            /// will overwrite rules in the base chain. Rules without a name (empty or
5831            /// unset) are always treated as distinct and will be appended.
5832            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5833            /// Introduced in: Perfetto v54.
5834            #[prost(string, optional, tag = "4")]
5835            pub name: ::core::option::Option<::prost::alloc::string::String>,
5836            /// The semantic types this rule applies to.
5837            ///
5838            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
5839            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
5840            /// - If non-empty, the rule applies only to fields whose semantic type
5841            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
5842            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
5843            ///
5844            /// Examples:
5845            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
5846            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
5847            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
5848            ///
5849            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5850            /// Introduced in: Perfetto v54.
5851            #[prost(
5852                enumeration = "super::super::SemanticType",
5853                repeated,
5854                packed = "false",
5855                tag = "5"
5856            )]
5857            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
5858        }
5859        /// A chain is a list of rules which string will be sequentially checked
5860        /// against.
5861        #[derive(Clone, PartialEq, ::prost::Message)]
5862        pub struct StringFilterChain {
5863            #[prost(message, repeated, tag = "1")]
5864            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
5865        }
5866        /// A policy specifies which algorithm should be used for filtering the
5867        /// string.
5868        #[derive(
5869            Clone,
5870            Copy,
5871            Debug,
5872            PartialEq,
5873            Eq,
5874            Hash,
5875            PartialOrd,
5876            Ord,
5877            ::prost::Enumeration
5878        )]
5879        #[repr(i32)]
5880        pub enum StringFilterPolicy {
5881            SfpUnspecified = 0,
5882            /// Tries to match the string field against |regex_pattern|. If it
5883            /// matches, all matching groups are "redacted" (i.e. replaced with a
5884            /// constant string) and filtering is terminated (i.e. no further rules are
5885            /// checked). If it doesn't match, the string is left unchanged and the
5886            /// next rule in chain is considered.
5887            SfpMatchRedactGroups = 1,
5888            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
5889            /// checking the regex. Specifically, it tries to parse the string field as
5890            /// an atrace tracepoint and checks if the post-tgid field starts with
5891            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5892            /// this check succeeds.
5893            SfpAtraceMatchRedactGroups = 2,
5894            /// Tries to match the string field against |regex_pattern|. If it
5895            /// matches, filtering is terminated (i.e. no further rules are checked).
5896            /// If it doesn't match, the string is left unchanged and the next rule in
5897            /// chain is considered.
5898            SfpMatchBreak = 3,
5899            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
5900            /// the regex. Specifically, it tries to parse the string field as an
5901            /// atrace tracepoint and checks if the post-tgid field starts with
5902            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5903            /// this check succeeds.
5904            SfpAtraceMatchBreak = 4,
5905            /// Tries to repeatedly search (i.e. find substrings of) the string field
5906            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
5907            /// replaced with a constant string). Once there are no further matches,
5908            /// filtering is terminated (i.e. no further rules are checked).
5909            ///
5910            /// Note that this is policy is a "search" policy not a "match" policy
5911            /// unlike the above policies:
5912            ///   * Match policies require matching the full string i.e. there is an
5913            ///     implicit leading `^` and trailing `$`.
5914            ///   * Search policies perform repeated partial matching of the string
5915            ///     e.g.
5916            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
5917            ///       - Pattern: `foo=(\d+)`
5918            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
5919            ///     where P6O is the redaction string
5920            ///
5921            /// All of this is only performed after some pre-work where we try to parse
5922            /// the string field as an atrace tracepoint and check if the post-tgid
5923            /// field starts with |atrace_post_tgid_starts_with|.
5924            ///
5925            /// If there are no partial matches, the string is left unchanged and the
5926            /// next rule in chain is considered.
5927            SfpAtraceRepeatedSearchRedactGroups = 5,
5928        }
5929        impl StringFilterPolicy {
5930            /// String value of the enum field names used in the ProtoBuf definition.
5931            ///
5932            /// The values are not transformed in any way and thus are considered stable
5933            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5934            pub fn as_str_name(&self) -> &'static str {
5935                match self {
5936                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
5937                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
5938                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
5939                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
5940                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
5941                    Self::SfpAtraceRepeatedSearchRedactGroups => {
5942                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
5943                    }
5944                }
5945            }
5946            /// Creates an enum from field names used in the ProtoBuf definition.
5947            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5948                match value {
5949                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
5950                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
5951                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
5952                        Some(Self::SfpAtraceMatchRedactGroups)
5953                    }
5954                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
5955                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
5956                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
5957                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
5958                    }
5959                    _ => None,
5960                }
5961            }
5962        }
5963    }
5964    /// Android-only. Not for general use. If set, reports the trace to the
5965    /// Android framework. This field is read by perfetto_cmd, rather than the
5966    /// tracing service. This field must be set when passing the --upload flag to
5967    /// perfetto_cmd.
5968    ///
5969    /// In this message, either:
5970    ///   * |reporter_service_package| and |reporter_service_class| must be set.
5971    ///   * |skip_reporting| must be explicitly set to true.
5972    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5973    pub struct AndroidReportConfig {
5974        #[prost(string, optional, tag = "1")]
5975        pub reporter_service_package: ::core::option::Option<
5976            ::prost::alloc::string::String,
5977        >,
5978        #[prost(string, optional, tag = "2")]
5979        pub reporter_service_class: ::core::option::Option<
5980            ::prost::alloc::string::String,
5981        >,
5982        /// If true, then skips reporting the trace to Android framework.
5983        ///
5984        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5985        /// or when we explicitly don't want to report traces to the framework even
5986        /// when they usually would (e.g. configs deployed using statsd but only
5987        /// used for inclusion in bugreports using |bugreport_score|).
5988        ///
5989        /// The motivation for having this flag, instead of just not setting
5990        /// |framework_report_config|, is prevent accidents where
5991        /// |framework_report_config| is omitted by mistake.
5992        #[prost(bool, optional, tag = "3")]
5993        pub skip_report: ::core::option::Option<bool>,
5994        /// If true, will direct the Android framework to read the data in trace
5995        /// file and pass it to the reporter class over a pipe instead of passing
5996        /// the file descriptor directly.
5997        ///
5998        /// This flag is needed because the Android test framework does not
5999        /// currently support priv-app helper apps (in terms of SELinux) and we
6000        /// really don't want to add an allow rule for untrusted_app to receive
6001        /// trace fds.
6002        ///
6003        /// Because of this, we instead will direct the framework to create a new
6004        /// pipe and pass this to the reporter process instead. As the pipe is
6005        /// created by the framework, we won't have any problems with SELinux
6006        /// (system_server is already allowed to pass pipe fds, even
6007        /// to untrusted apps).
6008        ///
6009        /// As the name suggests this option *MUST* only be used for testing.
6010        /// Note that the framework will reject (and drop) files which are too
6011        /// large both for simplicity and to be minimize the amount of data we
6012        /// pass to a non-priv app (note that the framework will still check
6013        /// manifest permissions even though SELinux permissions are worked around).
6014        #[prost(bool, optional, tag = "4")]
6015        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
6016    }
6017    /// If set, delays the start of tracing by a random duration. The duration is
6018    /// chosen from a uniform distribution between the specified minimum and
6019    /// maximum.
6020    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
6021    /// not work if you communicate with traced directly over the consumer API.
6022    /// Introduced in Android T.
6023    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6024    pub struct CmdTraceStartDelay {
6025        #[prost(uint32, optional, tag = "1")]
6026        pub min_delay_ms: ::core::option::Option<u32>,
6027        #[prost(uint32, optional, tag = "2")]
6028        pub max_delay_ms: ::core::option::Option<u32>,
6029    }
6030    /// When non-empty, ensures that for a each semaphore named `name at most
6031    /// `max_other_session_count`` *other* sessions (whose value is taken of the
6032    /// minimum of all values specified by this config or any already-running
6033    /// session) can be be running.
6034    ///
6035    /// If a semaphore "acquisition" fails, EnableTracing will return an error
6036    /// and the tracing session will not be started (or elgible to start in
6037    /// the case of deferred sessions).
6038    ///
6039    /// This is easiest to explain with an example. Suppose the tracing service has
6040    /// the following active tracing sessions:
6041    ///    S1 = [{name=foo, max_other_session_count=2},
6042    ///          {name=bar, max_other_session_count=0}]
6043    ///    S2 = [{name=foo, max_other_session_count=1},
6044    ///          {name=baz, max_other_session_count=1}]
6045    ///
6046    /// Then, for a new session, the following would be the expected behaviour of
6047    /// EnableSession given the state of `session_semaphores`.
6048    ///    Q: session_semaphores = \[\]
6049    ///    A: Allowed because it does not specify any semaphores. Will be allowed
6050    ///       no matter the state of any other tracing session.
6051    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
6052    ///    A: Allowed because both S2 and this config specify
6053    ///       max_other_session_count=1 for baz.
6054    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
6055    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
6056    ///       takes that slot.
6057    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
6058    ///    A: Denied because S1 takes the the slot specified by both S1 and
6059    ///       this config.
6060    ///
6061    /// Introduced in 24Q3 (Android V).
6062    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6063    pub struct SessionSemaphore {
6064        /// The name of the semaphore. Acts as a unique identifier across all
6065        /// tracing sessions (including the one being started).
6066        #[prost(string, optional, tag = "1")]
6067        pub name: ::core::option::Option<::prost::alloc::string::String>,
6068        /// The maximum number of *other* sesssions which specify the same semaphore
6069        /// which can be active. The minimum of this value across all tracing
6070        /// sessions and the value specified by the config is used when deciding
6071        /// whether the tracing session can be started.
6072        #[prost(uint64, optional, tag = "2")]
6073        pub max_other_session_count: ::core::option::Option<u64>,
6074    }
6075    #[derive(
6076        Clone,
6077        Copy,
6078        Debug,
6079        PartialEq,
6080        Eq,
6081        Hash,
6082        PartialOrd,
6083        Ord,
6084        ::prost::Enumeration
6085    )]
6086    #[repr(i32)]
6087    pub enum LockdownModeOperation {
6088        LockdownUnchanged = 0,
6089        LockdownClear = 1,
6090        LockdownSet = 2,
6091    }
6092    impl LockdownModeOperation {
6093        /// String value of the enum field names used in the ProtoBuf definition.
6094        ///
6095        /// The values are not transformed in any way and thus are considered stable
6096        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6097        pub fn as_str_name(&self) -> &'static str {
6098            match self {
6099                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
6100                Self::LockdownClear => "LOCKDOWN_CLEAR",
6101                Self::LockdownSet => "LOCKDOWN_SET",
6102            }
6103        }
6104        /// Creates an enum from field names used in the ProtoBuf definition.
6105        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6106            match value {
6107                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
6108                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
6109                "LOCKDOWN_SET" => Some(Self::LockdownSet),
6110                _ => None,
6111            }
6112        }
6113    }
6114    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
6115    /// that only ever selects deflate. Kept for backwards compatibility with
6116    /// Perfetto <= v57, whose services predate |compression|. Best effort.
6117    #[derive(
6118        Clone,
6119        Copy,
6120        Debug,
6121        PartialEq,
6122        Eq,
6123        Hash,
6124        PartialOrd,
6125        Ord,
6126        ::prost::Enumeration
6127    )]
6128    #[repr(i32)]
6129    pub enum CompressionType {
6130        Unspecified = 0,
6131        Deflate = 1,
6132    }
6133    impl CompressionType {
6134        /// String value of the enum field names used in the ProtoBuf definition.
6135        ///
6136        /// The values are not transformed in any way and thus are considered stable
6137        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6138        pub fn as_str_name(&self) -> &'static str {
6139            match self {
6140                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
6141                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
6142            }
6143        }
6144        /// Creates an enum from field names used in the ProtoBuf definition.
6145        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6146            match value {
6147                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6148                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
6149                _ => None,
6150            }
6151        }
6152    }
6153    #[derive(
6154        Clone,
6155        Copy,
6156        Debug,
6157        PartialEq,
6158        Eq,
6159        Hash,
6160        PartialOrd,
6161        Ord,
6162        ::prost::Enumeration
6163    )]
6164    #[repr(i32)]
6165    pub enum StatsdLogging {
6166        Unspecified = 0,
6167        Enabled = 1,
6168        Disabled = 2,
6169    }
6170    impl StatsdLogging {
6171        /// String value of the enum field names used in the ProtoBuf definition.
6172        ///
6173        /// The values are not transformed in any way and thus are considered stable
6174        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6175        pub fn as_str_name(&self) -> &'static str {
6176            match self {
6177                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
6178                Self::Enabled => "STATSD_LOGGING_ENABLED",
6179                Self::Disabled => "STATSD_LOGGING_DISABLED",
6180            }
6181        }
6182        /// Creates an enum from field names used in the ProtoBuf definition.
6183        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6184            match value {
6185                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
6186                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
6187                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
6188                _ => None,
6189            }
6190        }
6191    }
6192    #[derive(
6193        Clone,
6194        Copy,
6195        Debug,
6196        PartialEq,
6197        Eq,
6198        Hash,
6199        PartialOrd,
6200        Ord,
6201        ::prost::Enumeration
6202    )]
6203    #[repr(i32)]
6204    pub enum WriteFlushMode {
6205        /// Same as WRITE_FLUSH_AUTO.
6206        WriteFlushUnspecified = 0,
6207        /// Default mode. The service automatically determines the flush frequency
6208        /// to balance performance and data freshness:
6209        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
6210        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
6211        ///     issued every 5s.
6212        /// 2) If file_write_period_ms > 5s:
6213        ///     A flush is issued before every periodic write into the file.
6214        WriteFlushAuto = 1,
6215        /// Do not flush buffers before periodic writes into the file.
6216        /// Use this mode if you want to minimize the performance impact of flushes
6217        /// and can tolerate potentially missing the most recent data in the trace
6218        /// file until the end of the session or an explicit flush.
6219        /// When this mode is selected, |flush_period_ms| is respected.
6220        WriteFlushDisabled = 2,
6221        /// Issue a flush before every periodic write into the file.
6222        /// This ensures that each write into the file contains the most up-to-date
6223        /// data from all data sources, but may have a higher performance overhead.
6224        WriteFlushEnabled = 3,
6225    }
6226    impl WriteFlushMode {
6227        /// String value of the enum field names used in the ProtoBuf definition.
6228        ///
6229        /// The values are not transformed in any way and thus are considered stable
6230        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6231        pub fn as_str_name(&self) -> &'static str {
6232            match self {
6233                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
6234                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
6235                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
6236                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
6237            }
6238        }
6239        /// Creates an enum from field names used in the ProtoBuf definition.
6240        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6241            match value {
6242                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
6243                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
6244                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
6245                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
6246                _ => None,
6247            }
6248        }
6249    }
6250    #[derive(
6251        Clone,
6252        Copy,
6253        Debug,
6254        PartialEq,
6255        Eq,
6256        Hash,
6257        PartialOrd,
6258        Ord,
6259        ::prost::Enumeration
6260    )]
6261    #[repr(i32)]
6262    pub enum FFlushMode {
6263        /// Default: same as FFLUSH_DISABLED.
6264        FflushUnspecified = 0,
6265        /// Do not explicitly sync the file to storage after each write pass.
6266        FflushDisabled = 1,
6267        /// Explicitly sync the file to storage (via fdatasync) after each periodic
6268        /// write pass. Increases data durability at the cost of higher disk I/O
6269        /// overhead.
6270        FflushEnabled = 2,
6271    }
6272    impl FFlushMode {
6273        /// String value of the enum field names used in the ProtoBuf definition.
6274        ///
6275        /// The values are not transformed in any way and thus are considered stable
6276        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6277        pub fn as_str_name(&self) -> &'static str {
6278            match self {
6279                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
6280                Self::FflushDisabled => "FFLUSH_DISABLED",
6281                Self::FflushEnabled => "FFLUSH_ENABLED",
6282            }
6283        }
6284        /// Creates an enum from field names used in the ProtoBuf definition.
6285        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6286            match value {
6287                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
6288                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
6289                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
6290                _ => None,
6291            }
6292        }
6293    }
6294}
6295#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6296pub struct Utsname {
6297    #[prost(string, optional, tag = "1")]
6298    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
6299    #[prost(string, optional, tag = "2")]
6300    pub version: ::core::option::Option<::prost::alloc::string::String>,
6301    #[prost(string, optional, tag = "3")]
6302    pub release: ::core::option::Option<::prost::alloc::string::String>,
6303    #[prost(string, optional, tag = "4")]
6304    pub machine: ::core::option::Option<::prost::alloc::string::String>,
6305}
6306/// Next id: 19
6307#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6308pub struct SystemInfo {
6309    #[prost(message, optional, tag = "1")]
6310    pub utsname: ::core::option::Option<Utsname>,
6311    #[prost(string, optional, tag = "2")]
6312    pub android_build_fingerprint: ::core::option::Option<
6313        ::prost::alloc::string::String,
6314    >,
6315    /// The manufacturer of the product/hardware.
6316    /// Source : "ro.product.manufacturer"
6317    /// Introduced after Android W in Nov 2024 and is not supported on older
6318    /// versions.
6319    #[prost(string, optional, tag = "14")]
6320    pub android_device_manufacturer: ::core::option::Option<
6321        ::prost::alloc::string::String,
6322    >,
6323    /// The SoC model from which trace is collected
6324    #[prost(string, optional, tag = "9")]
6325    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
6326    /// Device tree compatible strings for Linux devices. This field is populated
6327    /// from the firmware file /sys/firmware/devicetree/base/compatible on the
6328    /// target device. The ordering matches the ordering in the device tree.
6329    /// Introduced after 26Q3 in Sept 2026 and is not supported on older versions.
6330    #[prost(string, repeated, tag = "18")]
6331    pub device_tree_compatibles: ::prost::alloc::vec::Vec<
6332        ::prost::alloc::string::String,
6333    >,
6334    /// The guest SoC model from which trace is collected in case of VMs
6335    #[prost(string, optional, tag = "13")]
6336    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
6337    /// The hardware reversion from android device
6338    #[prost(string, optional, tag = "10")]
6339    pub android_hardware_revision: ::core::option::Option<
6340        ::prost::alloc::string::String,
6341    >,
6342    /// The storage component from android_device. This field has been introduced
6343    /// after Android W in Aug 2024 and is not supported on older versions.
6344    #[prost(string, optional, tag = "11")]
6345    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
6346    /// The RAM component information from android device. This field has been
6347    /// introduced after Android W in Aug 2024 and is not supported on older
6348    /// versions.
6349    #[prost(string, optional, tag = "12")]
6350    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
6351    /// The serial console information from android device.
6352    #[prost(string, optional, tag = "15")]
6353    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
6354    /// The version of traced (the same returned by `traced --version`).
6355    /// This is a human readable string with and its format varies depending on
6356    /// the build system and the repo (standalone vs AOSP).
6357    /// This is intended for human debugging only.
6358    #[prost(string, optional, tag = "4")]
6359    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
6360    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
6361    /// Introduced in Android T.
6362    #[prost(uint64, optional, tag = "5")]
6363    pub android_sdk_version: ::core::option::Option<u64>,
6364    /// Kernel page size - sysconf(_SC_PAGESIZE).
6365    #[prost(uint32, optional, tag = "6")]
6366    pub page_size: ::core::option::Option<u32>,
6367    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
6368    /// Might be different to the number of online cpus.
6369    /// Introduced in perfetto v44.
6370    #[prost(uint32, optional, tag = "8")]
6371    pub num_cpus: ::core::option::Option<u32>,
6372    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
6373    /// Introduced in v38 / Android V.
6374    #[prost(int32, optional, tag = "7")]
6375    pub timezone_off_mins: ::core::option::Option<i32>,
6376    /// Ticks per second - sysconf(_SC_CLK_TCK).
6377    /// Not serialised as of perfetto v44.
6378    #[prost(int64, optional, tag = "3")]
6379    pub hz: ::core::option::Option<i64>,
6380    /// The size of the system RAM in bytes.
6381    ///
6382    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
6383    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
6384    ///
6385    /// Introduced in perfetto v54 / Android 26Q1+.
6386    #[prost(uint64, optional, tag = "16")]
6387    pub system_ram_bytes: ::core::option::Option<u64>,
6388    /// Human-readable name of the machine this SystemInfo describes, used as the
6389    /// machine's label in the UI (falling back to "machine <id>" when unset).
6390    ///
6391    /// A producer attributing its data to a non-host machine can set this by
6392    /// emitting a SystemInfo packet to give that machine a name. Only meaningful
6393    /// when the packet carries a non-zero machine_id.
6394    #[prost(string, optional, tag = "17")]
6395    pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
6396}
6397/// Statistics for the internals of the tracing service.
6398///
6399/// Next id: 19.
6400#[derive(Clone, PartialEq, ::prost::Message)]
6401pub struct TraceStats {
6402    /// Stats for the TraceBuffer(s) of the current trace session.
6403    #[prost(message, repeated, tag = "1")]
6404    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
6405    /// The thresholds of each the `writer_stats` histogram buckets. This is
6406    /// emitted only once as all WriterStats share the same bucket layout.
6407    /// This field has the same cardinality of the
6408    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
6409    /// (The -1 is because the last overflow bucket is not reported in the _def).
6410    /// An array of values \[10, 100, 1000\] in the _def array means that there are
6411    /// four buckets (3 + the implicit overflow bucket):
6412    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
6413    #[prost(int64, repeated, packed = "false", tag = "17")]
6414    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
6415    #[prost(message, repeated, tag = "18")]
6416    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
6417    /// Num. producers connected (whether they are involved in the current tracing
6418    /// session or not).
6419    #[prost(uint32, optional, tag = "2")]
6420    pub producers_connected: ::core::option::Option<u32>,
6421    /// Num. producers ever seen for all trace sessions since startup (it's a good
6422    /// proxy for inferring num. producers crashed / killed).
6423    #[prost(uint64, optional, tag = "3")]
6424    pub producers_seen: ::core::option::Option<u64>,
6425    /// Num. data sources registered for all trace sessions.
6426    #[prost(uint32, optional, tag = "4")]
6427    pub data_sources_registered: ::core::option::Option<u32>,
6428    /// Num. data sources ever seen for all trace sessions since startup.
6429    #[prost(uint64, optional, tag = "5")]
6430    pub data_sources_seen: ::core::option::Option<u64>,
6431    /// Num. concurrently active tracing sessions.
6432    #[prost(uint32, optional, tag = "6")]
6433    pub tracing_sessions: ::core::option::Option<u32>,
6434    /// Num. buffers for all tracing session (not just the current one). This will
6435    /// be >= buffer_stats.size(), because the latter is only about the current
6436    /// session.
6437    #[prost(uint32, optional, tag = "7")]
6438    pub total_buffers: ::core::option::Option<u32>,
6439    /// Num. chunks that were discarded by the service before attempting to commit
6440    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
6441    #[prost(uint64, optional, tag = "8")]
6442    pub chunks_discarded: ::core::option::Option<u64>,
6443    /// Num. patches that were discarded by the service before attempting to apply
6444    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
6445    #[prost(uint64, optional, tag = "9")]
6446    pub patches_discarded: ::core::option::Option<u64>,
6447    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
6448    /// is a bug in the producer.
6449    #[prost(uint64, optional, tag = "10")]
6450    pub invalid_packets: ::core::option::Option<u64>,
6451    #[prost(message, optional, tag = "11")]
6452    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
6453    /// Count of Flush() requests (either from the Consumer, or self-induced
6454    /// periodic flushes). The final Flush() is also included in the count.
6455    #[prost(uint64, optional, tag = "12")]
6456    pub flushes_requested: ::core::option::Option<u64>,
6457    /// The count of the Flush() requests that were completed successfully.
6458    /// In a well behaving trace this should always be == `flush_requests`.
6459    #[prost(uint64, optional, tag = "13")]
6460    pub flushes_succeeded: ::core::option::Option<u64>,
6461    /// The count of the Flush() requests that failed (in most timed out).
6462    /// In a well behaving trace this should always be == 0.
6463    #[prost(uint64, optional, tag = "14")]
6464    pub flushes_failed: ::core::option::Option<u64>,
6465    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
6466    pub final_flush_outcome: ::core::option::Option<i32>,
6467}
6468/// Nested message and enum types in `TraceStats`.
6469pub mod trace_stats {
6470    /// From TraceBuffer::Stats.
6471    ///
6472    /// Next id: 22.
6473    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6474    pub struct BufferStats {
6475        /// Size of the circular buffer in bytes.
6476        #[prost(uint64, optional, tag = "12")]
6477        pub buffer_size: ::core::option::Option<u64>,
6478        /// Num. bytes written into the circular buffer, including chunk headers.
6479        #[prost(uint64, optional, tag = "1")]
6480        pub bytes_written: ::core::option::Option<u64>,
6481        /// Num. bytes overwritten before they have been read (i.e. loss of data).
6482        #[prost(uint64, optional, tag = "13")]
6483        pub bytes_overwritten: ::core::option::Option<u64>,
6484        /// Total size of chunks that were fully read from the circular buffer by the
6485        /// consumer. This may not be equal to |bytes_written| either in the middle
6486        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
6487        /// size of the chunks read from the buffer, including chunk headers, which
6488        /// will be different from the total size of packets returned to the
6489        /// consumer.
6490        ///
6491        /// The current utilization of the trace buffer (mid-tracing) can be obtained
6492        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
6493        /// adding the difference of |padding_bytes_written| and
6494        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
6495        /// Note that this represents the total size of buffered data in the buffer,
6496        /// yet this data may be spread non-contiguously through the buffer and may
6497        /// be overridden before the utilization reaches 100%.
6498        #[prost(uint64, optional, tag = "14")]
6499        pub bytes_read: ::core::option::Option<u64>,
6500        /// Num. bytes that were allocated as padding between chunks in the circular
6501        /// buffer.
6502        #[prost(uint64, optional, tag = "15")]
6503        pub padding_bytes_written: ::core::option::Option<u64>,
6504        /// Num. of padding bytes that were removed from the circular buffer when
6505        /// they were overwritten.
6506        ///
6507        /// The difference between |padding_bytes_written| and
6508        /// |padding_bytes_cleared| denotes the total size of padding currently
6509        /// present in the buffer.
6510        #[prost(uint64, optional, tag = "16")]
6511        pub padding_bytes_cleared: ::core::option::Option<u64>,
6512        /// Num. chunks (!= packets) written into the buffer.
6513        #[prost(uint64, optional, tag = "2")]
6514        pub chunks_written: ::core::option::Option<u64>,
6515        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
6516        /// the same chunk with additional packets appended to the end.
6517        #[prost(uint64, optional, tag = "10")]
6518        pub chunks_rewritten: ::core::option::Option<u64>,
6519        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
6520        /// instead of rewriting in place. We do this for scraped chunks that have
6521        /// been fully read: their old position can be so close to the write cursor
6522        /// that the packets we just recovered would be overwritten before any read.
6523        ///
6524        /// Introduced in v59 / Android 26Q3+.
6525        #[prost(uint64, optional, tag = "20")]
6526        pub chunks_relocated: ::core::option::Option<u64>,
6527        /// Num. chunks overwritten before they have been read (i.e. loss of data).
6528        #[prost(uint64, optional, tag = "3")]
6529        pub chunks_overwritten: ::core::option::Option<u64>,
6530        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
6531        /// is configured with FillPolicy == DISCARD.
6532        #[prost(uint64, optional, tag = "18")]
6533        pub chunks_discarded: ::core::option::Option<u64>,
6534        /// Num. chunks (!= packets) that were fully read from the circular buffer by
6535        /// the consumer. This may not be equal to |chunks_written| either in the
6536        /// middle of tracing, or if |chunks_overwritten| is non-zero.
6537        #[prost(uint64, optional, tag = "17")]
6538        pub chunks_read: ::core::option::Option<u64>,
6539        /// Num. chunks that were committed out of order.
6540        #[prost(uint64, optional, tag = "11")]
6541        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
6542        /// Num. times the ring buffer wrapped around.
6543        #[prost(uint64, optional, tag = "4")]
6544        pub write_wrap_count: ::core::option::Option<u64>,
6545        /// Num. out-of-band (OOB) patches that succeeded.
6546        #[prost(uint64, optional, tag = "5")]
6547        pub patches_succeeded: ::core::option::Option<u64>,
6548        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
6549        #[prost(uint64, optional, tag = "6")]
6550        pub patches_failed: ::core::option::Option<u64>,
6551        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
6552        /// successful packet read.
6553        #[prost(uint64, optional, tag = "7")]
6554        pub readaheads_succeeded: ::core::option::Option<u64>,
6555        /// Num. readaheads aborted because of missing chunks in the sequence stream.
6556        /// Note that a small number > 0 is totally expected: occasionally, when
6557        /// issuing a read, the very last packet in a sequence might be incomplete
6558        /// (because the producer is still writing it while we read). The read will
6559        /// stop at that point, for that sequence, increasing this counter.
6560        #[prost(uint64, optional, tag = "8")]
6561        pub readaheads_failed: ::core::option::Option<u64>,
6562        /// Num. of violations of the SharedMemoryABI found while writing or reading
6563        /// the buffer. This is an indication of either a bug in the producer(s) or
6564        /// malicious producer(s).
6565        #[prost(uint64, optional, tag = "9")]
6566        pub abi_violations: ::core::option::Option<u64>,
6567        /// Num. of times the service detected packet loss on a trace writer
6568        /// sequence. This is usually caused by exhaustion of available chunks in the
6569        /// writer process's SMB. Note that this relies on the client's TraceWriter
6570        /// indicating this loss to the service -- packets lost for other reasons are
6571        /// not reflected in this stat.
6572        #[prost(uint64, optional, tag = "19")]
6573        pub trace_writer_packet_loss: ::core::option::Option<u64>,
6574    }
6575    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
6576    /// visible as a unique sequence ID in the trace.
6577    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6578    pub struct WriterStats {
6579        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
6580        /// correlate the stats with the actual packet types.
6581        #[prost(uint64, optional, tag = "1")]
6582        pub sequence_id: ::core::option::Option<u64>,
6583        /// The buffer index (0..N, as defined in the TraceConfig).
6584        #[prost(uint32, optional, tag = "4")]
6585        pub buffer: ::core::option::Option<u32>,
6586        /// These two arrays have the same cardinality and match the cardinality of
6587        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
6588        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
6589        /// for each bucket.
6590        #[prost(uint64, repeated, tag = "2")]
6591        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
6592        #[prost(int64, repeated, tag = "3")]
6593        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
6594    }
6595    /// This is set only when the TraceConfig specifies a TraceFilter.
6596    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6597    pub struct FilterStats {
6598        #[prost(uint64, optional, tag = "1")]
6599        pub input_packets: ::core::option::Option<u64>,
6600        #[prost(uint64, optional, tag = "2")]
6601        pub input_bytes: ::core::option::Option<u64>,
6602        #[prost(uint64, optional, tag = "3")]
6603        pub output_bytes: ::core::option::Option<u64>,
6604        #[prost(uint64, optional, tag = "4")]
6605        pub errors: ::core::option::Option<u64>,
6606        #[prost(uint64, optional, tag = "5")]
6607        pub time_taken_ns: ::core::option::Option<u64>,
6608        /// The number of bytes discarded by the filter (i.e. output - input).
6609        /// The array has one entry for each buffer defined in the config (unless no
6610        /// packets for that buffer were seen and hence filtered).
6611        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
6612        /// (output_bytes - input_bytes) because the filter might also discard
6613        /// server-generated synthetic packets, that have no buffer index.
6614        #[prost(uint64, repeated, packed = "false", tag = "20")]
6615        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
6616    }
6617    #[derive(
6618        Clone,
6619        Copy,
6620        Debug,
6621        PartialEq,
6622        Eq,
6623        Hash,
6624        PartialOrd,
6625        Ord,
6626        ::prost::Enumeration
6627    )]
6628    #[repr(i32)]
6629    pub enum FinalFlushOutcome {
6630        FinalFlushUnspecified = 0,
6631        FinalFlushSucceeded = 1,
6632        FinalFlushFailed = 2,
6633    }
6634    impl FinalFlushOutcome {
6635        /// String value of the enum field names used in the ProtoBuf definition.
6636        ///
6637        /// The values are not transformed in any way and thus are considered stable
6638        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6639        pub fn as_str_name(&self) -> &'static str {
6640            match self {
6641                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
6642                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
6643                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
6644            }
6645        }
6646        /// Creates an enum from field names used in the ProtoBuf definition.
6647        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6648            match value {
6649                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
6650                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
6651                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
6652                _ => None,
6653            }
6654        }
6655    }
6656}
6657/// Android aconfig flags (aflags).
6658/// This message captures a snapshot of the state of aconfig flags on the device.
6659/// Keep in sync with:
6660/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
6661#[derive(Clone, PartialEq, ::prost::Message)]
6662pub struct AndroidAflags {
6663    /// A collection of flags.
6664    #[prost(message, repeated, tag = "1")]
6665    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
6666    /// A human-readable error logged if aflags processing fails.
6667    /// This is a perfetto specific field used to help debugging.
6668    #[prost(string, optional, tag = "2")]
6669    pub error: ::core::option::Option<::prost::alloc::string::String>,
6670}
6671/// Nested message and enum types in `AndroidAflags`.
6672pub mod android_aflags {
6673    /// Representation of an aconfig flag and its metadata.
6674    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6675    pub struct Flag {
6676        #[prost(string, optional, tag = "1")]
6677        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
6678        #[prost(string, optional, tag = "2")]
6679        pub name: ::core::option::Option<::prost::alloc::string::String>,
6680        /// The aconfig package (e.g. "com.android.foo"). These are system-level
6681        /// identifiers and not privacy-impacting.
6682        #[prost(string, optional, tag = "3")]
6683        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
6684        /// The container where the flag lives (e.g. "system", "vendor", or mainline
6685        /// module name).
6686        #[prost(string, optional, tag = "4")]
6687        pub container: ::core::option::Option<::prost::alloc::string::String>,
6688        /// The flag value as a string to support different future data types.
6689        #[prost(string, optional, tag = "5")]
6690        pub value: ::core::option::Option<::prost::alloc::string::String>,
6691        /// The value that will be applied after the next reboot, if different from
6692        /// the current value.
6693        #[prost(string, optional, tag = "6")]
6694        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
6695        #[prost(enumeration = "FlagPermission", optional, tag = "7")]
6696        pub permission: ::core::option::Option<i32>,
6697        #[prost(enumeration = "ValuePickedFrom", optional, tag = "8")]
6698        pub value_picked_from: ::core::option::Option<i32>,
6699        #[prost(enumeration = "FlagStorageBackend", optional, tag = "9")]
6700        pub storage_backend: ::core::option::Option<i32>,
6701        #[prost(enumeration = "FlagType", optional, tag = "10")]
6702        pub r#type: ::core::option::Option<i32>,
6703    }
6704    /// Whether a flag can be modified at runtime.
6705    #[derive(
6706        Clone,
6707        Copy,
6708        Debug,
6709        PartialEq,
6710        Eq,
6711        Hash,
6712        PartialOrd,
6713        Ord,
6714        ::prost::Enumeration
6715    )]
6716    #[repr(i32)]
6717    pub enum FlagPermission {
6718        Unspecified = 0,
6719        ReadOnly = 1,
6720        ReadWrite = 2,
6721    }
6722    impl FlagPermission {
6723        /// String value of the enum field names used in the ProtoBuf definition.
6724        ///
6725        /// The values are not transformed in any way and thus are considered stable
6726        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6727        pub fn as_str_name(&self) -> &'static str {
6728            match self {
6729                Self::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
6730                Self::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
6731                Self::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
6732            }
6733        }
6734        /// Creates an enum from field names used in the ProtoBuf definition.
6735        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6736            match value {
6737                "FLAG_PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
6738                "FLAG_PERMISSION_READ_ONLY" => Some(Self::ReadOnly),
6739                "FLAG_PERMISSION_READ_WRITE" => Some(Self::ReadWrite),
6740                _ => None,
6741            }
6742        }
6743    }
6744    /// The source of the current flag value.
6745    #[derive(
6746        Clone,
6747        Copy,
6748        Debug,
6749        PartialEq,
6750        Eq,
6751        Hash,
6752        PartialOrd,
6753        Ord,
6754        ::prost::Enumeration
6755    )]
6756    #[repr(i32)]
6757    pub enum ValuePickedFrom {
6758        Unspecified = 0,
6759        /// The value is the build-time default.
6760        Default = 1,
6761        /// The value comes from a server-side override.
6762        Server = 2,
6763        /// The value comes from a local override on the device.
6764        Local = 3,
6765    }
6766    impl ValuePickedFrom {
6767        /// String value of the enum field names used in the ProtoBuf definition.
6768        ///
6769        /// The values are not transformed in any way and thus are considered stable
6770        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6771        pub fn as_str_name(&self) -> &'static str {
6772            match self {
6773                Self::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
6774                Self::Default => "VALUE_PICKED_FROM_DEFAULT",
6775                Self::Server => "VALUE_PICKED_FROM_SERVER",
6776                Self::Local => "VALUE_PICKED_FROM_LOCAL",
6777            }
6778        }
6779        /// Creates an enum from field names used in the ProtoBuf definition.
6780        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6781            match value {
6782                "VALUE_PICKED_FROM_UNSPECIFIED" => Some(Self::Unspecified),
6783                "VALUE_PICKED_FROM_DEFAULT" => Some(Self::Default),
6784                "VALUE_PICKED_FROM_SERVER" => Some(Self::Server),
6785                "VALUE_PICKED_FROM_LOCAL" => Some(Self::Local),
6786                _ => None,
6787            }
6788        }
6789    }
6790    /// The underlying storage mechanism for the flag.
6791    #[derive(
6792        Clone,
6793        Copy,
6794        Debug,
6795        PartialEq,
6796        Eq,
6797        Hash,
6798        PartialOrd,
6799        Ord,
6800        ::prost::Enumeration
6801    )]
6802    #[repr(i32)]
6803    pub enum FlagStorageBackend {
6804        Unspecified = 0,
6805        None = 1,
6806        Aconfigd = 2,
6807        DeviceConfig = 3,
6808    }
6809    impl FlagStorageBackend {
6810        /// String value of the enum field names used in the ProtoBuf definition.
6811        ///
6812        /// The values are not transformed in any way and thus are considered stable
6813        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6814        pub fn as_str_name(&self) -> &'static str {
6815            match self {
6816                Self::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
6817                Self::None => "FLAG_STORAGE_BACKEND_NONE",
6818                Self::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
6819                Self::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
6820            }
6821        }
6822        /// Creates an enum from field names used in the ProtoBuf definition.
6823        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6824            match value {
6825                "FLAG_STORAGE_BACKEND_UNSPECIFIED" => Some(Self::Unspecified),
6826                "FLAG_STORAGE_BACKEND_NONE" => Some(Self::None),
6827                "FLAG_STORAGE_BACKEND_ACONFIGD" => Some(Self::Aconfigd),
6828                "FLAG_STORAGE_BACKEND_DEVICE_CONFIG" => Some(Self::DeviceConfig),
6829                _ => None,
6830            }
6831        }
6832    }
6833    /// The value type of the flag.
6834    #[derive(
6835        Clone,
6836        Copy,
6837        Debug,
6838        PartialEq,
6839        Eq,
6840        Hash,
6841        PartialOrd,
6842        Ord,
6843        ::prost::Enumeration
6844    )]
6845    #[repr(i32)]
6846    pub enum FlagType {
6847        /// Flag type unspecified. This flag type means the flag is an old version
6848        /// boolean flag or unknown newer type.
6849        Unspecified = 0,
6850        Boolean = 1,
6851        Integer = 2,
6852    }
6853    impl FlagType {
6854        /// String value of the enum field names used in the ProtoBuf definition.
6855        ///
6856        /// The values are not transformed in any way and thus are considered stable
6857        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6858        pub fn as_str_name(&self) -> &'static str {
6859            match self {
6860                Self::Unspecified => "FLAG_TYPE_UNSPECIFIED",
6861                Self::Boolean => "FLAG_TYPE_BOOLEAN",
6862                Self::Integer => "FLAG_TYPE_INTEGER",
6863            }
6864        }
6865        /// Creates an enum from field names used in the ProtoBuf definition.
6866        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6867            match value {
6868                "FLAG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6869                "FLAG_TYPE_BOOLEAN" => Some(Self::Boolean),
6870                "FLAG_TYPE_INTEGER" => Some(Self::Integer),
6871                _ => None,
6872            }
6873        }
6874    }
6875}
6876#[derive(Clone, PartialEq, ::prost::Message)]
6877pub struct AndroidGameInterventionList {
6878    #[prost(message, repeated, tag = "1")]
6879    pub game_packages: ::prost::alloc::vec::Vec<
6880        android_game_intervention_list::GamePackageInfo,
6881    >,
6882    /// True when at least one error occurred when parsing
6883    /// game_mode_intervention.list
6884    #[prost(bool, optional, tag = "2")]
6885    pub parse_error: ::core::option::Option<bool>,
6886    /// Failed to open / read game_mode_intervention.list
6887    #[prost(bool, optional, tag = "3")]
6888    pub read_error: ::core::option::Option<bool>,
6889}
6890/// Nested message and enum types in `AndroidGameInterventionList`.
6891pub mod android_game_intervention_list {
6892    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6893    pub struct GameModeInfo {
6894        #[prost(uint32, optional, tag = "1")]
6895        pub mode: ::core::option::Option<u32>,
6896        #[prost(bool, optional, tag = "2")]
6897        pub use_angle: ::core::option::Option<bool>,
6898        #[prost(float, optional, tag = "3")]
6899        pub resolution_downscale: ::core::option::Option<f32>,
6900        #[prost(float, optional, tag = "4")]
6901        pub fps: ::core::option::Option<f32>,
6902    }
6903    #[derive(Clone, PartialEq, ::prost::Message)]
6904    pub struct GamePackageInfo {
6905        #[prost(string, optional, tag = "1")]
6906        pub name: ::core::option::Option<::prost::alloc::string::String>,
6907        #[prost(uint64, optional, tag = "2")]
6908        pub uid: ::core::option::Option<u64>,
6909        #[prost(uint32, optional, tag = "3")]
6910        pub current_mode: ::core::option::Option<u32>,
6911        #[prost(message, repeated, tag = "4")]
6912        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
6913    }
6914}
6915#[derive(Clone, PartialEq, ::prost::Message)]
6916pub struct AndroidLogPacket {
6917    #[prost(message, repeated, tag = "1")]
6918    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
6919    #[prost(message, optional, tag = "2")]
6920    pub stats: ::core::option::Option<android_log_packet::Stats>,
6921}
6922/// Nested message and enum types in `AndroidLogPacket`.
6923pub mod android_log_packet {
6924    #[derive(Clone, PartialEq, ::prost::Message)]
6925    pub struct LogEvent {
6926        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
6927        #[prost(enumeration = "super::AndroidLogId", optional, tag = "1")]
6928        pub log_id: ::core::option::Option<i32>,
6929        /// PID (TGID), TID and UID of the task that emitted the event.
6930        #[prost(int32, optional, tag = "2")]
6931        pub pid: ::core::option::Option<i32>,
6932        #[prost(int32, optional, tag = "3")]
6933        pub tid: ::core::option::Option<i32>,
6934        #[prost(int32, optional, tag = "4")]
6935        pub uid: ::core::option::Option<i32>,
6936        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
6937        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
6938        /// processor will take care of realigning clocks using the ClockSnapshot(s).
6939        #[prost(uint64, optional, tag = "5")]
6940        pub timestamp: ::core::option::Option<u64>,
6941        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
6942        /// the second column of /system/etc/event-log-tags. For all other events,
6943        /// |tag| is the app-specified argument passed to __android_log_write().
6944        #[prost(string, optional, tag = "6")]
6945        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6946        /// Empty when log_id == LID_EVENTS.
6947        #[prost(enumeration = "super::AndroidLogPriority", optional, tag = "7")]
6948        pub prio: ::core::option::Option<i32>,
6949        /// Empty when log_id == LID_EVENTS.
6950        #[prost(string, optional, tag = "8")]
6951        pub message: ::core::option::Option<::prost::alloc::string::String>,
6952        /// Only populated when log_id == LID_EVENTS.
6953        #[prost(message, repeated, tag = "9")]
6954        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
6955    }
6956    /// Nested message and enum types in `LogEvent`.
6957    pub mod log_event {
6958        #[derive(Clone, PartialEq, ::prost::Message)]
6959        pub struct Arg {
6960            #[prost(string, optional, tag = "1")]
6961            pub name: ::core::option::Option<::prost::alloc::string::String>,
6962            #[prost(oneof = "arg::Value", tags = "2, 3, 4")]
6963            pub value: ::core::option::Option<arg::Value>,
6964        }
6965        /// Nested message and enum types in `Arg`.
6966        pub mod arg {
6967            #[derive(Clone, PartialEq, ::prost::Oneof)]
6968            pub enum Value {
6969                #[prost(int64, tag = "2")]
6970                IntValue(i64),
6971                #[prost(float, tag = "3")]
6972                FloatValue(f32),
6973                #[prost(string, tag = "4")]
6974                StringValue(::prost::alloc::string::String),
6975            }
6976        }
6977    }
6978    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
6979    /// absolute counters since the beginning of the lifetime of the tracing
6980    /// session and NOT relative to the previous Stats snapshot).
6981    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6982    pub struct Stats {
6983        /// Total number of log events seen, including errors and skipped entries
6984        /// (num of events stored in the trace = total - failed - skipped).
6985        #[prost(uint64, optional, tag = "1")]
6986        pub num_total: ::core::option::Option<u64>,
6987        /// Parser failures.
6988        #[prost(uint64, optional, tag = "2")]
6989        pub num_failed: ::core::option::Option<u64>,
6990        /// Messages skipped due to filters.
6991        #[prost(uint64, optional, tag = "3")]
6992        pub num_skipped: ::core::option::Option<u64>,
6993    }
6994}
6995#[derive(Clone, PartialEq, ::prost::Message)]
6996pub struct AndroidSystemProperty {
6997    #[prost(message, repeated, tag = "1")]
6998    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
6999}
7000/// Nested message and enum types in `AndroidSystemProperty`.
7001pub mod android_system_property {
7002    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7003    pub struct PropertyValue {
7004        #[prost(string, optional, tag = "1")]
7005        pub name: ::core::option::Option<::prost::alloc::string::String>,
7006        #[prost(string, optional, tag = "2")]
7007        pub value: ::core::option::Option<::prost::alloc::string::String>,
7008    }
7009}
7010#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7011pub struct CpuPerUidData {
7012    /// Number of clusters in the device. This will only be filled in the first
7013    /// packet in a sequence.
7014    #[prost(uint32, optional, tag = "1")]
7015    pub cluster_count: ::core::option::Option<u32>,
7016    /// The UIDs for which we have data in this packet.
7017    #[prost(uint32, repeated, tag = "2")]
7018    pub uid: ::prost::alloc::vec::Vec<u32>,
7019    /// List of times for {UID, cluster} tuples. This will be cluster_count
7020    /// times as long as the UID list.
7021    ///
7022    /// Ordered like:
7023    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
7024    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
7025    ///
7026    /// Each value is an absolute count for the first packet in a sequence, and a
7027    /// delta thereafter. UIDs for which all clusters have a zero delta are
7028    /// omitted; a single non-zero value for any cluster for a UID will cause
7029    /// values for all clusters to be recorded.
7030    #[prost(uint64, repeated, tag = "3")]
7031    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
7032}
7033/// Generated by Android's SurfaceFlinger.
7034#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7035pub struct GraphicsFrameEvent {
7036    #[prost(message, optional, tag = "1")]
7037    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
7038}
7039/// Nested message and enum types in `GraphicsFrameEvent`.
7040pub mod graphics_frame_event {
7041    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7042    pub struct BufferEvent {
7043        #[prost(uint32, optional, tag = "1")]
7044        pub frame_number: ::core::option::Option<u32>,
7045        #[prost(enumeration = "BufferEventType", optional, tag = "2")]
7046        pub r#type: ::core::option::Option<i32>,
7047        #[prost(string, optional, tag = "3")]
7048        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
7049        /// If no duration is set, the event is an instant event.
7050        #[prost(uint64, optional, tag = "4")]
7051        pub duration_ns: ::core::option::Option<u64>,
7052        /// Unique buffer identifier.
7053        #[prost(uint32, optional, tag = "5")]
7054        pub buffer_id: ::core::option::Option<u32>,
7055    }
7056    #[derive(
7057        Clone,
7058        Copy,
7059        Debug,
7060        PartialEq,
7061        Eq,
7062        Hash,
7063        PartialOrd,
7064        Ord,
7065        ::prost::Enumeration
7066    )]
7067    #[repr(i32)]
7068    pub enum BufferEventType {
7069        Unspecified = 0,
7070        Dequeue = 1,
7071        Queue = 2,
7072        Post = 3,
7073        AcquireFence = 4,
7074        Latch = 5,
7075        /// HWC will compose this buffer
7076        HwcCompositionQueued = 6,
7077        /// renderEngine composition
7078        FallbackComposition = 7,
7079        PresentFence = 8,
7080        ReleaseFence = 9,
7081        Modify = 10,
7082        Detach = 11,
7083        Attach = 12,
7084        Cancel = 13,
7085    }
7086    impl BufferEventType {
7087        /// String value of the enum field names used in the ProtoBuf definition.
7088        ///
7089        /// The values are not transformed in any way and thus are considered stable
7090        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7091        pub fn as_str_name(&self) -> &'static str {
7092            match self {
7093                Self::Unspecified => "UNSPECIFIED",
7094                Self::Dequeue => "DEQUEUE",
7095                Self::Queue => "QUEUE",
7096                Self::Post => "POST",
7097                Self::AcquireFence => "ACQUIRE_FENCE",
7098                Self::Latch => "LATCH",
7099                Self::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
7100                Self::FallbackComposition => "FALLBACK_COMPOSITION",
7101                Self::PresentFence => "PRESENT_FENCE",
7102                Self::ReleaseFence => "RELEASE_FENCE",
7103                Self::Modify => "MODIFY",
7104                Self::Detach => "DETACH",
7105                Self::Attach => "ATTACH",
7106                Self::Cancel => "CANCEL",
7107            }
7108        }
7109        /// Creates an enum from field names used in the ProtoBuf definition.
7110        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7111            match value {
7112                "UNSPECIFIED" => Some(Self::Unspecified),
7113                "DEQUEUE" => Some(Self::Dequeue),
7114                "QUEUE" => Some(Self::Queue),
7115                "POST" => Some(Self::Post),
7116                "ACQUIRE_FENCE" => Some(Self::AcquireFence),
7117                "LATCH" => Some(Self::Latch),
7118                "HWC_COMPOSITION_QUEUED" => Some(Self::HwcCompositionQueued),
7119                "FALLBACK_COMPOSITION" => Some(Self::FallbackComposition),
7120                "PRESENT_FENCE" => Some(Self::PresentFence),
7121                "RELEASE_FENCE" => Some(Self::ReleaseFence),
7122                "MODIFY" => Some(Self::Modify),
7123                "DETACH" => Some(Self::Detach),
7124                "ATTACH" => Some(Self::Attach),
7125                "CANCEL" => Some(Self::Cancel),
7126                _ => None,
7127            }
7128        }
7129    }
7130}
7131#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7132pub struct InitialDisplayState {
7133    /// Same values as android.view.Display.STATE_*
7134    #[prost(int32, optional, tag = "1")]
7135    pub display_state: ::core::option::Option<i32>,
7136    #[prost(double, optional, tag = "2")]
7137    pub brightness: ::core::option::Option<f64>,
7138}
7139#[derive(Clone, PartialEq, ::prost::Message)]
7140pub struct KernelWakelockData {
7141    /// This is only emitted when we encounter new wakelocks.
7142    #[prost(message, repeated, tag = "1")]
7143    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
7144    /// Interning id.
7145    #[prost(uint32, repeated, tag = "2")]
7146    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
7147    /// If we interned the wakelock name in this packet, this is the total time
7148    /// the wakelock has been held.
7149    /// If not, it's a delta from the last time we saw it.
7150    #[prost(uint64, repeated, tag = "3")]
7151    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
7152    #[prost(uint64, optional, tag = "4")]
7153    pub error_flags: ::core::option::Option<u64>,
7154}
7155/// Nested message and enum types in `KernelWakelockData`.
7156pub mod kernel_wakelock_data {
7157    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7158    pub struct Wakelock {
7159        /// Interning id.
7160        #[prost(uint32, optional, tag = "1")]
7161        pub wakelock_id: ::core::option::Option<u32>,
7162        /// Name of the wakelock.
7163        #[prost(string, optional, tag = "2")]
7164        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
7165        /// Type of the wakelock. We record data about both true kernel wakelocks
7166        /// and "native" wakelocks which are taken in userspace but are more
7167        /// conceptually similar to kernel wakelocks than normal userspace ones.
7168        #[prost(enumeration = "wakelock::Type", optional, tag = "3")]
7169        pub wakelock_type: ::core::option::Option<i32>,
7170    }
7171    /// Nested message and enum types in `Wakelock`.
7172    pub mod wakelock {
7173        #[derive(
7174            Clone,
7175            Copy,
7176            Debug,
7177            PartialEq,
7178            Eq,
7179            Hash,
7180            PartialOrd,
7181            Ord,
7182            ::prost::Enumeration
7183        )]
7184        #[repr(i32)]
7185        pub enum Type {
7186            WakelockTypeUnknown = 0,
7187            WakelockTypeKernel = 1,
7188            WakelockTypeNative = 2,
7189        }
7190        impl Type {
7191            /// String value of the enum field names used in the ProtoBuf definition.
7192            ///
7193            /// The values are not transformed in any way and thus are considered stable
7194            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7195            pub fn as_str_name(&self) -> &'static str {
7196                match self {
7197                    Self::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
7198                    Self::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
7199                    Self::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
7200                }
7201            }
7202            /// Creates an enum from field names used in the ProtoBuf definition.
7203            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7204                match value {
7205                    "WAKELOCK_TYPE_UNKNOWN" => Some(Self::WakelockTypeUnknown),
7206                    "WAKELOCK_TYPE_KERNEL" => Some(Self::WakelockTypeKernel),
7207                    "WAKELOCK_TYPE_NATIVE" => Some(Self::WakelockTypeNative),
7208                    _ => None,
7209                }
7210            }
7211        }
7212    }
7213}
7214#[derive(Clone, PartialEq, ::prost::Message)]
7215pub struct PackagesList {
7216    #[prost(message, repeated, tag = "1")]
7217    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
7218    /// At least one error occurred parsing the packages.list.
7219    #[prost(bool, optional, tag = "2")]
7220    pub parse_error: ::core::option::Option<bool>,
7221    /// Failed to open / read packages.list.
7222    #[prost(bool, optional, tag = "3")]
7223    pub read_error: ::core::option::Option<bool>,
7224}
7225/// Nested message and enum types in `PackagesList`.
7226pub mod packages_list {
7227    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7228    pub struct PackageInfo {
7229        #[prost(string, optional, tag = "1")]
7230        pub name: ::core::option::Option<::prost::alloc::string::String>,
7231        #[prost(uint64, optional, tag = "2")]
7232        pub uid: ::core::option::Option<u64>,
7233        #[prost(bool, optional, tag = "3")]
7234        pub debuggable: ::core::option::Option<bool>,
7235        #[prost(bool, optional, tag = "4")]
7236        pub profileable_from_shell: ::core::option::Option<bool>,
7237        #[prost(int64, optional, tag = "5")]
7238        pub version_code: ::core::option::Option<i64>,
7239    }
7240}
7241#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7242pub struct PixelModemEvents {
7243    /// Pigweed-format dehydrated events.
7244    #[prost(bytes = "vec", repeated, tag = "1")]
7245    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
7246    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
7247    /// timestamp is the absolute timestamp of the first event. Subsequent
7248    /// timestamps are deltas from the previous timestamp.
7249    /// The nth entry from `events` gets the nth entry here.
7250    #[prost(uint64, repeated, packed = "false", tag = "2")]
7251    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
7252}
7253/// NB: this is not emitted in the trace but can be prepended later.
7254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7255pub struct PixelModemTokenDatabase {
7256    /// Pigweed-format database to allow event rehydration.
7257    #[prost(bytes = "vec", optional, tag = "1")]
7258    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7259}
7260/// Injected into TracePacket by perfetto post-reboot recovery to record
7261/// recovered trace metadata.
7262#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7263pub struct RecoveredTraceInfo {
7264    #[prost(enumeration = "recovered_trace_info::Reason", optional, tag = "1")]
7265    pub reason: ::core::option::Option<i32>,
7266    /// Raw trace file size (in bytes) on disk prior to post-reboot recovery.
7267    #[prost(uint64, optional, tag = "2")]
7268    pub original_file_size_bytes: ::core::option::Option<u64>,
7269    /// Amount of trailing corrupted/incomplete bytes truncated during recovery.
7270    #[prost(uint64, optional, tag = "3")]
7271    pub bytes_truncated: ::core::option::Option<u64>,
7272}
7273/// Nested message and enum types in `RecoveredTraceInfo`.
7274pub mod recovered_trace_info {
7275    #[derive(
7276        Clone,
7277        Copy,
7278        Debug,
7279        PartialEq,
7280        Eq,
7281        Hash,
7282        PartialOrd,
7283        Ord,
7284        ::prost::Enumeration
7285    )]
7286    #[repr(i32)]
7287    pub enum Reason {
7288        Unspecified = 0,
7289        UnexpectedReboot = 1,
7290    }
7291    impl Reason {
7292        /// String value of the enum field names used in the ProtoBuf definition.
7293        ///
7294        /// The values are not transformed in any way and thus are considered stable
7295        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7296        pub fn as_str_name(&self) -> &'static str {
7297            match self {
7298                Self::Unspecified => "REASON_UNSPECIFIED",
7299                Self::UnexpectedReboot => "REASON_UNEXPECTED_REBOOT",
7300            }
7301        }
7302        /// Creates an enum from field names used in the ProtoBuf definition.
7303        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7304            match value {
7305                "REASON_UNSPECIFIED" => Some(Self::Unspecified),
7306                "REASON_UNEXPECTED_REBOOT" => Some(Self::UnexpectedReboot),
7307                _ => None,
7308            }
7309        }
7310    }
7311}
7312#[derive(Clone, PartialEq, ::prost::Message)]
7313pub struct AndroidUserList {
7314    #[prost(message, repeated, tag = "1")]
7315    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7316    /// Error number
7317    #[prost(int32, optional, tag = "2")]
7318    pub error: ::core::option::Option<i32>,
7319}
7320/// Nested message and enum types in `AndroidUserList`.
7321pub mod android_user_list {
7322    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7323    pub struct UserInfo {
7324        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7325        #[prost(string, optional, tag = "1")]
7326        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7327        #[prost(int32, optional, tag = "2")]
7328        pub uid: ::core::option::Option<i32>,
7329    }
7330}
7331/// This message is not intended to be written by the chrome on the device.
7332/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7333/// part of the trace that's written by the telemetry tracing agent).
7334#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7335pub struct ChromeBenchmarkMetadata {
7336    /// Time when the benchmark execution started (host unixtime in microseconds).
7337    #[prost(int64, optional, tag = "1")]
7338    pub benchmark_start_time_us: ::core::option::Option<i64>,
7339    /// Time when this particular story was run (host unixtime in microseconds).
7340    #[prost(int64, optional, tag = "2")]
7341    pub story_run_time_us: ::core::option::Option<i64>,
7342    /// Name of benchmark.
7343    #[prost(string, optional, tag = "3")]
7344    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7345    /// Description of benchmark.
7346    #[prost(string, optional, tag = "4")]
7347    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7348    /// Optional label.
7349    #[prost(string, optional, tag = "5")]
7350    pub label: ::core::option::Option<::prost::alloc::string::String>,
7351    /// Name of story.
7352    #[prost(string, optional, tag = "6")]
7353    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7354    /// List of story tags.
7355    #[prost(string, repeated, tag = "7")]
7356    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7357    /// Index of the story run (>0 if the same story was run several times).
7358    #[prost(int32, optional, tag = "8")]
7359    pub story_run_index: ::core::option::Option<i32>,
7360    /// Whether this run failed.
7361    #[prost(bool, optional, tag = "9")]
7362    pub had_failures: ::core::option::Option<bool>,
7363}
7364/// Metadata for chrome traces.
7365#[derive(Clone, PartialEq, ::prost::Message)]
7366pub struct ChromeMetadataPacket {
7367    #[prost(message, optional, tag = "1")]
7368    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7369    /// Version code of Chrome used by Android's Play Store. This field is only set
7370    /// on Android.
7371    #[prost(int32, optional, tag = "2")]
7372    pub chrome_version_code: ::core::option::Option<i32>,
7373    /// Comma separated list of enabled categories for tracing. The list of
7374    /// possible category strings are listed in code
7375    /// base/trace_event/builtin_categories.h.
7376    #[prost(string, optional, tag = "3")]
7377    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7378    /// List of Finch study/groups that apply to this trace.
7379    #[prost(message, repeated, tag = "4")]
7380    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7381    /// The package name of the app which is being traced. This field is only set
7382    /// on Android.
7383    #[prost(string, optional, tag = "5")]
7384    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
7385    /// A version number string for Chrome. This matches
7386    /// SystemProfileProto::app_version.
7387    #[prost(string, optional, tag = "6")]
7388    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
7389    /// This matches SystemProfileProto::channel.
7390    #[prost(uint32, optional, tag = "7")]
7391    pub channel: ::core::option::Option<u32>,
7392    /// The user's operating system. This matches SystemProfileProto::OS::name.
7393    #[prost(string, optional, tag = "8")]
7394    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
7395}
7396/// Nested message and enum types in `ChromeMetadataPacket`.
7397pub mod chrome_metadata_packet {
7398    /// Finch name and group based on the ActiveGroupId.
7399    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7400    pub struct FinchHash {
7401        #[prost(uint32, optional, tag = "1")]
7402        pub name: ::core::option::Option<u32>,
7403        #[prost(uint32, optional, tag = "2")]
7404        pub group: ::core::option::Option<u32>,
7405    }
7406}
7407/// Metadata related to background tracing scenarios, states and triggers.
7408#[derive(Clone, PartialEq, ::prost::Message)]
7409pub struct BackgroundTracingMetadata {
7410    /// Specifies the rule that caused the trace to be uploaded.
7411    #[prost(message, optional, tag = "1")]
7412    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7413    /// List of all active triggers in current session, when trace was triggered.
7414    #[prost(message, repeated, tag = "2")]
7415    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7416    /// Hash of the scenario name.
7417    #[prost(fixed32, optional, tag = "3")]
7418    pub scenario_name_hash: ::core::option::Option<u32>,
7419}
7420/// Nested message and enum types in `BackgroundTracingMetadata`.
7421pub mod background_tracing_metadata {
7422    /// Information about a trigger rule defined in the experiment config.
7423    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7424    pub struct TriggerRule {
7425        #[prost(enumeration = "trigger_rule::TriggerType", optional, tag = "1")]
7426        pub trigger_type: ::core::option::Option<i32>,
7427        #[prost(message, optional, tag = "2")]
7428        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7429        #[prost(message, optional, tag = "3")]
7430        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7431        /// Hash of the rule name.
7432        #[prost(fixed32, optional, tag = "4")]
7433        pub name_hash: ::core::option::Option<u32>,
7434    }
7435    /// Nested message and enum types in `TriggerRule`.
7436    pub mod trigger_rule {
7437        /// Configuration of histogram trigger.
7438        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7439        pub struct HistogramRule {
7440            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7441            #[prost(fixed64, optional, tag = "1")]
7442            pub histogram_name_hash: ::core::option::Option<u64>,
7443            /// Range of values of the histogram that activates trigger.
7444            #[prost(int64, optional, tag = "2")]
7445            pub histogram_min_trigger: ::core::option::Option<i64>,
7446            #[prost(int64, optional, tag = "3")]
7447            pub histogram_max_trigger: ::core::option::Option<i64>,
7448        }
7449        /// Configuration of named trigger.
7450        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7451        pub struct NamedRule {
7452            #[prost(enumeration = "named_rule::EventType", optional, tag = "1")]
7453            pub event_type: ::core::option::Option<i32>,
7454            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7455            /// content-trigger that actually fired.
7456            #[prost(fixed64, optional, tag = "2")]
7457            pub content_trigger_name_hash: ::core::option::Option<u64>,
7458        }
7459        /// Nested message and enum types in `NamedRule`.
7460        pub mod named_rule {
7461            #[derive(
7462                Clone,
7463                Copy,
7464                Debug,
7465                PartialEq,
7466                Eq,
7467                Hash,
7468                PartialOrd,
7469                Ord,
7470                ::prost::Enumeration
7471            )]
7472            #[repr(i32)]
7473            pub enum EventType {
7474                Unspecified = 0,
7475                SessionRestore = 1,
7476                Navigation = 2,
7477                Startup = 3,
7478                ReachedCode = 4,
7479                ContentTrigger = 5,
7480                TestRule = 1000,
7481            }
7482            impl EventType {
7483                /// String value of the enum field names used in the ProtoBuf definition.
7484                ///
7485                /// The values are not transformed in any way and thus are considered stable
7486                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7487                pub fn as_str_name(&self) -> &'static str {
7488                    match self {
7489                        Self::Unspecified => "UNSPECIFIED",
7490                        Self::SessionRestore => "SESSION_RESTORE",
7491                        Self::Navigation => "NAVIGATION",
7492                        Self::Startup => "STARTUP",
7493                        Self::ReachedCode => "REACHED_CODE",
7494                        Self::ContentTrigger => "CONTENT_TRIGGER",
7495                        Self::TestRule => "TEST_RULE",
7496                    }
7497                }
7498                /// Creates an enum from field names used in the ProtoBuf definition.
7499                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7500                    match value {
7501                        "UNSPECIFIED" => Some(Self::Unspecified),
7502                        "SESSION_RESTORE" => Some(Self::SessionRestore),
7503                        "NAVIGATION" => Some(Self::Navigation),
7504                        "STARTUP" => Some(Self::Startup),
7505                        "REACHED_CODE" => Some(Self::ReachedCode),
7506                        "CONTENT_TRIGGER" => Some(Self::ContentTrigger),
7507                        "TEST_RULE" => Some(Self::TestRule),
7508                        _ => None,
7509                    }
7510                }
7511            }
7512        }
7513        #[derive(
7514            Clone,
7515            Copy,
7516            Debug,
7517            PartialEq,
7518            Eq,
7519            Hash,
7520            PartialOrd,
7521            Ord,
7522            ::prost::Enumeration
7523        )]
7524        #[repr(i32)]
7525        pub enum TriggerType {
7526            TriggerUnspecified = 0,
7527            /// Traces are triggered by specific range of values of an UMA histogram.
7528            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7529            /// Traces are triggered by specific named events in chromium codebase,
7530            /// like "second-update-failure".
7531            MonitorAndDumpWhenTriggerNamed = 2,
7532        }
7533        impl TriggerType {
7534            /// String value of the enum field names used in the ProtoBuf definition.
7535            ///
7536            /// The values are not transformed in any way and thus are considered stable
7537            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7538            pub fn as_str_name(&self) -> &'static str {
7539                match self {
7540                    Self::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7541                    Self::MonitorAndDumpWhenSpecificHistogramAndValue => {
7542                        "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE"
7543                    }
7544                    Self::MonitorAndDumpWhenTriggerNamed => {
7545                        "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED"
7546                    }
7547                }
7548            }
7549            /// Creates an enum from field names used in the ProtoBuf definition.
7550            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7551                match value {
7552                    "TRIGGER_UNSPECIFIED" => Some(Self::TriggerUnspecified),
7553                    "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE" => {
7554                        Some(Self::MonitorAndDumpWhenSpecificHistogramAndValue)
7555                    }
7556                    "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED" => {
7557                        Some(Self::MonitorAndDumpWhenTriggerNamed)
7558                    }
7559                    _ => None,
7560                }
7561            }
7562        }
7563    }
7564}
7565#[derive(Clone, PartialEq, ::prost::Message)]
7566pub struct ChromeTracedValue {
7567    #[prost(enumeration = "chrome_traced_value::NestedType", optional, tag = "1")]
7568    pub nested_type: ::core::option::Option<i32>,
7569    #[prost(string, repeated, tag = "2")]
7570    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7571    #[prost(message, repeated, tag = "3")]
7572    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7573    #[prost(message, repeated, tag = "4")]
7574    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7575    #[prost(int32, optional, tag = "5")]
7576    pub int_value: ::core::option::Option<i32>,
7577    #[prost(double, optional, tag = "6")]
7578    pub double_value: ::core::option::Option<f64>,
7579    #[prost(bool, optional, tag = "7")]
7580    pub bool_value: ::core::option::Option<bool>,
7581    #[prost(string, optional, tag = "8")]
7582    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7583}
7584/// Nested message and enum types in `ChromeTracedValue`.
7585pub mod chrome_traced_value {
7586    #[derive(
7587        Clone,
7588        Copy,
7589        Debug,
7590        PartialEq,
7591        Eq,
7592        Hash,
7593        PartialOrd,
7594        Ord,
7595        ::prost::Enumeration
7596    )]
7597    #[repr(i32)]
7598    pub enum NestedType {
7599        Dict = 0,
7600        Array = 1,
7601    }
7602    impl NestedType {
7603        /// String value of the enum field names used in the ProtoBuf definition.
7604        ///
7605        /// The values are not transformed in any way and thus are considered stable
7606        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7607        pub fn as_str_name(&self) -> &'static str {
7608            match self {
7609                Self::Dict => "DICT",
7610                Self::Array => "ARRAY",
7611            }
7612        }
7613        /// Creates an enum from field names used in the ProtoBuf definition.
7614        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7615            match value {
7616                "DICT" => Some(Self::Dict),
7617                "ARRAY" => Some(Self::Array),
7618                _ => None,
7619            }
7620        }
7621    }
7622}
7623#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7624pub struct ChromeStringTableEntry {
7625    #[prost(string, optional, tag = "1")]
7626    pub value: ::core::option::Option<::prost::alloc::string::String>,
7627    #[prost(int32, optional, tag = "2")]
7628    pub index: ::core::option::Option<i32>,
7629}
7630/// Deprecated, use TrackEvent protos instead.
7631#[derive(Clone, PartialEq, ::prost::Message)]
7632pub struct ChromeTraceEvent {
7633    #[prost(string, optional, tag = "1")]
7634    pub name: ::core::option::Option<::prost::alloc::string::String>,
7635    #[prost(int64, optional, tag = "2")]
7636    pub timestamp: ::core::option::Option<i64>,
7637    #[prost(int32, optional, tag = "3")]
7638    pub phase: ::core::option::Option<i32>,
7639    #[prost(int32, optional, tag = "4")]
7640    pub thread_id: ::core::option::Option<i32>,
7641    #[prost(int64, optional, tag = "5")]
7642    pub duration: ::core::option::Option<i64>,
7643    #[prost(int64, optional, tag = "6")]
7644    pub thread_duration: ::core::option::Option<i64>,
7645    #[prost(string, optional, tag = "7")]
7646    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7647    #[prost(uint64, optional, tag = "8")]
7648    pub id: ::core::option::Option<u64>,
7649    #[prost(uint32, optional, tag = "9")]
7650    pub flags: ::core::option::Option<u32>,
7651    #[prost(string, optional, tag = "10")]
7652    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7653    #[prost(int32, optional, tag = "11")]
7654    pub process_id: ::core::option::Option<i32>,
7655    #[prost(int64, optional, tag = "12")]
7656    pub thread_timestamp: ::core::option::Option<i64>,
7657    #[prost(uint64, optional, tag = "13")]
7658    pub bind_id: ::core::option::Option<u64>,
7659    #[prost(message, repeated, tag = "14")]
7660    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7661    /// Takes precedence over respectively |name| and
7662    /// |category_group_name_index| if set,
7663    /// and are indices into |string_table|.
7664    #[prost(uint32, optional, tag = "15")]
7665    pub name_index: ::core::option::Option<u32>,
7666    #[prost(uint32, optional, tag = "16")]
7667    pub category_group_name_index: ::core::option::Option<u32>,
7668}
7669/// Nested message and enum types in `ChromeTraceEvent`.
7670pub mod chrome_trace_event {
7671    #[derive(Clone, PartialEq, ::prost::Message)]
7672    pub struct Arg {
7673        #[prost(string, optional, tag = "1")]
7674        pub name: ::core::option::Option<::prost::alloc::string::String>,
7675        /// Takes precedence over |name| if set,
7676        /// and is an index into |string_table|.
7677        #[prost(uint32, optional, tag = "9")]
7678        pub name_index: ::core::option::Option<u32>,
7679        #[prost(oneof = "arg::Value", tags = "2, 3, 4, 5, 6, 7, 8, 10")]
7680        pub value: ::core::option::Option<arg::Value>,
7681    }
7682    /// Nested message and enum types in `Arg`.
7683    pub mod arg {
7684        #[derive(Clone, PartialEq, ::prost::Oneof)]
7685        pub enum Value {
7686            #[prost(bool, tag = "2")]
7687            BoolValue(bool),
7688            #[prost(uint64, tag = "3")]
7689            UintValue(u64),
7690            #[prost(int64, tag = "4")]
7691            IntValue(i64),
7692            #[prost(double, tag = "5")]
7693            DoubleValue(f64),
7694            #[prost(string, tag = "6")]
7695            StringValue(::prost::alloc::string::String),
7696            /// Pointers are stored in a separate type as the JSON output treats them
7697            /// differently from other uint64 values.
7698            #[prost(uint64, tag = "7")]
7699            PointerValue(u64),
7700            #[prost(string, tag = "8")]
7701            JsonValue(::prost::alloc::string::String),
7702            #[prost(message, tag = "10")]
7703            TracedValue(super::super::ChromeTracedValue),
7704        }
7705    }
7706}
7707#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7708pub struct ChromeMetadata {
7709    #[prost(string, optional, tag = "1")]
7710    pub name: ::core::option::Option<::prost::alloc::string::String>,
7711    #[prost(oneof = "chrome_metadata::Value", tags = "2, 3, 4, 5")]
7712    pub value: ::core::option::Option<chrome_metadata::Value>,
7713}
7714/// Nested message and enum types in `ChromeMetadata`.
7715pub mod chrome_metadata {
7716    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7717    pub enum Value {
7718        #[prost(string, tag = "2")]
7719        StringValue(::prost::alloc::string::String),
7720        #[prost(bool, tag = "3")]
7721        BoolValue(bool),
7722        #[prost(int64, tag = "4")]
7723        IntValue(i64),
7724        #[prost(string, tag = "5")]
7725        JsonValue(::prost::alloc::string::String),
7726    }
7727}
7728/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7729/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7730/// TODO(eseckler): Update these agents to become perfetto producers.
7731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7732pub struct ChromeLegacyJsonTrace {
7733    #[prost(enumeration = "chrome_legacy_json_trace::TraceType", optional, tag = "1")]
7734    pub r#type: ::core::option::Option<i32>,
7735    #[prost(string, optional, tag = "2")]
7736    pub data: ::core::option::Option<::prost::alloc::string::String>,
7737}
7738/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7739pub mod chrome_legacy_json_trace {
7740    #[derive(
7741        Clone,
7742        Copy,
7743        Debug,
7744        PartialEq,
7745        Eq,
7746        Hash,
7747        PartialOrd,
7748        Ord,
7749        ::prost::Enumeration
7750    )]
7751    #[repr(i32)]
7752    pub enum TraceType {
7753        UserTrace = 0,
7754        /// Deprecated.
7755        SystemTrace = 1,
7756    }
7757    impl TraceType {
7758        /// String value of the enum field names used in the ProtoBuf definition.
7759        ///
7760        /// The values are not transformed in any way and thus are considered stable
7761        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7762        pub fn as_str_name(&self) -> &'static str {
7763            match self {
7764                Self::UserTrace => "USER_TRACE",
7765                Self::SystemTrace => "SYSTEM_TRACE",
7766            }
7767        }
7768        /// Creates an enum from field names used in the ProtoBuf definition.
7769        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7770            match value {
7771                "USER_TRACE" => Some(Self::UserTrace),
7772                "SYSTEM_TRACE" => Some(Self::SystemTrace),
7773                _ => None,
7774            }
7775        }
7776    }
7777}
7778#[derive(Clone, PartialEq, ::prost::Message)]
7779pub struct ChromeEventBundle {
7780    /// Deprecated, use TrackEvent protos instead.
7781    #[deprecated]
7782    #[prost(message, repeated, tag = "1")]
7783    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7784    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7785    /// which contains typed fields.
7786    #[prost(message, repeated, tag = "2")]
7787    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7788    /// ftrace output from CrOS and Cast system tracing agents.
7789    /// TODO(eseckler): Replace system traces with native perfetto service.
7790    #[prost(string, repeated, tag = "4")]
7791    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7792    #[prost(message, repeated, tag = "5")]
7793    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7794    /// Contents of a string table that's valid for
7795    /// the whole ChromeEventBundle entry.
7796    #[deprecated]
7797    #[prost(message, repeated, tag = "3")]
7798    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7799}
7800/// Information about a specific trigger during a background tracing scenario
7801/// Associated packet timestamps are useful to delimitate a scenario range in a
7802/// trace. Triggers are also useful for filtering traces.
7803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7804pub struct ChromeTrigger {
7805    /// Name of the trigger which was received.
7806    #[prost(string, optional, tag = "1")]
7807    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7808    /// SHA1 hash of the trigger name.
7809    #[prost(fixed32, optional, tag = "2")]
7810    pub trigger_name_hash: ::core::option::Option<u32>,
7811    /// Flow id which should terminate on this trigger.
7812    #[prost(fixed64, optional, tag = "3")]
7813    pub flow_id: ::core::option::Option<u64>,
7814}
7815/// Strings used by V8 can have different encodings, instead of coverting to a
7816/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7817/// "raw" string and do the convestion at trace ingestion time.
7818///
7819/// ATTENTION: There is some overhead in using a message (as opossed to having
7820/// the `oneof encoded_string`` direcly embedded in the message), so use this
7821/// message in places were these extra bytes don't matter that much.
7822/// Next id: 5
7823#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7824pub struct V8String {
7825    #[prost(oneof = "v8_string::EncodedString", tags = "1, 2, 3")]
7826    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7827}
7828/// Nested message and enum types in `V8String`.
7829pub mod v8_string {
7830    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7831    pub enum EncodedString {
7832        /// ISO/IEC 8859-1:1998 encoding aka latin1
7833        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7834        #[prost(bytes, tag = "1")]
7835        Latin1(::prost::alloc::vec::Vec<u8>),
7836        /// UTF-16 Little Endian Encoding
7837        #[prost(bytes, tag = "2")]
7838        Utf16Le(::prost::alloc::vec::Vec<u8>),
7839        /// UTF-16 Big Endian Encoding
7840        #[prost(bytes, tag = "3")]
7841        Utf16Be(::prost::alloc::vec::Vec<u8>),
7842    }
7843}
7844/// Interned version of V8String
7845#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7846pub struct InternedV8String {
7847    #[prost(uint64, optional, tag = "1")]
7848    pub iid: ::core::option::Option<u64>,
7849    /// We inline the fields in V8String here to save some bytes in the serialized
7850    /// proto format. Interning is about saving bytes so this makes sense here.
7851    #[prost(oneof = "interned_v8_string::EncodedString", tags = "2, 3, 4")]
7852    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7853}
7854/// Nested message and enum types in `InternedV8String`.
7855pub mod interned_v8_string {
7856    /// We inline the fields in V8String here to save some bytes in the serialized
7857    /// proto format. Interning is about saving bytes so this makes sense here.
7858    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7859    pub enum EncodedString {
7860        /// ISO/IEC 8859-1:1998 encoding aka latin1
7861        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7862        #[prost(bytes, tag = "2")]
7863        Latin1(::prost::alloc::vec::Vec<u8>),
7864        /// UTF-16 Little Endian Encoding
7865        #[prost(bytes, tag = "3")]
7866        Utf16Le(::prost::alloc::vec::Vec<u8>),
7867        /// UTF-16 Big Endian Encoding
7868        #[prost(bytes, tag = "4")]
7869        Utf16Be(::prost::alloc::vec::Vec<u8>),
7870    }
7871}
7872/// Represents a script that was compiled to generate code. Some V8 code is
7873/// generated out of scripts and will reference a V8Script other types of code
7874/// will not (e.g. builtins).
7875#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7876pub struct InternedV8JsScript {
7877    #[prost(uint64, optional, tag = "1")]
7878    pub iid: ::core::option::Option<u64>,
7879    /// Unique in a given isolate
7880    #[prost(int32, optional, tag = "2")]
7881    pub script_id: ::core::option::Option<i32>,
7882    #[prost(enumeration = "interned_v8_js_script::Type", optional, tag = "3")]
7883    pub r#type: ::core::option::Option<i32>,
7884    #[prost(message, optional, tag = "4")]
7885    pub name: ::core::option::Option<V8String>,
7886    /// Actual source of the script
7887    #[prost(message, optional, tag = "5")]
7888    pub source: ::core::option::Option<V8String>,
7889}
7890/// Nested message and enum types in `InternedV8JsScript`.
7891pub mod interned_v8_js_script {
7892    #[derive(
7893        Clone,
7894        Copy,
7895        Debug,
7896        PartialEq,
7897        Eq,
7898        Hash,
7899        PartialOrd,
7900        Ord,
7901        ::prost::Enumeration
7902    )]
7903    #[repr(i32)]
7904    pub enum Type {
7905        Unknown = 0,
7906        Normal = 1,
7907        Eval = 2,
7908        Module = 3,
7909        Native = 4,
7910        Extension = 5,
7911        Inspector = 6,
7912    }
7913    impl Type {
7914        /// String value of the enum field names used in the ProtoBuf definition.
7915        ///
7916        /// The values are not transformed in any way and thus are considered stable
7917        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7918        pub fn as_str_name(&self) -> &'static str {
7919            match self {
7920                Self::Unknown => "TYPE_UNKNOWN",
7921                Self::Normal => "TYPE_NORMAL",
7922                Self::Eval => "TYPE_EVAL",
7923                Self::Module => "TYPE_MODULE",
7924                Self::Native => "TYPE_NATIVE",
7925                Self::Extension => "TYPE_EXTENSION",
7926                Self::Inspector => "TYPE_INSPECTOR",
7927            }
7928        }
7929        /// Creates an enum from field names used in the ProtoBuf definition.
7930        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7931            match value {
7932                "TYPE_UNKNOWN" => Some(Self::Unknown),
7933                "TYPE_NORMAL" => Some(Self::Normal),
7934                "TYPE_EVAL" => Some(Self::Eval),
7935                "TYPE_MODULE" => Some(Self::Module),
7936                "TYPE_NATIVE" => Some(Self::Native),
7937                "TYPE_EXTENSION" => Some(Self::Extension),
7938                "TYPE_INSPECTOR" => Some(Self::Inspector),
7939                _ => None,
7940            }
7941        }
7942    }
7943}
7944#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7945pub struct InternedV8WasmScript {
7946    #[prost(uint64, optional, tag = "1")]
7947    pub iid: ::core::option::Option<u64>,
7948    /// Unique in a given isolate
7949    #[prost(int32, optional, tag = "2")]
7950    pub script_id: ::core::option::Option<i32>,
7951    #[prost(string, optional, tag = "3")]
7952    pub url: ::core::option::Option<::prost::alloc::string::String>,
7953    /// Raw transferred wasm native module wire bytes.
7954    #[prost(bytes = "vec", optional, tag = "4")]
7955    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7956}
7957#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7958pub struct InternedV8JsFunction {
7959    #[prost(uint64, optional, tag = "1")]
7960    pub iid: ::core::option::Option<u64>,
7961    #[prost(uint64, optional, tag = "2")]
7962    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7963    #[prost(uint64, optional, tag = "3")]
7964    pub v8_js_script_iid: ::core::option::Option<u64>,
7965    #[prost(bool, optional, tag = "4")]
7966    pub is_toplevel: ::core::option::Option<bool>,
7967    #[prost(enumeration = "interned_v8_js_function::Kind", optional, tag = "5")]
7968    pub kind: ::core::option::Option<i32>,
7969    /// Where in the script source this function is defined. This is counted in
7970    /// bytes not characters.
7971    #[prost(uint32, optional, tag = "6")]
7972    pub byte_offset: ::core::option::Option<u32>,
7973    #[prost(uint32, optional, tag = "7")]
7974    pub line: ::core::option::Option<u32>,
7975    #[prost(uint32, optional, tag = "8")]
7976    pub column: ::core::option::Option<u32>,
7977}
7978/// Nested message and enum types in `InternedV8JsFunction`.
7979pub mod interned_v8_js_function {
7980    #[derive(
7981        Clone,
7982        Copy,
7983        Debug,
7984        PartialEq,
7985        Eq,
7986        Hash,
7987        PartialOrd,
7988        Ord,
7989        ::prost::Enumeration
7990    )]
7991    #[repr(i32)]
7992    pub enum Kind {
7993        Unknown = 0,
7994        NormalFunction = 1,
7995        Module = 2,
7996        AsyncModule = 3,
7997        BaseConstructor = 4,
7998        DefaultBaseConstructor = 5,
7999        DefaultDerivedConstructor = 6,
8000        DerivedConstructor = 7,
8001        GetterFunction = 8,
8002        StaticGetterFunction = 9,
8003        SetterFunction = 10,
8004        StaticSetterFunction = 11,
8005        ArrowFunction = 12,
8006        AsyncArrowFunction = 13,
8007        AsyncFunction = 14,
8008        AsyncConciseMethod = 15,
8009        StaticAsyncConciseMethod = 16,
8010        AsyncConciseGeneratorMethod = 17,
8011        StaticAsyncConciseGeneratorMethod = 18,
8012        AsyncGeneratorFunction = 19,
8013        GeneratorFunction = 20,
8014        ConciseGeneratorMethod = 21,
8015        StaticConciseGeneratorMethod = 22,
8016        ConciseMethod = 23,
8017        StaticConciseMethod = 24,
8018        ClassMembersInitializerFunction = 25,
8019        ClassStaticInitializerFunction = 26,
8020        Invalid = 27,
8021    }
8022    impl Kind {
8023        /// String value of the enum field names used in the ProtoBuf definition.
8024        ///
8025        /// The values are not transformed in any way and thus are considered stable
8026        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8027        pub fn as_str_name(&self) -> &'static str {
8028            match self {
8029                Self::Unknown => "KIND_UNKNOWN",
8030                Self::NormalFunction => "KIND_NORMAL_FUNCTION",
8031                Self::Module => "KIND_MODULE",
8032                Self::AsyncModule => "KIND_ASYNC_MODULE",
8033                Self::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8034                Self::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8035                Self::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8036                Self::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8037                Self::GetterFunction => "KIND_GETTER_FUNCTION",
8038                Self::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8039                Self::SetterFunction => "KIND_SETTER_FUNCTION",
8040                Self::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8041                Self::ArrowFunction => "KIND_ARROW_FUNCTION",
8042                Self::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8043                Self::AsyncFunction => "KIND_ASYNC_FUNCTION",
8044                Self::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8045                Self::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8046                Self::AsyncConciseGeneratorMethod => {
8047                    "KIND_ASYNC_CONCISE_GENERATOR_METHOD"
8048                }
8049                Self::StaticAsyncConciseGeneratorMethod => {
8050                    "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD"
8051                }
8052                Self::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8053                Self::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8054                Self::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8055                Self::StaticConciseGeneratorMethod => {
8056                    "KIND_STATIC_CONCISE_GENERATOR_METHOD"
8057                }
8058                Self::ConciseMethod => "KIND_CONCISE_METHOD",
8059                Self::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8060                Self::ClassMembersInitializerFunction => {
8061                    "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION"
8062                }
8063                Self::ClassStaticInitializerFunction => {
8064                    "KIND_CLASS_STATIC_INITIALIZER_FUNCTION"
8065                }
8066                Self::Invalid => "KIND_INVALID",
8067            }
8068        }
8069        /// Creates an enum from field names used in the ProtoBuf definition.
8070        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8071            match value {
8072                "KIND_UNKNOWN" => Some(Self::Unknown),
8073                "KIND_NORMAL_FUNCTION" => Some(Self::NormalFunction),
8074                "KIND_MODULE" => Some(Self::Module),
8075                "KIND_ASYNC_MODULE" => Some(Self::AsyncModule),
8076                "KIND_BASE_CONSTRUCTOR" => Some(Self::BaseConstructor),
8077                "KIND_DEFAULT_BASE_CONSTRUCTOR" => Some(Self::DefaultBaseConstructor),
8078                "KIND_DEFAULT_DERIVED_CONSTRUCTOR" => {
8079                    Some(Self::DefaultDerivedConstructor)
8080                }
8081                "KIND_DERIVED_CONSTRUCTOR" => Some(Self::DerivedConstructor),
8082                "KIND_GETTER_FUNCTION" => Some(Self::GetterFunction),
8083                "KIND_STATIC_GETTER_FUNCTION" => Some(Self::StaticGetterFunction),
8084                "KIND_SETTER_FUNCTION" => Some(Self::SetterFunction),
8085                "KIND_STATIC_SETTER_FUNCTION" => Some(Self::StaticSetterFunction),
8086                "KIND_ARROW_FUNCTION" => Some(Self::ArrowFunction),
8087                "KIND_ASYNC_ARROW_FUNCTION" => Some(Self::AsyncArrowFunction),
8088                "KIND_ASYNC_FUNCTION" => Some(Self::AsyncFunction),
8089                "KIND_ASYNC_CONCISE_METHOD" => Some(Self::AsyncConciseMethod),
8090                "KIND_STATIC_ASYNC_CONCISE_METHOD" => {
8091                    Some(Self::StaticAsyncConciseMethod)
8092                }
8093                "KIND_ASYNC_CONCISE_GENERATOR_METHOD" => {
8094                    Some(Self::AsyncConciseGeneratorMethod)
8095                }
8096                "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD" => {
8097                    Some(Self::StaticAsyncConciseGeneratorMethod)
8098                }
8099                "KIND_ASYNC_GENERATOR_FUNCTION" => Some(Self::AsyncGeneratorFunction),
8100                "KIND_GENERATOR_FUNCTION" => Some(Self::GeneratorFunction),
8101                "KIND_CONCISE_GENERATOR_METHOD" => Some(Self::ConciseGeneratorMethod),
8102                "KIND_STATIC_CONCISE_GENERATOR_METHOD" => {
8103                    Some(Self::StaticConciseGeneratorMethod)
8104                }
8105                "KIND_CONCISE_METHOD" => Some(Self::ConciseMethod),
8106                "KIND_STATIC_CONCISE_METHOD" => Some(Self::StaticConciseMethod),
8107                "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION" => {
8108                    Some(Self::ClassMembersInitializerFunction)
8109                }
8110                "KIND_CLASS_STATIC_INITIALIZER_FUNCTION" => {
8111                    Some(Self::ClassStaticInitializerFunction)
8112                }
8113                "KIND_INVALID" => Some(Self::Invalid),
8114                _ => None,
8115            }
8116        }
8117    }
8118}
8119/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8120/// engine.
8121#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8122pub struct InternedV8Isolate {
8123    #[prost(uint64, optional, tag = "1")]
8124    pub iid: ::core::option::Option<u64>,
8125    #[prost(uint32, optional, tag = "2")]
8126    pub pid: ::core::option::Option<u32>,
8127    /// Process unique isolate id.
8128    #[prost(int32, optional, tag = "3")]
8129    pub isolate_id: ::core::option::Option<i32>,
8130    #[prost(message, optional, tag = "4")]
8131    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8132    /// The embedded blob holds code for built in functions that are precompiled in
8133    /// the V8 library.
8134    #[prost(uint64, optional, tag = "5")]
8135    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8136    #[prost(uint64, optional, tag = "6")]
8137    pub embedded_blob_code_size: ::core::option::Option<u64>,
8138}
8139/// Nested message and enum types in `InternedV8Isolate`.
8140pub mod interned_v8_isolate {
8141    /// A code range is a virtual memory cage that may contain executable code.
8142    /// Depending on the Isolate settings the Isolate might have one or not.
8143    /// See:
8144    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
8145    /// If the isolate defines code range this will be tracked here.
8146    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8147    pub struct CodeRange {
8148        #[prost(uint64, optional, tag = "1")]
8149        pub base_address: ::core::option::Option<u64>,
8150        #[prost(uint64, optional, tag = "2")]
8151        pub size: ::core::option::Option<u64>,
8152        /// Used when short builtin calls are enabled, where embedded builtins are
8153        /// copied into the CodeRange so calls can be nearer.
8154        #[prost(uint64, optional, tag = "3")]
8155        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
8156        /// Whether this code range is shared with other Isolates in the same process
8157        #[prost(bool, optional, tag = "4")]
8158        pub is_process_wide: ::core::option::Option<bool>,
8159    }
8160}
8161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8162pub struct V8JsCode {
8163    #[prost(uint64, optional, tag = "1")]
8164    pub v8_isolate_iid: ::core::option::Option<u64>,
8165    #[prost(uint32, optional, tag = "2")]
8166    pub tid: ::core::option::Option<u32>,
8167    #[prost(uint64, optional, tag = "3")]
8168    pub v8_js_function_iid: ::core::option::Option<u64>,
8169    #[prost(enumeration = "v8_js_code::Tier", optional, tag = "4")]
8170    pub tier: ::core::option::Option<i32>,
8171    #[prost(uint64, optional, tag = "5")]
8172    pub instruction_start: ::core::option::Option<u64>,
8173    #[prost(uint64, optional, tag = "6")]
8174    pub instruction_size_bytes: ::core::option::Option<u64>,
8175    #[prost(oneof = "v8_js_code::Instructions", tags = "7, 8")]
8176    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8177    #[prost(oneof = "v8_js_code::SourceMap", tags = "9, 10, 11")]
8178    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8179}
8180/// Nested message and enum types in `V8JsCode`.
8181pub mod v8_js_code {
8182    #[derive(
8183        Clone,
8184        Copy,
8185        Debug,
8186        PartialEq,
8187        Eq,
8188        Hash,
8189        PartialOrd,
8190        Ord,
8191        ::prost::Enumeration
8192    )]
8193    #[repr(i32)]
8194    pub enum Tier {
8195        Unknown = 0,
8196        Ignition = 1,
8197        Sparkplug = 2,
8198        Maglev = 3,
8199        Turboshaft = 4,
8200        Turbofan = 5,
8201    }
8202    impl Tier {
8203        /// String value of the enum field names used in the ProtoBuf definition.
8204        ///
8205        /// The values are not transformed in any way and thus are considered stable
8206        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8207        pub fn as_str_name(&self) -> &'static str {
8208            match self {
8209                Self::Unknown => "TIER_UNKNOWN",
8210                Self::Ignition => "TIER_IGNITION",
8211                Self::Sparkplug => "TIER_SPARKPLUG",
8212                Self::Maglev => "TIER_MAGLEV",
8213                Self::Turboshaft => "TIER_TURBOSHAFT",
8214                Self::Turbofan => "TIER_TURBOFAN",
8215            }
8216        }
8217        /// Creates an enum from field names used in the ProtoBuf definition.
8218        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8219            match value {
8220                "TIER_UNKNOWN" => Some(Self::Unknown),
8221                "TIER_IGNITION" => Some(Self::Ignition),
8222                "TIER_SPARKPLUG" => Some(Self::Sparkplug),
8223                "TIER_MAGLEV" => Some(Self::Maglev),
8224                "TIER_TURBOSHAFT" => Some(Self::Turboshaft),
8225                "TIER_TURBOFAN" => Some(Self::Turbofan),
8226                _ => None,
8227            }
8228        }
8229    }
8230    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8231    pub enum Instructions {
8232        #[prost(bytes, tag = "7")]
8233        MachineCode(::prost::alloc::vec::Vec<u8>),
8234        #[prost(bytes, tag = "8")]
8235        Bytecode(::prost::alloc::vec::Vec<u8>),
8236    }
8237    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8238    pub enum SourceMap {
8239        /// For Ignition / bytecode:
8240        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8241        ///     related js function)
8242        #[prost(bytes, tag = "9")]
8243        SourcePositions(::prost::alloc::vec::Vec<u8>),
8244        /// For Sparkplug code:
8245        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8246        ///     ignition code object for the same js-function.
8247        #[prost(bytes, tag = "10")]
8248        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8249        /// For optimized code:
8250        /// - Maps machine-code-ranges to bytecode ranges in various
8251        ///    ignition code objects (inlining might happen from multiple functions)
8252        #[prost(bytes, tag = "11")]
8253        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8254    }
8255}
8256#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8257pub struct V8InternalCode {
8258    #[prost(uint64, optional, tag = "1")]
8259    pub v8_isolate_iid: ::core::option::Option<u64>,
8260    #[prost(uint32, optional, tag = "2")]
8261    pub tid: ::core::option::Option<u32>,
8262    #[prost(string, optional, tag = "3")]
8263    pub name: ::core::option::Option<::prost::alloc::string::String>,
8264    #[prost(enumeration = "v8_internal_code::Type", optional, tag = "4")]
8265    pub r#type: ::core::option::Option<i32>,
8266    #[prost(int32, optional, tag = "5")]
8267    pub builtin_id: ::core::option::Option<i32>,
8268    #[prost(uint64, optional, tag = "6")]
8269    pub instruction_start: ::core::option::Option<u64>,
8270    #[prost(uint64, optional, tag = "7")]
8271    pub instruction_size_bytes: ::core::option::Option<u64>,
8272    #[prost(bytes = "vec", optional, tag = "8")]
8273    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8274}
8275/// Nested message and enum types in `V8InternalCode`.
8276pub mod v8_internal_code {
8277    #[derive(
8278        Clone,
8279        Copy,
8280        Debug,
8281        PartialEq,
8282        Eq,
8283        Hash,
8284        PartialOrd,
8285        Ord,
8286        ::prost::Enumeration
8287    )]
8288    #[repr(i32)]
8289    pub enum Type {
8290        Unknown = 0,
8291        BytecodeHandler = 1,
8292        ForTesting = 2,
8293        Builtin = 3,
8294        WasmFunction = 4,
8295        WasmToCapiFunction = 5,
8296        WasmToJsFunction = 6,
8297        JsToWasmFunction = 7,
8298        JsToJsFunction = 8,
8299        CWasmEntry = 9,
8300    }
8301    impl Type {
8302        /// String value of the enum field names used in the ProtoBuf definition.
8303        ///
8304        /// The values are not transformed in any way and thus are considered stable
8305        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8306        pub fn as_str_name(&self) -> &'static str {
8307            match self {
8308                Self::Unknown => "TYPE_UNKNOWN",
8309                Self::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8310                Self::ForTesting => "TYPE_FOR_TESTING",
8311                Self::Builtin => "TYPE_BUILTIN",
8312                Self::WasmFunction => "TYPE_WASM_FUNCTION",
8313                Self::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8314                Self::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8315                Self::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8316                Self::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8317                Self::CWasmEntry => "TYPE_C_WASM_ENTRY",
8318            }
8319        }
8320        /// Creates an enum from field names used in the ProtoBuf definition.
8321        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8322            match value {
8323                "TYPE_UNKNOWN" => Some(Self::Unknown),
8324                "TYPE_BYTECODE_HANDLER" => Some(Self::BytecodeHandler),
8325                "TYPE_FOR_TESTING" => Some(Self::ForTesting),
8326                "TYPE_BUILTIN" => Some(Self::Builtin),
8327                "TYPE_WASM_FUNCTION" => Some(Self::WasmFunction),
8328                "TYPE_WASM_TO_CAPI_FUNCTION" => Some(Self::WasmToCapiFunction),
8329                "TYPE_WASM_TO_JS_FUNCTION" => Some(Self::WasmToJsFunction),
8330                "TYPE_JS_TO_WASM_FUNCTION" => Some(Self::JsToWasmFunction),
8331                "TYPE_JS_TO_JS_FUNCTION" => Some(Self::JsToJsFunction),
8332                "TYPE_C_WASM_ENTRY" => Some(Self::CWasmEntry),
8333                _ => None,
8334            }
8335        }
8336    }
8337}
8338#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8339pub struct V8WasmCode {
8340    #[prost(uint64, optional, tag = "1")]
8341    pub v8_isolate_iid: ::core::option::Option<u64>,
8342    #[prost(uint32, optional, tag = "2")]
8343    pub tid: ::core::option::Option<u32>,
8344    #[prost(uint64, optional, tag = "3")]
8345    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8346    #[prost(string, optional, tag = "4")]
8347    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8348    #[prost(enumeration = "v8_wasm_code::Tier", optional, tag = "5")]
8349    pub tier: ::core::option::Option<i32>,
8350    #[prost(int32, optional, tag = "6")]
8351    pub code_offset_in_module: ::core::option::Option<i32>,
8352    #[prost(uint64, optional, tag = "7")]
8353    pub instruction_start: ::core::option::Option<u64>,
8354    #[prost(uint64, optional, tag = "8")]
8355    pub instruction_size_bytes: ::core::option::Option<u64>,
8356    #[prost(bytes = "vec", optional, tag = "9")]
8357    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8358}
8359/// Nested message and enum types in `V8WasmCode`.
8360pub mod v8_wasm_code {
8361    #[derive(
8362        Clone,
8363        Copy,
8364        Debug,
8365        PartialEq,
8366        Eq,
8367        Hash,
8368        PartialOrd,
8369        Ord,
8370        ::prost::Enumeration
8371    )]
8372    #[repr(i32)]
8373    pub enum Tier {
8374        Unknown = 0,
8375        Liftoff = 1,
8376        Turbofan = 2,
8377    }
8378    impl Tier {
8379        /// String value of the enum field names used in the ProtoBuf definition.
8380        ///
8381        /// The values are not transformed in any way and thus are considered stable
8382        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8383        pub fn as_str_name(&self) -> &'static str {
8384            match self {
8385                Self::Unknown => "TIER_UNKNOWN",
8386                Self::Liftoff => "TIER_LIFTOFF",
8387                Self::Turbofan => "TIER_TURBOFAN",
8388            }
8389        }
8390        /// Creates an enum from field names used in the ProtoBuf definition.
8391        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8392            match value {
8393                "TIER_UNKNOWN" => Some(Self::Unknown),
8394                "TIER_LIFTOFF" => Some(Self::Liftoff),
8395                "TIER_TURBOFAN" => Some(Self::Turbofan),
8396                _ => None,
8397            }
8398        }
8399    }
8400}
8401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8402pub struct V8RegExpCode {
8403    #[prost(uint64, optional, tag = "1")]
8404    pub v8_isolate_iid: ::core::option::Option<u64>,
8405    #[prost(uint32, optional, tag = "2")]
8406    pub tid: ::core::option::Option<u32>,
8407    #[prost(message, optional, tag = "3")]
8408    pub pattern: ::core::option::Option<V8String>,
8409    #[prost(uint64, optional, tag = "4")]
8410    pub instruction_start: ::core::option::Option<u64>,
8411    #[prost(uint64, optional, tag = "5")]
8412    pub instruction_size_bytes: ::core::option::Option<u64>,
8413    #[prost(bytes = "vec", optional, tag = "6")]
8414    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8415}
8416/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8417/// memory by V8's GC.
8418#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8419pub struct V8CodeMove {
8420    #[prost(uint64, optional, tag = "1")]
8421    pub isolate_iid: ::core::option::Option<u64>,
8422    #[prost(uint32, optional, tag = "2")]
8423    pub tid: ::core::option::Option<u32>,
8424    #[prost(uint64, optional, tag = "3")]
8425    pub from_instruction_start_address: ::core::option::Option<u64>,
8426    #[prost(uint64, optional, tag = "4")]
8427    pub to_instruction_start_address: ::core::option::Option<u64>,
8428    #[prost(uint64, optional, tag = "5")]
8429    pub instruction_size_bytes: ::core::option::Option<u64>,
8430    #[prost(oneof = "v8_code_move::ToInstructions", tags = "6, 7")]
8431    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8432}
8433/// Nested message and enum types in `V8CodeMove`.
8434pub mod v8_code_move {
8435    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8436    pub enum ToInstructions {
8437        #[prost(bytes, tag = "6")]
8438        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8439        #[prost(bytes, tag = "7")]
8440        ToBytecode(::prost::alloc::vec::Vec<u8>),
8441    }
8442}
8443#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8444pub struct V8CodeDefaults {
8445    #[prost(uint32, optional, tag = "1")]
8446    pub tid: ::core::option::Option<u32>,
8447}
8448/// A snapshot of clock readings to allow for trace alignment.
8449#[derive(Clone, PartialEq, ::prost::Message)]
8450pub struct ClockSnapshot {
8451    #[prost(message, repeated, tag = "1")]
8452    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8453    /// The authoritative clock domain for the trace. When set, this definitively
8454    /// overrides the trace time clock. If not set, the trace time clock remains
8455    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
8456    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
8457    /// snapshots). Trace processor will attempt to translate packet/event
8458    /// timestamps from various data sources (and their chosen clock domains) to
8459    /// this domain during import.
8460    #[prost(enumeration = "BuiltinClock", optional, tag = "2")]
8461    pub primary_trace_clock: ::core::option::Option<i32>,
8462}
8463/// Nested message and enum types in `ClockSnapshot`.
8464pub mod clock_snapshot {
8465    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8466    pub struct Clock {
8467        /// Clock IDs have the following semantic:
8468        /// \[1, 63\]:    Builtin types, see BuiltinClock from
8469        ///              ../common/builtin_clock.proto.
8470        /// \[64, 127\]:  User-defined clocks. These clocks are sequence-scoped. They
8471        ///              are only valid within the same |trusted_packet_sequence_id|
8472        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8473        ///              that emitted the clock snapshot).
8474        /// \[128, MAX\]: Reserved for future use. The idea is to allow global clock
8475        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8476        #[prost(uint32, optional, tag = "1")]
8477        pub clock_id: ::core::option::Option<u32>,
8478        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8479        /// unit_multiplier_ns field below.
8480        #[prost(uint64, optional, tag = "2")]
8481        pub timestamp: ::core::option::Option<u64>,
8482        /// When true each TracePacket's timestamp should be interpreted as a delta
8483        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8484        /// the same packet_sequence_id. Should only be used for user-defined
8485        /// sequence-local clocks. The first packet timestamp after each
8486        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8487        /// the ClockSnapshot.
8488        #[prost(bool, optional, tag = "3")]
8489        pub is_incremental: ::core::option::Option<bool>,
8490        /// Allows to specify a custom unit different than the default (ns) for this
8491        /// clock domain.
8492        ///
8493        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8494        ///    as 3000 ns = 3 us.
8495        /// * All snapshots for the same clock within a trace need to use the same
8496        ///    unit.
8497        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8498        #[prost(uint64, optional, tag = "4")]
8499        pub unit_multiplier_ns: ::core::option::Option<u64>,
8500    }
8501    /// Nested message and enum types in `Clock`.
8502    pub mod clock {
8503        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8504        #[derive(
8505            Clone,
8506            Copy,
8507            Debug,
8508            PartialEq,
8509            Eq,
8510            Hash,
8511            PartialOrd,
8512            Ord,
8513            ::prost::Enumeration
8514        )]
8515        #[repr(i32)]
8516        pub enum BuiltinClocks {
8517            Unknown = 0,
8518            Realtime = 1,
8519            RealtimeCoarse = 2,
8520            Monotonic = 3,
8521            MonotonicCoarse = 4,
8522            MonotonicRaw = 5,
8523            Boottime = 6,
8524            BuiltinClockMaxId = 63,
8525        }
8526        impl BuiltinClocks {
8527            /// String value of the enum field names used in the ProtoBuf definition.
8528            ///
8529            /// The values are not transformed in any way and thus are considered stable
8530            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8531            pub fn as_str_name(&self) -> &'static str {
8532                match self {
8533                    Self::Unknown => "UNKNOWN",
8534                    Self::Realtime => "REALTIME",
8535                    Self::RealtimeCoarse => "REALTIME_COARSE",
8536                    Self::Monotonic => "MONOTONIC",
8537                    Self::MonotonicCoarse => "MONOTONIC_COARSE",
8538                    Self::MonotonicRaw => "MONOTONIC_RAW",
8539                    Self::Boottime => "BOOTTIME",
8540                    Self::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8541                }
8542            }
8543            /// Creates an enum from field names used in the ProtoBuf definition.
8544            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8545                match value {
8546                    "UNKNOWN" => Some(Self::Unknown),
8547                    "REALTIME" => Some(Self::Realtime),
8548                    "REALTIME_COARSE" => Some(Self::RealtimeCoarse),
8549                    "MONOTONIC" => Some(Self::Monotonic),
8550                    "MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
8551                    "MONOTONIC_RAW" => Some(Self::MonotonicRaw),
8552                    "BOOTTIME" => Some(Self::Boottime),
8553                    "BUILTIN_CLOCK_MAX_ID" => Some(Self::BuiltinClockMaxId),
8554                    _ => None,
8555                }
8556            }
8557        }
8558    }
8559}
8560/// Proto definition based on the Thread_v2 CSwitch class definition
8561/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8562#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8563pub struct CSwitchEtwEvent {
8564    /// New thread ID after the switch.
8565    #[prost(uint32, optional, tag = "1")]
8566    pub new_thread_id: ::core::option::Option<u32>,
8567    /// Previous thread ID.
8568    #[prost(uint32, optional, tag = "2")]
8569    pub old_thread_id: ::core::option::Option<u32>,
8570    /// Thread priority of the new thread.
8571    #[prost(sint32, optional, tag = "3")]
8572    pub new_thread_priority: ::core::option::Option<i32>,
8573    /// Thread priority of the previous thread.
8574    #[prost(sint32, optional, tag = "4")]
8575    pub old_thread_priority: ::core::option::Option<i32>,
8576    /// The index of the C-state that was last used by the processor. A value of 0
8577    /// represents the lightest idle state with higher values representing deeper
8578    /// C-states.
8579    #[prost(uint32, optional, tag = "5")]
8580    pub previous_c_state: ::core::option::Option<u32>,
8581    /// Ideal wait time of the previous thread.
8582    #[prost(sint32, optional, tag = "9")]
8583    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8584    /// Wait time for the new thread.
8585    #[prost(uint32, optional, tag = "10")]
8586    pub new_thread_wait_time: ::core::option::Option<u32>,
8587    #[prost(oneof = "c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags = "6, 11")]
8588    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<
8589        c_switch_etw_event::OldThreadWaitReasonEnumOrInt,
8590    >,
8591    #[prost(oneof = "c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags = "7, 12")]
8592    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<
8593        c_switch_etw_event::OldThreadWaitModeEnumOrInt,
8594    >,
8595    #[prost(oneof = "c_switch_etw_event::OldThreadStateEnumOrInt", tags = "8, 13")]
8596    pub old_thread_state_enum_or_int: ::core::option::Option<
8597        c_switch_etw_event::OldThreadStateEnumOrInt,
8598    >,
8599}
8600/// Nested message and enum types in `CSwitchEtwEvent`.
8601pub mod c_switch_etw_event {
8602    /// Wait reason for the previous thread. The ordering is important as based on
8603    /// the OldThreadWaitReason definition from the link above. The following are
8604    /// the possible values:
8605    #[derive(
8606        Clone,
8607        Copy,
8608        Debug,
8609        PartialEq,
8610        Eq,
8611        Hash,
8612        PartialOrd,
8613        Ord,
8614        ::prost::Enumeration
8615    )]
8616    #[repr(i32)]
8617    pub enum OldThreadWaitReason {
8618        Executive = 0,
8619        FreePage = 1,
8620        PageIn = 2,
8621        PoolAllocation = 3,
8622        DelayExecution = 4,
8623        Suspend = 5,
8624        UserRequest = 6,
8625        WrExecutive = 7,
8626        WrFreePage = 8,
8627        WrPageIn = 9,
8628        WrPoolAllocation = 10,
8629        WrDelayExecution = 11,
8630        WrSuspended = 12,
8631        WrUserRequest = 13,
8632        WrEventPair = 14,
8633        WrQueue = 15,
8634        WrLpcReceiver = 16,
8635        WrLpcReply = 17,
8636        WrVirtualMemory = 18,
8637        WrPageOut = 19,
8638        WrRendezVous = 20,
8639        WrKeyedEvent = 21,
8640        WrTerminated = 22,
8641        WrProcessInSwap = 23,
8642        WrCpuRateControl = 24,
8643        WrCalloutStack = 25,
8644        WrKernel = 26,
8645        WrResource = 27,
8646        WrPushLock = 28,
8647        WrMutex = 29,
8648        WrQuantumEnd = 30,
8649        WrDispatchInt = 31,
8650        WrPreempted = 32,
8651        WrYieldExecution = 33,
8652        WrFastMutex = 34,
8653        WrGuardMutex = 35,
8654        WrRundown = 36,
8655        MaximumWaitReason = 37,
8656    }
8657    impl OldThreadWaitReason {
8658        /// String value of the enum field names used in the ProtoBuf definition.
8659        ///
8660        /// The values are not transformed in any way and thus are considered stable
8661        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8662        pub fn as_str_name(&self) -> &'static str {
8663            match self {
8664                Self::Executive => "EXECUTIVE",
8665                Self::FreePage => "FREE_PAGE",
8666                Self::PageIn => "PAGE_IN",
8667                Self::PoolAllocation => "POOL_ALLOCATION",
8668                Self::DelayExecution => "DELAY_EXECUTION",
8669                Self::Suspend => "SUSPEND",
8670                Self::UserRequest => "USER_REQUEST",
8671                Self::WrExecutive => "WR_EXECUTIVE",
8672                Self::WrFreePage => "WR_FREE_PAGE",
8673                Self::WrPageIn => "WR_PAGE_IN",
8674                Self::WrPoolAllocation => "WR_POOL_ALLOCATION",
8675                Self::WrDelayExecution => "WR_DELAY_EXECUTION",
8676                Self::WrSuspended => "WR_SUSPENDED",
8677                Self::WrUserRequest => "WR_USER_REQUEST",
8678                Self::WrEventPair => "WR_EVENT_PAIR",
8679                Self::WrQueue => "WR_QUEUE",
8680                Self::WrLpcReceiver => "WR_LPC_RECEIVER",
8681                Self::WrLpcReply => "WR_LPC_REPLY",
8682                Self::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8683                Self::WrPageOut => "WR_PAGE_OUT",
8684                Self::WrRendezVous => "WR_RENDEZ_VOUS",
8685                Self::WrKeyedEvent => "WR_KEYED_EVENT",
8686                Self::WrTerminated => "WR_TERMINATED",
8687                Self::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8688                Self::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8689                Self::WrCalloutStack => "WR_CALLOUT_STACK",
8690                Self::WrKernel => "WR_KERNEL",
8691                Self::WrResource => "WR_RESOURCE",
8692                Self::WrPushLock => "WR_PUSH_LOCK",
8693                Self::WrMutex => "WR_MUTEX",
8694                Self::WrQuantumEnd => "WR_QUANTUM_END",
8695                Self::WrDispatchInt => "WR_DISPATCH_INT",
8696                Self::WrPreempted => "WR_PREEMPTED",
8697                Self::WrYieldExecution => "WR_YIELD_EXECUTION",
8698                Self::WrFastMutex => "WR_FAST_MUTEX",
8699                Self::WrGuardMutex => "WR_GUARD_MUTEX",
8700                Self::WrRundown => "WR_RUNDOWN",
8701                Self::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8702            }
8703        }
8704        /// Creates an enum from field names used in the ProtoBuf definition.
8705        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8706            match value {
8707                "EXECUTIVE" => Some(Self::Executive),
8708                "FREE_PAGE" => Some(Self::FreePage),
8709                "PAGE_IN" => Some(Self::PageIn),
8710                "POOL_ALLOCATION" => Some(Self::PoolAllocation),
8711                "DELAY_EXECUTION" => Some(Self::DelayExecution),
8712                "SUSPEND" => Some(Self::Suspend),
8713                "USER_REQUEST" => Some(Self::UserRequest),
8714                "WR_EXECUTIVE" => Some(Self::WrExecutive),
8715                "WR_FREE_PAGE" => Some(Self::WrFreePage),
8716                "WR_PAGE_IN" => Some(Self::WrPageIn),
8717                "WR_POOL_ALLOCATION" => Some(Self::WrPoolAllocation),
8718                "WR_DELAY_EXECUTION" => Some(Self::WrDelayExecution),
8719                "WR_SUSPENDED" => Some(Self::WrSuspended),
8720                "WR_USER_REQUEST" => Some(Self::WrUserRequest),
8721                "WR_EVENT_PAIR" => Some(Self::WrEventPair),
8722                "WR_QUEUE" => Some(Self::WrQueue),
8723                "WR_LPC_RECEIVER" => Some(Self::WrLpcReceiver),
8724                "WR_LPC_REPLY" => Some(Self::WrLpcReply),
8725                "WR_VIRTUAL_MEMORY" => Some(Self::WrVirtualMemory),
8726                "WR_PAGE_OUT" => Some(Self::WrPageOut),
8727                "WR_RENDEZ_VOUS" => Some(Self::WrRendezVous),
8728                "WR_KEYED_EVENT" => Some(Self::WrKeyedEvent),
8729                "WR_TERMINATED" => Some(Self::WrTerminated),
8730                "WR_PROCESS_IN_SWAP" => Some(Self::WrProcessInSwap),
8731                "WR_CPU_RATE_CONTROL" => Some(Self::WrCpuRateControl),
8732                "WR_CALLOUT_STACK" => Some(Self::WrCalloutStack),
8733                "WR_KERNEL" => Some(Self::WrKernel),
8734                "WR_RESOURCE" => Some(Self::WrResource),
8735                "WR_PUSH_LOCK" => Some(Self::WrPushLock),
8736                "WR_MUTEX" => Some(Self::WrMutex),
8737                "WR_QUANTUM_END" => Some(Self::WrQuantumEnd),
8738                "WR_DISPATCH_INT" => Some(Self::WrDispatchInt),
8739                "WR_PREEMPTED" => Some(Self::WrPreempted),
8740                "WR_YIELD_EXECUTION" => Some(Self::WrYieldExecution),
8741                "WR_FAST_MUTEX" => Some(Self::WrFastMutex),
8742                "WR_GUARD_MUTEX" => Some(Self::WrGuardMutex),
8743                "WR_RUNDOWN" => Some(Self::WrRundown),
8744                "MAXIMUM_WAIT_REASON" => Some(Self::MaximumWaitReason),
8745                _ => None,
8746            }
8747        }
8748    }
8749    /// Wait mode for the previous thread. The ordering is important as based on
8750    /// the OldThreadWaitMode definition from the link above. The following are the
8751    /// possible values:
8752    #[derive(
8753        Clone,
8754        Copy,
8755        Debug,
8756        PartialEq,
8757        Eq,
8758        Hash,
8759        PartialOrd,
8760        Ord,
8761        ::prost::Enumeration
8762    )]
8763    #[repr(i32)]
8764    pub enum OldThreadWaitMode {
8765        KernelMode = 0,
8766        UserMode = 1,
8767    }
8768    impl OldThreadWaitMode {
8769        /// String value of the enum field names used in the ProtoBuf definition.
8770        ///
8771        /// The values are not transformed in any way and thus are considered stable
8772        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8773        pub fn as_str_name(&self) -> &'static str {
8774            match self {
8775                Self::KernelMode => "KERNEL_MODE",
8776                Self::UserMode => "USER_MODE",
8777            }
8778        }
8779        /// Creates an enum from field names used in the ProtoBuf definition.
8780        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8781            match value {
8782                "KERNEL_MODE" => Some(Self::KernelMode),
8783                "USER_MODE" => Some(Self::UserMode),
8784                _ => None,
8785            }
8786        }
8787    }
8788    /// State of the previous thread. The ordering is important as based on the
8789    /// OldThreadState definition from the link above. The following are the
8790    /// possible state values:
8791    #[derive(
8792        Clone,
8793        Copy,
8794        Debug,
8795        PartialEq,
8796        Eq,
8797        Hash,
8798        PartialOrd,
8799        Ord,
8800        ::prost::Enumeration
8801    )]
8802    #[repr(i32)]
8803    pub enum OldThreadState {
8804        Initialized = 0,
8805        Ready = 1,
8806        Running = 2,
8807        Standby = 3,
8808        Terminated = 4,
8809        Waiting = 5,
8810        Transition = 6,
8811        DeferredReady = 7,
8812    }
8813    impl OldThreadState {
8814        /// String value of the enum field names used in the ProtoBuf definition.
8815        ///
8816        /// The values are not transformed in any way and thus are considered stable
8817        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8818        pub fn as_str_name(&self) -> &'static str {
8819            match self {
8820                Self::Initialized => "INITIALIZED",
8821                Self::Ready => "READY",
8822                Self::Running => "RUNNING",
8823                Self::Standby => "STANDBY",
8824                Self::Terminated => "TERMINATED",
8825                Self::Waiting => "WAITING",
8826                Self::Transition => "TRANSITION",
8827                Self::DeferredReady => "DEFERRED_READY",
8828            }
8829        }
8830        /// Creates an enum from field names used in the ProtoBuf definition.
8831        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8832            match value {
8833                "INITIALIZED" => Some(Self::Initialized),
8834                "READY" => Some(Self::Ready),
8835                "RUNNING" => Some(Self::Running),
8836                "STANDBY" => Some(Self::Standby),
8837                "TERMINATED" => Some(Self::Terminated),
8838                "WAITING" => Some(Self::Waiting),
8839                "TRANSITION" => Some(Self::Transition),
8840                "DEFERRED_READY" => Some(Self::DeferredReady),
8841                _ => None,
8842            }
8843        }
8844    }
8845    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8846    pub enum OldThreadWaitReasonEnumOrInt {
8847        #[prost(enumeration = "OldThreadWaitReason", tag = "6")]
8848        OldThreadWaitReason(i32),
8849        #[prost(int32, tag = "11")]
8850        OldThreadWaitReasonInt(i32),
8851    }
8852    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8853    pub enum OldThreadWaitModeEnumOrInt {
8854        #[prost(enumeration = "OldThreadWaitMode", tag = "7")]
8855        OldThreadWaitMode(i32),
8856        #[prost(int32, tag = "12")]
8857        OldThreadWaitModeInt(i32),
8858    }
8859    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8860    pub enum OldThreadStateEnumOrInt {
8861        #[prost(enumeration = "OldThreadState", tag = "8")]
8862        OldThreadState(i32),
8863        #[prost(sint32, tag = "13")]
8864        OldThreadStateInt(i32),
8865    }
8866}
8867/// Proto definition based on the Thread_v2 CSwitch class definition
8868/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8869#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8870pub struct ReadyThreadEtwEvent {
8871    /// The thread identifier of the thread being readied for execution.
8872    #[prost(uint32, optional, tag = "1")]
8873    pub t_thread_id: ::core::option::Option<u32>,
8874    ///   The value by which the priority is being adjusted.
8875    #[prost(sint32, optional, tag = "3")]
8876    pub adjust_increment: ::core::option::Option<i32>,
8877    #[prost(oneof = "ready_thread_etw_event::AdjustReasonEnumOrInt", tags = "2, 5")]
8878    pub adjust_reason_enum_or_int: ::core::option::Option<
8879        ready_thread_etw_event::AdjustReasonEnumOrInt,
8880    >,
8881    #[prost(oneof = "ready_thread_etw_event::FlagEnumOrInt", tags = "4, 6")]
8882    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8883}
8884/// Nested message and enum types in `ReadyThreadEtwEvent`.
8885pub mod ready_thread_etw_event {
8886    /// The reason for the priority boost. The ordering is important as based on
8887    /// the AdjustReason definition from the link above.
8888    #[derive(
8889        Clone,
8890        Copy,
8891        Debug,
8892        PartialEq,
8893        Eq,
8894        Hash,
8895        PartialOrd,
8896        Ord,
8897        ::prost::Enumeration
8898    )]
8899    #[repr(i32)]
8900    pub enum AdjustReason {
8901        IgnoreTheIncrement = 0,
8902        /// Apply the increment, which will decay incrementally at the end of each
8903        /// quantum.
8904        ApplyIncrement = 1,
8905        /// Apply the increment as a boost that will decay in its entirety at quantum
8906        /// (typically for priority donation).
8907        ApplyIncrementBoost = 2,
8908    }
8909    impl AdjustReason {
8910        /// String value of the enum field names used in the ProtoBuf definition.
8911        ///
8912        /// The values are not transformed in any way and thus are considered stable
8913        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8914        pub fn as_str_name(&self) -> &'static str {
8915            match self {
8916                Self::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8917                Self::ApplyIncrement => "APPLY_INCREMENT",
8918                Self::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8919            }
8920        }
8921        /// Creates an enum from field names used in the ProtoBuf definition.
8922        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8923            match value {
8924                "IGNORE_THE_INCREMENT" => Some(Self::IgnoreTheIncrement),
8925                "APPLY_INCREMENT" => Some(Self::ApplyIncrement),
8926                "APPLY_INCREMENT_BOOST" => Some(Self::ApplyIncrementBoost),
8927                _ => None,
8928            }
8929        }
8930    }
8931    #[derive(
8932        Clone,
8933        Copy,
8934        Debug,
8935        PartialEq,
8936        Eq,
8937        Hash,
8938        PartialOrd,
8939        Ord,
8940        ::prost::Enumeration
8941    )]
8942    #[repr(i32)]
8943    pub enum TraceFlag {
8944        Unspecified = 0,
8945        /// The thread has been readied from DPC (deferred procedure call).
8946        ThreadReadied = 1,
8947        /// The kernel stack is currently swapped out.
8948        KernelStackSwappedOut = 2,
8949        /// The process address space is swapped out.
8950        ProcessAddressSwappedOut = 4,
8951    }
8952    impl TraceFlag {
8953        /// String value of the enum field names used in the ProtoBuf definition.
8954        ///
8955        /// The values are not transformed in any way and thus are considered stable
8956        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8957        pub fn as_str_name(&self) -> &'static str {
8958            match self {
8959                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8960                Self::ThreadReadied => "THREAD_READIED",
8961                Self::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8962                Self::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8963            }
8964        }
8965        /// Creates an enum from field names used in the ProtoBuf definition.
8966        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8967            match value {
8968                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
8969                "THREAD_READIED" => Some(Self::ThreadReadied),
8970                "KERNEL_STACK_SWAPPED_OUT" => Some(Self::KernelStackSwappedOut),
8971                "PROCESS_ADDRESS_SWAPPED_OUT" => Some(Self::ProcessAddressSwappedOut),
8972                _ => None,
8973            }
8974        }
8975    }
8976    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8977    pub enum AdjustReasonEnumOrInt {
8978        #[prost(enumeration = "AdjustReason", tag = "2")]
8979        AdjustReason(i32),
8980        #[prost(int32, tag = "5")]
8981        AdjustReasonInt(i32),
8982    }
8983    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8984    pub enum FlagEnumOrInt {
8985        #[prost(enumeration = "TraceFlag", tag = "4")]
8986        Flag(i32),
8987        #[prost(int32, tag = "6")]
8988        FlagInt(i32),
8989    }
8990}
8991/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8992/// on local traces using tracerpt:
8993/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8995pub struct MemInfoEtwEvent {
8996    /// Number of memory priorities on the system.
8997    #[prost(uint32, optional, tag = "1")]
8998    pub priority_levels: ::core::option::Option<u32>,
8999    /// Number of pages in the zero list.
9000    #[prost(uint64, optional, tag = "2")]
9001    pub zero_page_count: ::core::option::Option<u64>,
9002    /// Number of pages in the free list.
9003    #[prost(uint64, optional, tag = "3")]
9004    pub free_page_count: ::core::option::Option<u64>,
9005    /// Number of pages in the modified list.
9006    #[prost(uint64, optional, tag = "4")]
9007    pub modified_page_count: ::core::option::Option<u64>,
9008    /// Number of modified non-paged pool pages.
9009    #[prost(uint64, optional, tag = "5")]
9010    pub modified_no_write_page_count: ::core::option::Option<u64>,
9011    /// Number of bad pages.
9012    #[prost(uint64, optional, tag = "6")]
9013    pub bad_page_count: ::core::option::Option<u64>,
9014    /// Number of standby pages by memory priority.
9015    #[prost(uint64, repeated, packed = "false", tag = "7")]
9016    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
9017    /// Number of repurposed pages by memory priority.
9018    #[prost(uint64, repeated, packed = "false", tag = "8")]
9019    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
9020    /// Modified paged pages.
9021    #[prost(uint64, optional, tag = "9")]
9022    pub modified_page_count_page_file: ::core::option::Option<u64>,
9023    /// Pool page counts.
9024    #[prost(uint64, optional, tag = "10")]
9025    pub paged_pool_page_count: ::core::option::Option<u64>,
9026    #[prost(uint64, optional, tag = "11")]
9027    pub non_paged_pool_page_count: ::core::option::Option<u64>,
9028    /// Memory Descriptor List page count.
9029    #[prost(uint64, optional, tag = "12")]
9030    pub mdl_page_count: ::core::option::Option<u64>,
9031    /// Commit weight.
9032    #[prost(uint64, optional, tag = "13")]
9033    pub commit_page_count: ::core::option::Option<u64>,
9034}
9035/// Proto definition based on the `FileIo_Create` class definition.
9036#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9037pub struct FileIoCreateEtwEvent {
9038    #[prost(uint64, optional, tag = "1")]
9039    pub irp_ptr: ::core::option::Option<u64>,
9040    #[prost(uint64, optional, tag = "2")]
9041    pub file_object: ::core::option::Option<u64>,
9042    #[prost(uint32, optional, tag = "3")]
9043    pub ttid: ::core::option::Option<u32>,
9044    #[prost(uint32, optional, tag = "4")]
9045    pub create_options: ::core::option::Option<u32>,
9046    #[prost(uint32, optional, tag = "5")]
9047    pub file_attributes: ::core::option::Option<u32>,
9048    #[prost(uint32, optional, tag = "6")]
9049    pub share_access: ::core::option::Option<u32>,
9050    #[prost(string, optional, tag = "7")]
9051    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
9052}
9053/// Proto definition based on the `FileIo_DirEnum` class definition.
9054#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9055pub struct FileIoDirEnumEtwEvent {
9056    #[prost(uint64, optional, tag = "1")]
9057    pub irp_ptr: ::core::option::Option<u64>,
9058    #[prost(uint64, optional, tag = "2")]
9059    pub file_object: ::core::option::Option<u64>,
9060    #[prost(uint64, optional, tag = "3")]
9061    pub file_key: ::core::option::Option<u64>,
9062    #[prost(uint32, optional, tag = "4")]
9063    pub ttid: ::core::option::Option<u32>,
9064    #[prost(uint32, optional, tag = "5")]
9065    pub length: ::core::option::Option<u32>,
9066    #[prost(uint32, optional, tag = "6")]
9067    pub info_class: ::core::option::Option<u32>,
9068    #[prost(uint32, optional, tag = "7")]
9069    pub file_index: ::core::option::Option<u32>,
9070    #[prost(string, optional, tag = "8")]
9071    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9072    #[prost(uint32, optional, tag = "9")]
9073    pub opcode: ::core::option::Option<u32>,
9074}
9075/// Proto definition based on the `FileIo_Info` class definition.
9076#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9077pub struct FileIoInfoEtwEvent {
9078    #[prost(uint64, optional, tag = "1")]
9079    pub irp_ptr: ::core::option::Option<u64>,
9080    #[prost(uint64, optional, tag = "2")]
9081    pub file_object: ::core::option::Option<u64>,
9082    #[prost(uint64, optional, tag = "3")]
9083    pub file_key: ::core::option::Option<u64>,
9084    #[prost(uint64, optional, tag = "4")]
9085    pub extra_info: ::core::option::Option<u64>,
9086    #[prost(uint32, optional, tag = "5")]
9087    pub ttid: ::core::option::Option<u32>,
9088    #[prost(uint32, optional, tag = "6")]
9089    pub info_class: ::core::option::Option<u32>,
9090    #[prost(uint32, optional, tag = "7")]
9091    pub opcode: ::core::option::Option<u32>,
9092}
9093/// Proto definition based on the `FileIo_ReadWrite` class definition.
9094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9095pub struct FileIoReadWriteEtwEvent {
9096    #[prost(uint64, optional, tag = "1")]
9097    pub offset: ::core::option::Option<u64>,
9098    #[prost(uint64, optional, tag = "2")]
9099    pub irp_ptr: ::core::option::Option<u64>,
9100    #[prost(uint64, optional, tag = "3")]
9101    pub file_object: ::core::option::Option<u64>,
9102    #[prost(uint64, optional, tag = "4")]
9103    pub file_key: ::core::option::Option<u64>,
9104    #[prost(uint32, optional, tag = "5")]
9105    pub ttid: ::core::option::Option<u32>,
9106    #[prost(uint32, optional, tag = "6")]
9107    pub io_size: ::core::option::Option<u32>,
9108    #[prost(uint32, optional, tag = "7")]
9109    pub io_flags: ::core::option::Option<u32>,
9110    #[prost(uint32, optional, tag = "8")]
9111    pub opcode: ::core::option::Option<u32>,
9112}
9113/// Proto definition based on the `FileIo_SimpleOp` class definition.
9114#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9115pub struct FileIoSimpleOpEtwEvent {
9116    #[prost(uint64, optional, tag = "1")]
9117    pub irp_ptr: ::core::option::Option<u64>,
9118    #[prost(uint64, optional, tag = "2")]
9119    pub file_object: ::core::option::Option<u64>,
9120    #[prost(uint64, optional, tag = "3")]
9121    pub file_key: ::core::option::Option<u64>,
9122    #[prost(uint32, optional, tag = "4")]
9123    pub ttid: ::core::option::Option<u32>,
9124    #[prost(uint32, optional, tag = "5")]
9125    pub opcode: ::core::option::Option<u32>,
9126}
9127/// Proto definition based on the `FileIo_OpEnd` class definition.
9128#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9129pub struct FileIoOpEndEtwEvent {
9130    #[prost(uint64, optional, tag = "1")]
9131    pub irp_ptr: ::core::option::Option<u64>,
9132    #[prost(uint64, optional, tag = "2")]
9133    pub extra_info: ::core::option::Option<u64>,
9134    #[prost(uint32, optional, tag = "3")]
9135    pub nt_status: ::core::option::Option<u32>,
9136}
9137/// Proto definition based on the `FileIo_PathOperation` class definition.
9138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9139pub struct FileIoPathOperationEtwEvent {
9140    #[prost(uint64, optional, tag = "1")]
9141    pub irp_ptr: ::core::option::Option<u64>,
9142    #[prost(uint64, optional, tag = "2")]
9143    pub file_object: ::core::option::Option<u64>,
9144    #[prost(uint64, optional, tag = "3")]
9145    pub file_key: ::core::option::Option<u64>,
9146    #[prost(uint64, optional, tag = "4")]
9147    pub extra_info: ::core::option::Option<u64>,
9148    #[prost(uint32, optional, tag = "5")]
9149    pub ttid: ::core::option::Option<u32>,
9150    #[prost(uint32, optional, tag = "6")]
9151    pub info_class: ::core::option::Option<u32>,
9152    #[prost(string, optional, tag = "7")]
9153    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9154    #[prost(uint32, optional, tag = "8")]
9155    pub opcode: ::core::option::Option<u32>,
9156}
9157/// Proto definition based on the `StackWalk_Event` class definition. See
9158/// `Callstack` in `perfetto/protos/perfetto/trace/track_event/track_event.proto`
9159/// for context on what is contained in it.
9160#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9161pub struct StackWalkEtwEvent {
9162    #[prost(string, optional, tag = "1")]
9163    pub trigger: ::core::option::Option<::prost::alloc::string::String>,
9164    #[prost(uint64, optional, tag = "2")]
9165    pub callstack_iid: ::core::option::Option<u64>,
9166}
9167/// Proto definition based on the `DiskIo_TypeGroup1/2/3` class definitions.
9168#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9169pub struct DiskIoEtwEvent {
9170    #[prost(uint32, optional, tag = "1")]
9171    pub disk_number: ::core::option::Option<u32>,
9172    #[prost(uint32, optional, tag = "2")]
9173    pub irp_flags: ::core::option::Option<u32>,
9174    #[prost(uint32, optional, tag = "3")]
9175    pub transfer_size: ::core::option::Option<u32>,
9176    #[prost(int64, optional, tag = "4")]
9177    pub byte_offset: ::core::option::Option<i64>,
9178    #[prost(uint64, optional, tag = "5")]
9179    pub file_object: ::core::option::Option<u64>,
9180    #[prost(uint64, optional, tag = "6")]
9181    pub irp_ptr: ::core::option::Option<u64>,
9182    #[prost(int64, optional, tag = "7")]
9183    pub response_time: ::core::option::Option<i64>,
9184    #[prost(uint32, optional, tag = "8")]
9185    pub issuing_thread_id: ::core::option::Option<u32>,
9186    #[prost(uint32, optional, tag = "9")]
9187    pub opcode: ::core::option::Option<u32>,
9188}
9189#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9190pub struct EtwTraceEvent {
9191    #[prost(uint64, optional, tag = "1")]
9192    pub timestamp: ::core::option::Option<u64>,
9193    #[prost(uint32, optional, tag = "4")]
9194    pub cpu: ::core::option::Option<u32>,
9195    #[prost(uint32, optional, tag = "5")]
9196    pub thread_id: ::core::option::Option<u32>,
9197    #[prost(
9198        oneof = "etw_trace_event::Event",
9199        tags = "2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15"
9200    )]
9201    pub event: ::core::option::Option<etw_trace_event::Event>,
9202}
9203/// Nested message and enum types in `EtwTraceEvent`.
9204pub mod etw_trace_event {
9205    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9206    pub enum Event {
9207        #[prost(message, tag = "2")]
9208        CSwitch(super::CSwitchEtwEvent),
9209        #[prost(message, tag = "3")]
9210        ReadyThread(super::ReadyThreadEtwEvent),
9211        #[prost(message, tag = "6")]
9212        MemInfo(super::MemInfoEtwEvent),
9213        #[prost(message, tag = "7")]
9214        FileIoCreate(super::FileIoCreateEtwEvent),
9215        #[prost(message, tag = "8")]
9216        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9217        #[prost(message, tag = "9")]
9218        FileIoInfo(super::FileIoInfoEtwEvent),
9219        #[prost(message, tag = "10")]
9220        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9221        #[prost(message, tag = "11")]
9222        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9223        #[prost(message, tag = "12")]
9224        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9225        #[prost(message, tag = "13")]
9226        StackWalk(super::StackWalkEtwEvent),
9227        #[prost(message, tag = "14")]
9228        FileIoPathOperation(super::FileIoPathOperationEtwEvent),
9229        #[prost(message, tag = "15")]
9230        DiskIo(super::DiskIoEtwEvent),
9231    }
9232}
9233/// The result of tracing one or more etw event uses per-processor buffers where
9234/// an in-use buffer is assigned to each processor at all times. Therefore,
9235/// collecting multiple events they should already be synchronized.
9236#[derive(Clone, PartialEq, ::prost::Message)]
9237pub struct EtwTraceEventBundle {
9238    #[prost(uint32, optional, tag = "1")]
9239    pub cpu: ::core::option::Option<u32>,
9240    #[prost(message, repeated, tag = "2")]
9241    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9242}
9243/// The protocol compiler can output a FileDescriptorSet containing the .proto
9244/// files it parses.
9245#[derive(Clone, PartialEq, ::prost::Message)]
9246pub struct FileDescriptorSet {
9247    #[prost(message, repeated, tag = "1")]
9248    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9249}
9250/// Describes a complete .proto file.
9251#[derive(Clone, PartialEq, ::prost::Message)]
9252pub struct FileDescriptorProto {
9253    /// file name, relative to root of source tree
9254    #[prost(string, optional, tag = "1")]
9255    pub name: ::core::option::Option<::prost::alloc::string::String>,
9256    /// e.g. "foo", "foo.bar", etc.
9257    #[prost(string, optional, tag = "2")]
9258    pub package: ::core::option::Option<::prost::alloc::string::String>,
9259    /// Names of files imported by this file.
9260    #[prost(string, repeated, tag = "3")]
9261    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9262    /// Indexes of the public imported files in the dependency list above.
9263    #[prost(int32, repeated, packed = "false", tag = "10")]
9264    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9265    /// Indexes of the weak imported files in the dependency list.
9266    /// For Google-internal migration only. Do not use.
9267    #[prost(int32, repeated, packed = "false", tag = "11")]
9268    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9269    /// All top-level definitions in this file.
9270    #[prost(message, repeated, tag = "4")]
9271    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9272    #[prost(message, repeated, tag = "5")]
9273    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9274    #[prost(message, repeated, tag = "7")]
9275    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9276}
9277/// Describes a message type.
9278#[derive(Clone, PartialEq, ::prost::Message)]
9279pub struct DescriptorProto {
9280    #[prost(string, optional, tag = "1")]
9281    pub name: ::core::option::Option<::prost::alloc::string::String>,
9282    #[prost(message, repeated, tag = "2")]
9283    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9284    #[prost(message, repeated, tag = "6")]
9285    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9286    #[prost(message, repeated, tag = "3")]
9287    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9288    #[prost(message, repeated, tag = "4")]
9289    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9290    #[prost(message, repeated, tag = "8")]
9291    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9292    #[prost(message, repeated, tag = "9")]
9293    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9294    /// Reserved field names, which may not be used by fields in the same message.
9295    /// A given name may only be reserved once.
9296    #[prost(string, repeated, tag = "10")]
9297    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9298}
9299/// Nested message and enum types in `DescriptorProto`.
9300pub mod descriptor_proto {
9301    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9302    /// fields or extension ranges in the same message. Reserved ranges may
9303    /// not overlap.
9304    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9305    pub struct ReservedRange {
9306        /// Inclusive.
9307        #[prost(int32, optional, tag = "1")]
9308        pub start: ::core::option::Option<i32>,
9309        /// Exclusive.
9310        #[prost(int32, optional, tag = "2")]
9311        pub end: ::core::option::Option<i32>,
9312    }
9313}
9314/// A message representing a option the parser does not recognize. This only
9315/// appears in options protos created by the compiler::Parser class.
9316/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9317/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9318/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9319/// in them.
9320#[derive(Clone, PartialEq, ::prost::Message)]
9321pub struct UninterpretedOption {
9322    #[prost(message, repeated, tag = "2")]
9323    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9324    /// The value of the uninterpreted option, in whatever type the tokenizer
9325    /// identified it as during parsing. Exactly one of these should be set.
9326    #[prost(string, optional, tag = "3")]
9327    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9328    #[prost(uint64, optional, tag = "4")]
9329    pub positive_int_value: ::core::option::Option<u64>,
9330    #[prost(int64, optional, tag = "5")]
9331    pub negative_int_value: ::core::option::Option<i64>,
9332    #[prost(double, optional, tag = "6")]
9333    pub double_value: ::core::option::Option<f64>,
9334    #[prost(bytes = "vec", optional, tag = "7")]
9335    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9336    #[prost(string, optional, tag = "8")]
9337    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9338}
9339/// Nested message and enum types in `UninterpretedOption`.
9340pub mod uninterpreted_option {
9341    /// The name of the uninterpreted option.  Each string represents a segment in
9342    /// a dot-separated name.  is_extension is true iff a segment represents an
9343    /// extension (denoted with parentheses in options specs in .proto files).
9344    /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
9345    /// "foo.(bar.baz).moo".
9346    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9347    pub struct NamePart {
9348        #[prost(string, optional, tag = "1")]
9349        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9350        #[prost(bool, optional, tag = "2")]
9351        pub is_extension: ::core::option::Option<bool>,
9352    }
9353}
9354#[derive(Clone, PartialEq, ::prost::Message)]
9355pub struct FieldOptions {
9356    /// The packed option can be enabled for repeated primitive fields to enable
9357    /// a more efficient representation on the wire. Rather than repeatedly
9358    /// writing the tag and type for each element, the entire array is encoded as
9359    /// a single length-delimited blob. In proto3, only explicit setting it to
9360    /// false will avoid using packed encoding.
9361    #[prost(bool, optional, tag = "2")]
9362    pub packed: ::core::option::Option<bool>,
9363    /// The parser stores options it doesn't recognize here. See above.
9364    #[prost(message, repeated, tag = "999")]
9365    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9366}
9367/// Describes a field within a message.
9368#[derive(Clone, PartialEq, ::prost::Message)]
9369pub struct FieldDescriptorProto {
9370    #[prost(string, optional, tag = "1")]
9371    pub name: ::core::option::Option<::prost::alloc::string::String>,
9372    #[prost(int32, optional, tag = "3")]
9373    pub number: ::core::option::Option<i32>,
9374    #[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
9375    pub label: ::core::option::Option<i32>,
9376    /// If type_name is set, this need not be set.  If both this and type_name
9377    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9378    #[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
9379    pub r#type: ::core::option::Option<i32>,
9380    /// For message and enum types, this is the name of the type.  If the name
9381    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9382    /// rules are used to find the type (i.e. first the nested types within this
9383    /// message are searched, then within the parent, on up to the root
9384    /// namespace).
9385    #[prost(string, optional, tag = "6")]
9386    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9387    /// For extensions, this is the name of the type being extended.  It is
9388    /// resolved in the same manner as type_name.
9389    #[prost(string, optional, tag = "2")]
9390    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9391    /// For numeric types, contains the original text representation of the value.
9392    /// For booleans, "true" or "false".
9393    /// For strings, contains the default text contents (not escaped in any way).
9394    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9395    /// TODO(kenton):  Base-64 encode?
9396    #[prost(string, optional, tag = "7")]
9397    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9398    #[prost(message, optional, tag = "8")]
9399    pub options: ::core::option::Option<FieldOptions>,
9400    /// If set, gives the index of a oneof in the containing type's oneof_decl
9401    /// list.  This field is a member of that oneof.
9402    #[prost(int32, optional, tag = "9")]
9403    pub oneof_index: ::core::option::Option<i32>,
9404}
9405/// Nested message and enum types in `FieldDescriptorProto`.
9406pub mod field_descriptor_proto {
9407    #[derive(
9408        Clone,
9409        Copy,
9410        Debug,
9411        PartialEq,
9412        Eq,
9413        Hash,
9414        PartialOrd,
9415        Ord,
9416        ::prost::Enumeration
9417    )]
9418    #[repr(i32)]
9419    pub enum Type {
9420        /// 0 is reserved for errors.
9421        /// Order is weird for historical reasons.
9422        Double = 1,
9423        Float = 2,
9424        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9425        /// negative values are likely.
9426        Int64 = 3,
9427        Uint64 = 4,
9428        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9429        /// negative values are likely.
9430        Int32 = 5,
9431        Fixed64 = 6,
9432        Fixed32 = 7,
9433        Bool = 8,
9434        String = 9,
9435        /// Tag-delimited aggregate.
9436        /// Group type is deprecated and not supported in proto3. However, Proto3
9437        /// implementations should still be able to parse the group wire format and
9438        /// treat group fields as unknown fields.
9439        Group = 10,
9440        /// Length-delimited aggregate.
9441        Message = 11,
9442        /// New in version 2.
9443        Bytes = 12,
9444        Uint32 = 13,
9445        Enum = 14,
9446        Sfixed32 = 15,
9447        Sfixed64 = 16,
9448        /// Uses ZigZag encoding.
9449        Sint32 = 17,
9450        /// Uses ZigZag encoding.
9451        Sint64 = 18,
9452    }
9453    impl Type {
9454        /// String value of the enum field names used in the ProtoBuf definition.
9455        ///
9456        /// The values are not transformed in any way and thus are considered stable
9457        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9458        pub fn as_str_name(&self) -> &'static str {
9459            match self {
9460                Self::Double => "TYPE_DOUBLE",
9461                Self::Float => "TYPE_FLOAT",
9462                Self::Int64 => "TYPE_INT64",
9463                Self::Uint64 => "TYPE_UINT64",
9464                Self::Int32 => "TYPE_INT32",
9465                Self::Fixed64 => "TYPE_FIXED64",
9466                Self::Fixed32 => "TYPE_FIXED32",
9467                Self::Bool => "TYPE_BOOL",
9468                Self::String => "TYPE_STRING",
9469                Self::Group => "TYPE_GROUP",
9470                Self::Message => "TYPE_MESSAGE",
9471                Self::Bytes => "TYPE_BYTES",
9472                Self::Uint32 => "TYPE_UINT32",
9473                Self::Enum => "TYPE_ENUM",
9474                Self::Sfixed32 => "TYPE_SFIXED32",
9475                Self::Sfixed64 => "TYPE_SFIXED64",
9476                Self::Sint32 => "TYPE_SINT32",
9477                Self::Sint64 => "TYPE_SINT64",
9478            }
9479        }
9480        /// Creates an enum from field names used in the ProtoBuf definition.
9481        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9482            match value {
9483                "TYPE_DOUBLE" => Some(Self::Double),
9484                "TYPE_FLOAT" => Some(Self::Float),
9485                "TYPE_INT64" => Some(Self::Int64),
9486                "TYPE_UINT64" => Some(Self::Uint64),
9487                "TYPE_INT32" => Some(Self::Int32),
9488                "TYPE_FIXED64" => Some(Self::Fixed64),
9489                "TYPE_FIXED32" => Some(Self::Fixed32),
9490                "TYPE_BOOL" => Some(Self::Bool),
9491                "TYPE_STRING" => Some(Self::String),
9492                "TYPE_GROUP" => Some(Self::Group),
9493                "TYPE_MESSAGE" => Some(Self::Message),
9494                "TYPE_BYTES" => Some(Self::Bytes),
9495                "TYPE_UINT32" => Some(Self::Uint32),
9496                "TYPE_ENUM" => Some(Self::Enum),
9497                "TYPE_SFIXED32" => Some(Self::Sfixed32),
9498                "TYPE_SFIXED64" => Some(Self::Sfixed64),
9499                "TYPE_SINT32" => Some(Self::Sint32),
9500                "TYPE_SINT64" => Some(Self::Sint64),
9501                _ => None,
9502            }
9503        }
9504    }
9505    #[derive(
9506        Clone,
9507        Copy,
9508        Debug,
9509        PartialEq,
9510        Eq,
9511        Hash,
9512        PartialOrd,
9513        Ord,
9514        ::prost::Enumeration
9515    )]
9516    #[repr(i32)]
9517    pub enum Label {
9518        /// 0 is reserved for errors
9519        Optional = 1,
9520        Required = 2,
9521        Repeated = 3,
9522    }
9523    impl Label {
9524        /// String value of the enum field names used in the ProtoBuf definition.
9525        ///
9526        /// The values are not transformed in any way and thus are considered stable
9527        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9528        pub fn as_str_name(&self) -> &'static str {
9529            match self {
9530                Self::Optional => "LABEL_OPTIONAL",
9531                Self::Required => "LABEL_REQUIRED",
9532                Self::Repeated => "LABEL_REPEATED",
9533            }
9534        }
9535        /// Creates an enum from field names used in the ProtoBuf definition.
9536        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9537            match value {
9538                "LABEL_OPTIONAL" => Some(Self::Optional),
9539                "LABEL_REQUIRED" => Some(Self::Required),
9540                "LABEL_REPEATED" => Some(Self::Repeated),
9541                _ => None,
9542            }
9543        }
9544    }
9545}
9546/// Describes a oneof.
9547#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9548pub struct OneofDescriptorProto {
9549    #[prost(string, optional, tag = "1")]
9550    pub name: ::core::option::Option<::prost::alloc::string::String>,
9551    #[prost(message, optional, tag = "2")]
9552    pub options: ::core::option::Option<OneofOptions>,
9553}
9554/// Describes an enum type.
9555#[derive(Clone, PartialEq, ::prost::Message)]
9556pub struct EnumDescriptorProto {
9557    #[prost(string, optional, tag = "1")]
9558    pub name: ::core::option::Option<::prost::alloc::string::String>,
9559    #[prost(message, repeated, tag = "2")]
9560    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9561    /// Reserved enum value names, which may not be reused. A given name may only
9562    /// be reserved once.
9563    #[prost(string, repeated, tag = "5")]
9564    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9565}
9566/// Describes a value within an enum.
9567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9568pub struct EnumValueDescriptorProto {
9569    #[prost(string, optional, tag = "1")]
9570    pub name: ::core::option::Option<::prost::alloc::string::String>,
9571    #[prost(int32, optional, tag = "2")]
9572    pub number: ::core::option::Option<i32>,
9573}
9574#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9575pub struct OneofOptions {}
9576/// This message contains descriptors used to parse extension fields of
9577/// TrackEvent.
9578///
9579/// See docs/instrumentation/extensions.md for more details.
9580#[derive(Clone, PartialEq, ::prost::Message)]
9581pub struct ExtensionDescriptor {
9582    /// Optional, for debugging only. The file name or path of the descriptor
9583    /// source. Can be omitted without affecting functionality.
9584    #[prost(string, optional, tag = "3")]
9585    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9586    #[prost(oneof = "extension_descriptor::Descriptor", tags = "1, 2")]
9587    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
9588}
9589/// Nested message and enum types in `ExtensionDescriptor`.
9590pub mod extension_descriptor {
9591    #[derive(Clone, PartialEq, ::prost::Oneof)]
9592    pub enum Descriptor {
9593        #[prost(message, tag = "1")]
9594        ExtensionSet(super::FileDescriptorSet),
9595        /// Same as extension_set, but gzip-compressed. This is used by the tracing
9596        /// service on Android to emit pre-compressed descriptor files from
9597        /// /etc/tracing_descriptors.gz without decompressing them first.
9598        #[prost(bytes, tag = "2")]
9599        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
9600    }
9601}
9602/// Represents the mapping between inode numbers in a block device and their path
9603/// on the filesystem
9604#[derive(Clone, PartialEq, ::prost::Message)]
9605pub struct InodeFileMap {
9606    #[prost(uint64, optional, tag = "1")]
9607    pub block_device_id: ::core::option::Option<u64>,
9608    /// The mount points of the block device, e.g. \["system"\].
9609    #[prost(string, repeated, tag = "2")]
9610    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9611    /// The list of all the entries from the block device
9612    #[prost(message, repeated, tag = "3")]
9613    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9614}
9615/// Nested message and enum types in `InodeFileMap`.
9616pub mod inode_file_map {
9617    /// Representation of Entry
9618    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9619    pub struct Entry {
9620        #[prost(uint64, optional, tag = "1")]
9621        pub inode_number: ::core::option::Option<u64>,
9622        /// The path to the file, e.g. "etc/file.xml"
9623        /// List of strings for multiple hardlinks
9624        #[prost(string, repeated, tag = "2")]
9625        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9626        #[prost(enumeration = "entry::Type", optional, tag = "3")]
9627        pub r#type: ::core::option::Option<i32>,
9628    }
9629    /// Nested message and enum types in `Entry`.
9630    pub mod entry {
9631        /// The file type
9632        #[derive(
9633            Clone,
9634            Copy,
9635            Debug,
9636            PartialEq,
9637            Eq,
9638            Hash,
9639            PartialOrd,
9640            Ord,
9641            ::prost::Enumeration
9642        )]
9643        #[repr(i32)]
9644        pub enum Type {
9645            Unknown = 0,
9646            File = 1,
9647            Directory = 2,
9648        }
9649        impl Type {
9650            /// String value of the enum field names used in the ProtoBuf definition.
9651            ///
9652            /// The values are not transformed in any way and thus are considered stable
9653            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9654            pub fn as_str_name(&self) -> &'static str {
9655                match self {
9656                    Self::Unknown => "UNKNOWN",
9657                    Self::File => "FILE",
9658                    Self::Directory => "DIRECTORY",
9659                }
9660            }
9661            /// Creates an enum from field names used in the ProtoBuf definition.
9662            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9663                match value {
9664                    "UNKNOWN" => Some(Self::Unknown),
9665                    "FILE" => Some(Self::File),
9666                    "DIRECTORY" => Some(Self::Directory),
9667                    _ => None,
9668                }
9669            }
9670        }
9671    }
9672}
9673#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9674pub struct AndroidFsDatareadEndFtraceEvent {
9675    #[prost(int32, optional, tag = "1")]
9676    pub bytes: ::core::option::Option<i32>,
9677    #[prost(uint64, optional, tag = "2")]
9678    pub ino: ::core::option::Option<u64>,
9679    #[prost(int64, optional, tag = "3")]
9680    pub offset: ::core::option::Option<i64>,
9681}
9682#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9683pub struct AndroidFsDatareadStartFtraceEvent {
9684    #[prost(int32, optional, tag = "1")]
9685    pub bytes: ::core::option::Option<i32>,
9686    #[prost(string, optional, tag = "2")]
9687    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9688    #[prost(int64, optional, tag = "3")]
9689    pub i_size: ::core::option::Option<i64>,
9690    #[prost(uint64, optional, tag = "4")]
9691    pub ino: ::core::option::Option<u64>,
9692    #[prost(int64, optional, tag = "5")]
9693    pub offset: ::core::option::Option<i64>,
9694    #[prost(string, optional, tag = "6")]
9695    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9696    #[prost(int32, optional, tag = "7")]
9697    pub pid: ::core::option::Option<i32>,
9698}
9699#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9700pub struct AndroidFsDatawriteEndFtraceEvent {
9701    #[prost(int32, optional, tag = "1")]
9702    pub bytes: ::core::option::Option<i32>,
9703    #[prost(uint64, optional, tag = "2")]
9704    pub ino: ::core::option::Option<u64>,
9705    #[prost(int64, optional, tag = "3")]
9706    pub offset: ::core::option::Option<i64>,
9707}
9708#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9709pub struct AndroidFsDatawriteStartFtraceEvent {
9710    #[prost(int32, optional, tag = "1")]
9711    pub bytes: ::core::option::Option<i32>,
9712    #[prost(string, optional, tag = "2")]
9713    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9714    #[prost(int64, optional, tag = "3")]
9715    pub i_size: ::core::option::Option<i64>,
9716    #[prost(uint64, optional, tag = "4")]
9717    pub ino: ::core::option::Option<u64>,
9718    #[prost(int64, optional, tag = "5")]
9719    pub offset: ::core::option::Option<i64>,
9720    #[prost(string, optional, tag = "6")]
9721    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9722    #[prost(int32, optional, tag = "7")]
9723    pub pid: ::core::option::Option<i32>,
9724}
9725#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9726pub struct AndroidFsFsyncEndFtraceEvent {
9727    #[prost(int32, optional, tag = "1")]
9728    pub bytes: ::core::option::Option<i32>,
9729    #[prost(uint64, optional, tag = "2")]
9730    pub ino: ::core::option::Option<u64>,
9731    #[prost(int64, optional, tag = "3")]
9732    pub offset: ::core::option::Option<i64>,
9733}
9734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9735pub struct AndroidFsFsyncStartFtraceEvent {
9736    #[prost(string, optional, tag = "1")]
9737    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9738    #[prost(int64, optional, tag = "2")]
9739    pub i_size: ::core::option::Option<i64>,
9740    #[prost(uint64, optional, tag = "3")]
9741    pub ino: ::core::option::Option<u64>,
9742    #[prost(string, optional, tag = "4")]
9743    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9744    #[prost(int32, optional, tag = "5")]
9745    pub pid: ::core::option::Option<i32>,
9746}
9747#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9748pub struct BclIrqTriggerFtraceEvent {
9749    #[prost(int32, optional, tag = "1")]
9750    pub id: ::core::option::Option<i32>,
9751    #[prost(int32, optional, tag = "2")]
9752    pub throttle: ::core::option::Option<i32>,
9753    #[prost(int32, optional, tag = "3")]
9754    pub cpu0_limit: ::core::option::Option<i32>,
9755    #[prost(int32, optional, tag = "4")]
9756    pub cpu1_limit: ::core::option::Option<i32>,
9757    #[prost(int32, optional, tag = "5")]
9758    pub cpu2_limit: ::core::option::Option<i32>,
9759    #[prost(int32, optional, tag = "6")]
9760    pub tpu_limit: ::core::option::Option<i32>,
9761    #[prost(int32, optional, tag = "7")]
9762    pub gpu_limit: ::core::option::Option<i32>,
9763    #[prost(int32, optional, tag = "8")]
9764    pub voltage: ::core::option::Option<i32>,
9765    #[prost(int32, optional, tag = "9")]
9766    pub capacity: ::core::option::Option<i32>,
9767}
9768#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9769pub struct BinderTransactionFtraceEvent {
9770    #[prost(int32, optional, tag = "1")]
9771    pub debug_id: ::core::option::Option<i32>,
9772    #[prost(int32, optional, tag = "2")]
9773    pub target_node: ::core::option::Option<i32>,
9774    #[prost(int32, optional, tag = "3")]
9775    pub to_proc: ::core::option::Option<i32>,
9776    #[prost(int32, optional, tag = "4")]
9777    pub to_thread: ::core::option::Option<i32>,
9778    #[prost(int32, optional, tag = "5")]
9779    pub reply: ::core::option::Option<i32>,
9780    #[prost(uint32, optional, tag = "6")]
9781    pub code: ::core::option::Option<u32>,
9782    #[prost(uint32, optional, tag = "7")]
9783    pub flags: ::core::option::Option<u32>,
9784}
9785#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9786pub struct BinderTransactionReceivedFtraceEvent {
9787    #[prost(int32, optional, tag = "1")]
9788    pub debug_id: ::core::option::Option<i32>,
9789}
9790#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9791pub struct BinderSetPriorityFtraceEvent {
9792    #[prost(int32, optional, tag = "1")]
9793    pub proc: ::core::option::Option<i32>,
9794    #[prost(int32, optional, tag = "2")]
9795    pub thread: ::core::option::Option<i32>,
9796    #[prost(uint32, optional, tag = "3")]
9797    pub old_prio: ::core::option::Option<u32>,
9798    #[prost(uint32, optional, tag = "4")]
9799    pub new_prio: ::core::option::Option<u32>,
9800    #[prost(uint32, optional, tag = "5")]
9801    pub desired_prio: ::core::option::Option<u32>,
9802}
9803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9804pub struct BinderLockFtraceEvent {
9805    #[prost(string, optional, tag = "1")]
9806    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9807}
9808#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9809pub struct BinderLockedFtraceEvent {
9810    #[prost(string, optional, tag = "1")]
9811    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9812}
9813#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9814pub struct BinderUnlockFtraceEvent {
9815    #[prost(string, optional, tag = "1")]
9816    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9817}
9818#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9819pub struct BinderTransactionAllocBufFtraceEvent {
9820    #[prost(uint64, optional, tag = "1")]
9821    pub data_size: ::core::option::Option<u64>,
9822    #[prost(int32, optional, tag = "2")]
9823    pub debug_id: ::core::option::Option<i32>,
9824    #[prost(uint64, optional, tag = "3")]
9825    pub offsets_size: ::core::option::Option<u64>,
9826    #[prost(uint64, optional, tag = "4")]
9827    pub extra_buffers_size: ::core::option::Option<u64>,
9828}
9829#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9830pub struct BinderCommandFtraceEvent {
9831    #[prost(uint32, optional, tag = "1")]
9832    pub cmd: ::core::option::Option<u32>,
9833}
9834#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9835pub struct BinderReturnFtraceEvent {
9836    #[prost(uint32, optional, tag = "1")]
9837    pub cmd: ::core::option::Option<u32>,
9838}
9839#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9840pub struct BlockRqIssueFtraceEvent {
9841    #[prost(uint64, optional, tag = "1")]
9842    pub dev: ::core::option::Option<u64>,
9843    #[prost(uint64, optional, tag = "2")]
9844    pub sector: ::core::option::Option<u64>,
9845    #[prost(uint32, optional, tag = "3")]
9846    pub nr_sector: ::core::option::Option<u32>,
9847    #[prost(uint32, optional, tag = "4")]
9848    pub bytes: ::core::option::Option<u32>,
9849    #[prost(string, optional, tag = "5")]
9850    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9851    #[prost(string, optional, tag = "6")]
9852    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9853    #[prost(string, optional, tag = "7")]
9854    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9855}
9856#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9857pub struct BlockBioBackmergeFtraceEvent {
9858    #[prost(uint64, optional, tag = "1")]
9859    pub dev: ::core::option::Option<u64>,
9860    #[prost(uint64, optional, tag = "2")]
9861    pub sector: ::core::option::Option<u64>,
9862    #[prost(uint32, optional, tag = "3")]
9863    pub nr_sector: ::core::option::Option<u32>,
9864    #[prost(string, optional, tag = "4")]
9865    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9866    #[prost(string, optional, tag = "5")]
9867    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9868}
9869#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9870pub struct BlockBioBounceFtraceEvent {
9871    #[prost(uint64, optional, tag = "1")]
9872    pub dev: ::core::option::Option<u64>,
9873    #[prost(uint64, optional, tag = "2")]
9874    pub sector: ::core::option::Option<u64>,
9875    #[prost(uint32, optional, tag = "3")]
9876    pub nr_sector: ::core::option::Option<u32>,
9877    #[prost(string, optional, tag = "4")]
9878    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9879    #[prost(string, optional, tag = "5")]
9880    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9881}
9882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9883pub struct BlockBioCompleteFtraceEvent {
9884    #[prost(uint64, optional, tag = "1")]
9885    pub dev: ::core::option::Option<u64>,
9886    #[prost(uint64, optional, tag = "2")]
9887    pub sector: ::core::option::Option<u64>,
9888    #[prost(uint32, optional, tag = "3")]
9889    pub nr_sector: ::core::option::Option<u32>,
9890    #[prost(int32, optional, tag = "4")]
9891    pub error: ::core::option::Option<i32>,
9892    #[prost(string, optional, tag = "5")]
9893    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9894}
9895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9896pub struct BlockBioFrontmergeFtraceEvent {
9897    #[prost(uint64, optional, tag = "1")]
9898    pub dev: ::core::option::Option<u64>,
9899    #[prost(uint64, optional, tag = "2")]
9900    pub sector: ::core::option::Option<u64>,
9901    #[prost(uint32, optional, tag = "3")]
9902    pub nr_sector: ::core::option::Option<u32>,
9903    #[prost(string, optional, tag = "4")]
9904    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9905    #[prost(string, optional, tag = "5")]
9906    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9907}
9908#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9909pub struct BlockBioQueueFtraceEvent {
9910    #[prost(uint64, optional, tag = "1")]
9911    pub dev: ::core::option::Option<u64>,
9912    #[prost(uint64, optional, tag = "2")]
9913    pub sector: ::core::option::Option<u64>,
9914    #[prost(uint32, optional, tag = "3")]
9915    pub nr_sector: ::core::option::Option<u32>,
9916    #[prost(string, optional, tag = "4")]
9917    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9918    #[prost(string, optional, tag = "5")]
9919    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9920}
9921#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9922pub struct BlockBioRemapFtraceEvent {
9923    #[prost(uint64, optional, tag = "1")]
9924    pub dev: ::core::option::Option<u64>,
9925    #[prost(uint64, optional, tag = "2")]
9926    pub sector: ::core::option::Option<u64>,
9927    #[prost(uint32, optional, tag = "3")]
9928    pub nr_sector: ::core::option::Option<u32>,
9929    #[prost(uint64, optional, tag = "4")]
9930    pub old_dev: ::core::option::Option<u64>,
9931    #[prost(uint64, optional, tag = "5")]
9932    pub old_sector: ::core::option::Option<u64>,
9933    #[prost(string, optional, tag = "6")]
9934    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9935}
9936#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9937pub struct BlockDirtyBufferFtraceEvent {
9938    #[prost(uint64, optional, tag = "1")]
9939    pub dev: ::core::option::Option<u64>,
9940    #[prost(uint64, optional, tag = "2")]
9941    pub sector: ::core::option::Option<u64>,
9942    #[prost(uint64, optional, tag = "3")]
9943    pub size: ::core::option::Option<u64>,
9944}
9945#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9946pub struct BlockGetrqFtraceEvent {
9947    #[prost(uint64, optional, tag = "1")]
9948    pub dev: ::core::option::Option<u64>,
9949    #[prost(uint64, optional, tag = "2")]
9950    pub sector: ::core::option::Option<u64>,
9951    #[prost(uint32, optional, tag = "3")]
9952    pub nr_sector: ::core::option::Option<u32>,
9953    #[prost(string, optional, tag = "4")]
9954    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9955    #[prost(string, optional, tag = "5")]
9956    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9957}
9958#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9959pub struct BlockPlugFtraceEvent {
9960    #[prost(string, optional, tag = "1")]
9961    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9962}
9963#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9964pub struct BlockRqAbortFtraceEvent {
9965    #[prost(uint64, optional, tag = "1")]
9966    pub dev: ::core::option::Option<u64>,
9967    #[prost(uint64, optional, tag = "2")]
9968    pub sector: ::core::option::Option<u64>,
9969    #[prost(uint32, optional, tag = "3")]
9970    pub nr_sector: ::core::option::Option<u32>,
9971    #[prost(int32, optional, tag = "4")]
9972    pub errors: ::core::option::Option<i32>,
9973    #[prost(string, optional, tag = "5")]
9974    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9975    #[prost(string, optional, tag = "6")]
9976    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9977}
9978#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9979pub struct BlockRqCompleteFtraceEvent {
9980    #[prost(uint64, optional, tag = "1")]
9981    pub dev: ::core::option::Option<u64>,
9982    #[prost(uint64, optional, tag = "2")]
9983    pub sector: ::core::option::Option<u64>,
9984    #[prost(uint32, optional, tag = "3")]
9985    pub nr_sector: ::core::option::Option<u32>,
9986    #[prost(int32, optional, tag = "4")]
9987    pub errors: ::core::option::Option<i32>,
9988    #[prost(string, optional, tag = "5")]
9989    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9990    #[prost(string, optional, tag = "6")]
9991    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9992    #[prost(int32, optional, tag = "7")]
9993    pub error: ::core::option::Option<i32>,
9994}
9995#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9996pub struct BlockRqInsertFtraceEvent {
9997    #[prost(uint64, optional, tag = "1")]
9998    pub dev: ::core::option::Option<u64>,
9999    #[prost(uint64, optional, tag = "2")]
10000    pub sector: ::core::option::Option<u64>,
10001    #[prost(uint32, optional, tag = "3")]
10002    pub nr_sector: ::core::option::Option<u32>,
10003    #[prost(uint32, optional, tag = "4")]
10004    pub bytes: ::core::option::Option<u32>,
10005    #[prost(string, optional, tag = "5")]
10006    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10007    #[prost(string, optional, tag = "6")]
10008    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10009    #[prost(string, optional, tag = "7")]
10010    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10011}
10012#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10013pub struct BlockRqRemapFtraceEvent {
10014    #[prost(uint64, optional, tag = "1")]
10015    pub dev: ::core::option::Option<u64>,
10016    #[prost(uint64, optional, tag = "2")]
10017    pub sector: ::core::option::Option<u64>,
10018    #[prost(uint32, optional, tag = "3")]
10019    pub nr_sector: ::core::option::Option<u32>,
10020    #[prost(uint64, optional, tag = "4")]
10021    pub old_dev: ::core::option::Option<u64>,
10022    #[prost(uint64, optional, tag = "5")]
10023    pub old_sector: ::core::option::Option<u64>,
10024    #[prost(uint32, optional, tag = "6")]
10025    pub nr_bios: ::core::option::Option<u32>,
10026    #[prost(string, optional, tag = "7")]
10027    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10028}
10029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10030pub struct BlockRqRequeueFtraceEvent {
10031    #[prost(uint64, optional, tag = "1")]
10032    pub dev: ::core::option::Option<u64>,
10033    #[prost(uint64, optional, tag = "2")]
10034    pub sector: ::core::option::Option<u64>,
10035    #[prost(uint32, optional, tag = "3")]
10036    pub nr_sector: ::core::option::Option<u32>,
10037    #[prost(int32, optional, tag = "4")]
10038    pub errors: ::core::option::Option<i32>,
10039    #[prost(string, optional, tag = "5")]
10040    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10041    #[prost(string, optional, tag = "6")]
10042    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10043}
10044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10045pub struct BlockSleeprqFtraceEvent {
10046    #[prost(uint64, optional, tag = "1")]
10047    pub dev: ::core::option::Option<u64>,
10048    #[prost(uint64, optional, tag = "2")]
10049    pub sector: ::core::option::Option<u64>,
10050    #[prost(uint32, optional, tag = "3")]
10051    pub nr_sector: ::core::option::Option<u32>,
10052    #[prost(string, optional, tag = "4")]
10053    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10054    #[prost(string, optional, tag = "5")]
10055    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10056}
10057#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10058pub struct BlockSplitFtraceEvent {
10059    #[prost(uint64, optional, tag = "1")]
10060    pub dev: ::core::option::Option<u64>,
10061    #[prost(uint64, optional, tag = "2")]
10062    pub sector: ::core::option::Option<u64>,
10063    #[prost(uint64, optional, tag = "3")]
10064    pub new_sector: ::core::option::Option<u64>,
10065    #[prost(string, optional, tag = "4")]
10066    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10067    #[prost(string, optional, tag = "5")]
10068    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10069}
10070#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10071pub struct BlockTouchBufferFtraceEvent {
10072    #[prost(uint64, optional, tag = "1")]
10073    pub dev: ::core::option::Option<u64>,
10074    #[prost(uint64, optional, tag = "2")]
10075    pub sector: ::core::option::Option<u64>,
10076    #[prost(uint64, optional, tag = "3")]
10077    pub size: ::core::option::Option<u64>,
10078}
10079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10080pub struct BlockUnplugFtraceEvent {
10081    #[prost(int32, optional, tag = "1")]
10082    pub nr_rq: ::core::option::Option<i32>,
10083    #[prost(string, optional, tag = "2")]
10084    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10085}
10086#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10087pub struct BlockIoStartFtraceEvent {
10088    #[prost(uint64, optional, tag = "1")]
10089    pub dev: ::core::option::Option<u64>,
10090    #[prost(uint64, optional, tag = "2")]
10091    pub sector: ::core::option::Option<u64>,
10092    #[prost(uint32, optional, tag = "3")]
10093    pub nr_sector: ::core::option::Option<u32>,
10094    #[prost(uint32, optional, tag = "4")]
10095    pub bytes: ::core::option::Option<u32>,
10096    #[prost(uint32, optional, tag = "5")]
10097    pub ioprio: ::core::option::Option<u32>,
10098    #[prost(string, optional, tag = "6")]
10099    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10100    #[prost(string, optional, tag = "7")]
10101    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10102    #[prost(string, optional, tag = "8")]
10103    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10104}
10105#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10106pub struct BlockIoDoneFtraceEvent {
10107    #[prost(uint64, optional, tag = "1")]
10108    pub dev: ::core::option::Option<u64>,
10109    #[prost(uint64, optional, tag = "2")]
10110    pub sector: ::core::option::Option<u64>,
10111    #[prost(uint32, optional, tag = "3")]
10112    pub nr_sector: ::core::option::Option<u32>,
10113    #[prost(uint32, optional, tag = "4")]
10114    pub bytes: ::core::option::Option<u32>,
10115    #[prost(uint32, optional, tag = "5")]
10116    pub ioprio: ::core::option::Option<u32>,
10117    #[prost(string, optional, tag = "6")]
10118    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10119    #[prost(string, optional, tag = "7")]
10120    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10121    #[prost(string, optional, tag = "8")]
10122    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10123}
10124#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10125pub struct CgroupAttachTaskFtraceEvent {
10126    #[prost(int32, optional, tag = "1")]
10127    pub dst_root: ::core::option::Option<i32>,
10128    #[prost(int32, optional, tag = "2")]
10129    pub dst_id: ::core::option::Option<i32>,
10130    #[prost(int32, optional, tag = "3")]
10131    pub pid: ::core::option::Option<i32>,
10132    #[prost(string, optional, tag = "4")]
10133    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10134    #[prost(string, optional, tag = "5")]
10135    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10136    #[prost(int32, optional, tag = "6")]
10137    pub dst_level: ::core::option::Option<i32>,
10138    #[prost(string, optional, tag = "7")]
10139    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10140}
10141#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10142pub struct CgroupMkdirFtraceEvent {
10143    #[prost(int32, optional, tag = "1")]
10144    pub root: ::core::option::Option<i32>,
10145    #[prost(int32, optional, tag = "2")]
10146    pub id: ::core::option::Option<i32>,
10147    #[prost(string, optional, tag = "3")]
10148    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10149    #[prost(int32, optional, tag = "4")]
10150    pub level: ::core::option::Option<i32>,
10151    #[prost(string, optional, tag = "5")]
10152    pub path: ::core::option::Option<::prost::alloc::string::String>,
10153}
10154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10155pub struct CgroupRemountFtraceEvent {
10156    #[prost(int32, optional, tag = "1")]
10157    pub root: ::core::option::Option<i32>,
10158    #[prost(uint32, optional, tag = "2")]
10159    pub ss_mask: ::core::option::Option<u32>,
10160    #[prost(string, optional, tag = "3")]
10161    pub name: ::core::option::Option<::prost::alloc::string::String>,
10162}
10163#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10164pub struct CgroupRmdirFtraceEvent {
10165    #[prost(int32, optional, tag = "1")]
10166    pub root: ::core::option::Option<i32>,
10167    #[prost(int32, optional, tag = "2")]
10168    pub id: ::core::option::Option<i32>,
10169    #[prost(string, optional, tag = "3")]
10170    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10171    #[prost(int32, optional, tag = "4")]
10172    pub level: ::core::option::Option<i32>,
10173    #[prost(string, optional, tag = "5")]
10174    pub path: ::core::option::Option<::prost::alloc::string::String>,
10175}
10176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10177pub struct CgroupTransferTasksFtraceEvent {
10178    #[prost(int32, optional, tag = "1")]
10179    pub dst_root: ::core::option::Option<i32>,
10180    #[prost(int32, optional, tag = "2")]
10181    pub dst_id: ::core::option::Option<i32>,
10182    #[prost(int32, optional, tag = "3")]
10183    pub pid: ::core::option::Option<i32>,
10184    #[prost(string, optional, tag = "4")]
10185    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10186    #[prost(string, optional, tag = "5")]
10187    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10188    #[prost(int32, optional, tag = "6")]
10189    pub dst_level: ::core::option::Option<i32>,
10190    #[prost(string, optional, tag = "7")]
10191    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10192}
10193#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10194pub struct CgroupDestroyRootFtraceEvent {
10195    #[prost(int32, optional, tag = "1")]
10196    pub root: ::core::option::Option<i32>,
10197    #[prost(uint32, optional, tag = "2")]
10198    pub ss_mask: ::core::option::Option<u32>,
10199    #[prost(string, optional, tag = "3")]
10200    pub name: ::core::option::Option<::prost::alloc::string::String>,
10201}
10202#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10203pub struct CgroupReleaseFtraceEvent {
10204    #[prost(int32, optional, tag = "1")]
10205    pub root: ::core::option::Option<i32>,
10206    #[prost(int32, optional, tag = "2")]
10207    pub id: ::core::option::Option<i32>,
10208    #[prost(string, optional, tag = "3")]
10209    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10210    #[prost(int32, optional, tag = "4")]
10211    pub level: ::core::option::Option<i32>,
10212    #[prost(string, optional, tag = "5")]
10213    pub path: ::core::option::Option<::prost::alloc::string::String>,
10214}
10215#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10216pub struct CgroupRenameFtraceEvent {
10217    #[prost(int32, optional, tag = "1")]
10218    pub root: ::core::option::Option<i32>,
10219    #[prost(int32, optional, tag = "2")]
10220    pub id: ::core::option::Option<i32>,
10221    #[prost(string, optional, tag = "3")]
10222    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10223    #[prost(int32, optional, tag = "4")]
10224    pub level: ::core::option::Option<i32>,
10225    #[prost(string, optional, tag = "5")]
10226    pub path: ::core::option::Option<::prost::alloc::string::String>,
10227}
10228#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10229pub struct CgroupSetupRootFtraceEvent {
10230    #[prost(int32, optional, tag = "1")]
10231    pub root: ::core::option::Option<i32>,
10232    #[prost(uint32, optional, tag = "2")]
10233    pub ss_mask: ::core::option::Option<u32>,
10234    #[prost(string, optional, tag = "3")]
10235    pub name: ::core::option::Option<::prost::alloc::string::String>,
10236}
10237#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10238pub struct ClkEnableFtraceEvent {
10239    #[prost(string, optional, tag = "1")]
10240    pub name: ::core::option::Option<::prost::alloc::string::String>,
10241}
10242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10243pub struct ClkDisableFtraceEvent {
10244    #[prost(string, optional, tag = "1")]
10245    pub name: ::core::option::Option<::prost::alloc::string::String>,
10246}
10247#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10248pub struct ClkSetRateFtraceEvent {
10249    #[prost(string, optional, tag = "1")]
10250    pub name: ::core::option::Option<::prost::alloc::string::String>,
10251    #[prost(uint64, optional, tag = "2")]
10252    pub rate: ::core::option::Option<u64>,
10253}
10254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10255pub struct CmaAllocStartFtraceEvent {
10256    #[prost(uint32, optional, tag = "1")]
10257    pub align: ::core::option::Option<u32>,
10258    #[prost(uint32, optional, tag = "2")]
10259    pub count: ::core::option::Option<u32>,
10260    #[prost(string, optional, tag = "3")]
10261    pub name: ::core::option::Option<::prost::alloc::string::String>,
10262}
10263#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10264pub struct CmaAllocInfoFtraceEvent {
10265    #[prost(uint32, optional, tag = "1")]
10266    pub align: ::core::option::Option<u32>,
10267    #[prost(uint32, optional, tag = "2")]
10268    pub count: ::core::option::Option<u32>,
10269    #[prost(uint32, optional, tag = "3")]
10270    pub err_iso: ::core::option::Option<u32>,
10271    #[prost(uint32, optional, tag = "4")]
10272    pub err_mig: ::core::option::Option<u32>,
10273    #[prost(uint32, optional, tag = "5")]
10274    pub err_test: ::core::option::Option<u32>,
10275    #[prost(string, optional, tag = "6")]
10276    pub name: ::core::option::Option<::prost::alloc::string::String>,
10277    #[prost(uint64, optional, tag = "7")]
10278    pub nr_mapped: ::core::option::Option<u64>,
10279    #[prost(uint64, optional, tag = "8")]
10280    pub nr_migrated: ::core::option::Option<u64>,
10281    #[prost(uint64, optional, tag = "9")]
10282    pub nr_reclaimed: ::core::option::Option<u64>,
10283    #[prost(uint64, optional, tag = "10")]
10284    pub pfn: ::core::option::Option<u64>,
10285}
10286#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10287pub struct CmaAllocFinishFtraceEvent {
10288    #[prost(string, optional, tag = "1")]
10289    pub name: ::core::option::Option<::prost::alloc::string::String>,
10290    #[prost(uint64, optional, tag = "2")]
10291    pub pfn: ::core::option::Option<u64>,
10292    #[prost(uint64, optional, tag = "3")]
10293    pub page: ::core::option::Option<u64>,
10294    #[prost(uint64, optional, tag = "4")]
10295    pub count: ::core::option::Option<u64>,
10296    #[prost(uint32, optional, tag = "5")]
10297    pub align: ::core::option::Option<u32>,
10298    #[prost(int32, optional, tag = "6")]
10299    pub errorno: ::core::option::Option<i32>,
10300}
10301#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10302pub struct MmCompactionBeginFtraceEvent {
10303    #[prost(uint64, optional, tag = "1")]
10304    pub zone_start: ::core::option::Option<u64>,
10305    #[prost(uint64, optional, tag = "2")]
10306    pub migrate_pfn: ::core::option::Option<u64>,
10307    #[prost(uint64, optional, tag = "3")]
10308    pub free_pfn: ::core::option::Option<u64>,
10309    #[prost(uint64, optional, tag = "4")]
10310    pub zone_end: ::core::option::Option<u64>,
10311    #[prost(uint32, optional, tag = "5")]
10312    pub sync: ::core::option::Option<u32>,
10313}
10314#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10315pub struct MmCompactionDeferCompactionFtraceEvent {
10316    #[prost(int32, optional, tag = "1")]
10317    pub nid: ::core::option::Option<i32>,
10318    #[prost(uint32, optional, tag = "2")]
10319    pub idx: ::core::option::Option<u32>,
10320    #[prost(int32, optional, tag = "3")]
10321    pub order: ::core::option::Option<i32>,
10322    #[prost(uint32, optional, tag = "4")]
10323    pub considered: ::core::option::Option<u32>,
10324    #[prost(uint32, optional, tag = "5")]
10325    pub defer_shift: ::core::option::Option<u32>,
10326    #[prost(int32, optional, tag = "6")]
10327    pub order_failed: ::core::option::Option<i32>,
10328}
10329#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10330pub struct MmCompactionDeferredFtraceEvent {
10331    #[prost(int32, optional, tag = "1")]
10332    pub nid: ::core::option::Option<i32>,
10333    #[prost(uint32, optional, tag = "2")]
10334    pub idx: ::core::option::Option<u32>,
10335    #[prost(int32, optional, tag = "3")]
10336    pub order: ::core::option::Option<i32>,
10337    #[prost(uint32, optional, tag = "4")]
10338    pub considered: ::core::option::Option<u32>,
10339    #[prost(uint32, optional, tag = "5")]
10340    pub defer_shift: ::core::option::Option<u32>,
10341    #[prost(int32, optional, tag = "6")]
10342    pub order_failed: ::core::option::Option<i32>,
10343}
10344#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10345pub struct MmCompactionDeferResetFtraceEvent {
10346    #[prost(int32, optional, tag = "1")]
10347    pub nid: ::core::option::Option<i32>,
10348    #[prost(uint32, optional, tag = "2")]
10349    pub idx: ::core::option::Option<u32>,
10350    #[prost(int32, optional, tag = "3")]
10351    pub order: ::core::option::Option<i32>,
10352    #[prost(uint32, optional, tag = "4")]
10353    pub considered: ::core::option::Option<u32>,
10354    #[prost(uint32, optional, tag = "5")]
10355    pub defer_shift: ::core::option::Option<u32>,
10356    #[prost(int32, optional, tag = "6")]
10357    pub order_failed: ::core::option::Option<i32>,
10358}
10359#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10360pub struct MmCompactionEndFtraceEvent {
10361    #[prost(uint64, optional, tag = "1")]
10362    pub zone_start: ::core::option::Option<u64>,
10363    #[prost(uint64, optional, tag = "2")]
10364    pub migrate_pfn: ::core::option::Option<u64>,
10365    #[prost(uint64, optional, tag = "3")]
10366    pub free_pfn: ::core::option::Option<u64>,
10367    #[prost(uint64, optional, tag = "4")]
10368    pub zone_end: ::core::option::Option<u64>,
10369    #[prost(uint32, optional, tag = "5")]
10370    pub sync: ::core::option::Option<u32>,
10371    #[prost(int32, optional, tag = "6")]
10372    pub status: ::core::option::Option<i32>,
10373}
10374#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10375pub struct MmCompactionFinishedFtraceEvent {
10376    #[prost(int32, optional, tag = "1")]
10377    pub nid: ::core::option::Option<i32>,
10378    #[prost(uint32, optional, tag = "2")]
10379    pub idx: ::core::option::Option<u32>,
10380    #[prost(int32, optional, tag = "3")]
10381    pub order: ::core::option::Option<i32>,
10382    #[prost(int32, optional, tag = "4")]
10383    pub ret: ::core::option::Option<i32>,
10384}
10385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10386pub struct MmCompactionIsolateFreepagesFtraceEvent {
10387    #[prost(uint64, optional, tag = "1")]
10388    pub start_pfn: ::core::option::Option<u64>,
10389    #[prost(uint64, optional, tag = "2")]
10390    pub end_pfn: ::core::option::Option<u64>,
10391    #[prost(uint64, optional, tag = "3")]
10392    pub nr_scanned: ::core::option::Option<u64>,
10393    #[prost(uint64, optional, tag = "4")]
10394    pub nr_taken: ::core::option::Option<u64>,
10395}
10396#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10397pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10398    #[prost(uint64, optional, tag = "1")]
10399    pub start_pfn: ::core::option::Option<u64>,
10400    #[prost(uint64, optional, tag = "2")]
10401    pub end_pfn: ::core::option::Option<u64>,
10402    #[prost(uint64, optional, tag = "3")]
10403    pub nr_scanned: ::core::option::Option<u64>,
10404    #[prost(uint64, optional, tag = "4")]
10405    pub nr_taken: ::core::option::Option<u64>,
10406}
10407#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10408pub struct MmCompactionKcompactdSleepFtraceEvent {
10409    #[prost(int32, optional, tag = "1")]
10410    pub nid: ::core::option::Option<i32>,
10411}
10412#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10413pub struct MmCompactionKcompactdWakeFtraceEvent {
10414    #[prost(int32, optional, tag = "1")]
10415    pub nid: ::core::option::Option<i32>,
10416    #[prost(int32, optional, tag = "2")]
10417    pub order: ::core::option::Option<i32>,
10418    #[prost(uint32, optional, tag = "3")]
10419    pub classzone_idx: ::core::option::Option<u32>,
10420    #[prost(uint32, optional, tag = "4")]
10421    pub highest_zoneidx: ::core::option::Option<u32>,
10422}
10423#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10424pub struct MmCompactionMigratepagesFtraceEvent {
10425    #[prost(uint64, optional, tag = "1")]
10426    pub nr_migrated: ::core::option::Option<u64>,
10427    #[prost(uint64, optional, tag = "2")]
10428    pub nr_failed: ::core::option::Option<u64>,
10429}
10430#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10431pub struct MmCompactionSuitableFtraceEvent {
10432    #[prost(int32, optional, tag = "1")]
10433    pub nid: ::core::option::Option<i32>,
10434    #[prost(uint32, optional, tag = "2")]
10435    pub idx: ::core::option::Option<u32>,
10436    #[prost(int32, optional, tag = "3")]
10437    pub order: ::core::option::Option<i32>,
10438    #[prost(int32, optional, tag = "4")]
10439    pub ret: ::core::option::Option<i32>,
10440}
10441#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10442pub struct MmCompactionTryToCompactPagesFtraceEvent {
10443    #[prost(int32, optional, tag = "1")]
10444    pub order: ::core::option::Option<i32>,
10445    #[prost(uint32, optional, tag = "2")]
10446    pub gfp_mask: ::core::option::Option<u32>,
10447    #[prost(uint32, optional, tag = "3")]
10448    pub mode: ::core::option::Option<u32>,
10449    #[prost(int32, optional, tag = "4")]
10450    pub prio: ::core::option::Option<i32>,
10451}
10452#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10453pub struct MmCompactionWakeupKcompactdFtraceEvent {
10454    #[prost(int32, optional, tag = "1")]
10455    pub nid: ::core::option::Option<i32>,
10456    #[prost(int32, optional, tag = "2")]
10457    pub order: ::core::option::Option<i32>,
10458    #[prost(uint32, optional, tag = "3")]
10459    pub classzone_idx: ::core::option::Option<u32>,
10460    #[prost(uint32, optional, tag = "4")]
10461    pub highest_zoneidx: ::core::option::Option<u32>,
10462}
10463#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10464pub struct ParamSetValueCpmFtraceEvent {
10465    #[prost(string, optional, tag = "1")]
10466    pub body: ::core::option::Option<::prost::alloc::string::String>,
10467    #[prost(uint32, optional, tag = "2")]
10468    pub value: ::core::option::Option<u32>,
10469    #[prost(int64, optional, tag = "3")]
10470    pub timestamp: ::core::option::Option<i64>,
10471}
10472#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10473pub struct CpuhpExitFtraceEvent {
10474    #[prost(uint32, optional, tag = "1")]
10475    pub cpu: ::core::option::Option<u32>,
10476    #[prost(int32, optional, tag = "2")]
10477    pub idx: ::core::option::Option<i32>,
10478    #[prost(int32, optional, tag = "3")]
10479    pub ret: ::core::option::Option<i32>,
10480    #[prost(int32, optional, tag = "4")]
10481    pub state: ::core::option::Option<i32>,
10482}
10483#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10484pub struct CpuhpMultiEnterFtraceEvent {
10485    #[prost(uint32, optional, tag = "1")]
10486    pub cpu: ::core::option::Option<u32>,
10487    #[prost(uint64, optional, tag = "2")]
10488    pub fun: ::core::option::Option<u64>,
10489    #[prost(int32, optional, tag = "3")]
10490    pub idx: ::core::option::Option<i32>,
10491    #[prost(int32, optional, tag = "4")]
10492    pub target: ::core::option::Option<i32>,
10493}
10494#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10495pub struct CpuhpEnterFtraceEvent {
10496    #[prost(uint32, optional, tag = "1")]
10497    pub cpu: ::core::option::Option<u32>,
10498    #[prost(uint64, optional, tag = "2")]
10499    pub fun: ::core::option::Option<u64>,
10500    #[prost(int32, optional, tag = "3")]
10501    pub idx: ::core::option::Option<i32>,
10502    #[prost(int32, optional, tag = "4")]
10503    pub target: ::core::option::Option<i32>,
10504}
10505#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10506pub struct CpuhpLatencyFtraceEvent {
10507    #[prost(uint32, optional, tag = "1")]
10508    pub cpu: ::core::option::Option<u32>,
10509    #[prost(int32, optional, tag = "2")]
10510    pub ret: ::core::option::Option<i32>,
10511    #[prost(uint32, optional, tag = "3")]
10512    pub state: ::core::option::Option<u32>,
10513    #[prost(uint64, optional, tag = "4")]
10514    pub time: ::core::option::Option<u64>,
10515}
10516#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10517pub struct CpuhpPauseFtraceEvent {
10518    #[prost(uint32, optional, tag = "1")]
10519    pub active_cpus: ::core::option::Option<u32>,
10520    #[prost(uint32, optional, tag = "2")]
10521    pub cpus: ::core::option::Option<u32>,
10522    #[prost(uint32, optional, tag = "3")]
10523    pub pause: ::core::option::Option<u32>,
10524    #[prost(uint32, optional, tag = "4")]
10525    pub time: ::core::option::Option<u32>,
10526}
10527#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10528pub struct CrosEcSensorhubDataFtraceEvent {
10529    #[prost(int64, optional, tag = "1")]
10530    pub current_time: ::core::option::Option<i64>,
10531    #[prost(int64, optional, tag = "2")]
10532    pub current_timestamp: ::core::option::Option<i64>,
10533    #[prost(int64, optional, tag = "3")]
10534    pub delta: ::core::option::Option<i64>,
10535    #[prost(uint32, optional, tag = "4")]
10536    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10537    #[prost(uint32, optional, tag = "5")]
10538    pub ec_sensor_num: ::core::option::Option<u32>,
10539    #[prost(int64, optional, tag = "6")]
10540    pub fifo_timestamp: ::core::option::Option<i64>,
10541}
10542#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10543pub struct DcvshFreqFtraceEvent {
10544    #[prost(uint64, optional, tag = "1")]
10545    pub cpu: ::core::option::Option<u64>,
10546    #[prost(uint64, optional, tag = "2")]
10547    pub freq: ::core::option::Option<u64>,
10548}
10549#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10550pub struct DevfreqFrequencyFtraceEvent {
10551    #[prost(string, optional, tag = "1")]
10552    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10553    #[prost(uint64, optional, tag = "2")]
10554    pub freq: ::core::option::Option<u64>,
10555    #[prost(uint64, optional, tag = "3")]
10556    pub prev_freq: ::core::option::Option<u64>,
10557    #[prost(uint64, optional, tag = "4")]
10558    pub busy_time: ::core::option::Option<u64>,
10559    #[prost(uint64, optional, tag = "5")]
10560    pub total_time: ::core::option::Option<u64>,
10561}
10562#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10563pub struct DmaFenceInitFtraceEvent {
10564    #[prost(uint32, optional, tag = "1")]
10565    pub context: ::core::option::Option<u32>,
10566    #[prost(string, optional, tag = "2")]
10567    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10568    #[prost(uint32, optional, tag = "3")]
10569    pub seqno: ::core::option::Option<u32>,
10570    #[prost(string, optional, tag = "4")]
10571    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10572}
10573#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10574pub struct DmaFenceEmitFtraceEvent {
10575    #[prost(uint32, optional, tag = "1")]
10576    pub context: ::core::option::Option<u32>,
10577    #[prost(string, optional, tag = "2")]
10578    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10579    #[prost(uint32, optional, tag = "3")]
10580    pub seqno: ::core::option::Option<u32>,
10581    #[prost(string, optional, tag = "4")]
10582    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10583}
10584#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10585pub struct DmaFenceSignaledFtraceEvent {
10586    #[prost(uint32, optional, tag = "1")]
10587    pub context: ::core::option::Option<u32>,
10588    #[prost(string, optional, tag = "2")]
10589    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10590    #[prost(uint32, optional, tag = "3")]
10591    pub seqno: ::core::option::Option<u32>,
10592    #[prost(string, optional, tag = "4")]
10593    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10594}
10595#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10596pub struct DmaFenceWaitStartFtraceEvent {
10597    #[prost(uint32, optional, tag = "1")]
10598    pub context: ::core::option::Option<u32>,
10599    #[prost(string, optional, tag = "2")]
10600    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10601    #[prost(uint32, optional, tag = "3")]
10602    pub seqno: ::core::option::Option<u32>,
10603    #[prost(string, optional, tag = "4")]
10604    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10605}
10606#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10607pub struct DmaFenceWaitEndFtraceEvent {
10608    #[prost(uint32, optional, tag = "1")]
10609    pub context: ::core::option::Option<u32>,
10610    #[prost(string, optional, tag = "2")]
10611    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10612    #[prost(uint32, optional, tag = "3")]
10613    pub seqno: ::core::option::Option<u32>,
10614    #[prost(string, optional, tag = "4")]
10615    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10616}
10617#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10618pub struct DmaHeapStatFtraceEvent {
10619    #[prost(uint64, optional, tag = "1")]
10620    pub inode: ::core::option::Option<u64>,
10621    #[prost(int64, optional, tag = "2")]
10622    pub len: ::core::option::Option<i64>,
10623    #[prost(uint64, optional, tag = "3")]
10624    pub total_allocated: ::core::option::Option<u64>,
10625}
10626#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10627pub struct DpuTracingMarkWriteFtraceEvent {
10628    #[prost(int32, optional, tag = "1")]
10629    pub pid: ::core::option::Option<i32>,
10630    #[prost(string, optional, tag = "2")]
10631    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10632    #[prost(uint32, optional, tag = "3")]
10633    pub trace_begin: ::core::option::Option<u32>,
10634    #[prost(string, optional, tag = "4")]
10635    pub name: ::core::option::Option<::prost::alloc::string::String>,
10636    #[prost(uint32, optional, tag = "5")]
10637    pub r#type: ::core::option::Option<u32>,
10638    #[prost(int32, optional, tag = "6")]
10639    pub value: ::core::option::Option<i32>,
10640}
10641#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10642pub struct DpuDsiCmdFifoStatusFtraceEvent {
10643    #[prost(uint32, optional, tag = "1")]
10644    pub header: ::core::option::Option<u32>,
10645    #[prost(uint32, optional, tag = "2")]
10646    pub payload: ::core::option::Option<u32>,
10647}
10648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10649pub struct DpuDsiRxFtraceEvent {
10650    #[prost(uint32, optional, tag = "1")]
10651    pub cmd: ::core::option::Option<u32>,
10652    #[prost(bytes = "vec", optional, tag = "3")]
10653    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10654}
10655#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10656pub struct DpuDsiTxFtraceEvent {
10657    #[prost(uint32, optional, tag = "1")]
10658    pub r#type: ::core::option::Option<u32>,
10659    #[prost(uint32, optional, tag = "3")]
10660    pub last: ::core::option::Option<u32>,
10661    #[prost(uint32, optional, tag = "4")]
10662    pub delay_ms: ::core::option::Option<u32>,
10663    #[prost(bytes = "vec", optional, tag = "5")]
10664    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10665}
10666#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10667pub struct DpuDispDpuUnderrunFtraceEvent {
10668    #[prost(int32, optional, tag = "1")]
10669    pub id: ::core::option::Option<i32>,
10670    #[prost(int32, optional, tag = "2")]
10671    pub frames_pending: ::core::option::Option<i32>,
10672    #[prost(int32, optional, tag = "3")]
10673    pub vsync_count: ::core::option::Option<i32>,
10674}
10675#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10676pub struct DpuDispVblankIrqEnableFtraceEvent {
10677    #[prost(int32, optional, tag = "1")]
10678    pub id: ::core::option::Option<i32>,
10679    #[prost(int32, optional, tag = "2")]
10680    pub output_id: ::core::option::Option<i32>,
10681    #[prost(int32, optional, tag = "3")]
10682    pub enable: ::core::option::Option<i32>,
10683}
10684#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10685pub struct DpuDispFrameDoneTimeoutFtraceEvent {
10686    #[prost(int32, optional, tag = "1")]
10687    pub display_id: ::core::option::Option<i32>,
10688    #[prost(uint32, optional, tag = "2")]
10689    pub output_id: ::core::option::Option<u32>,
10690    #[prost(int32, optional, tag = "3")]
10691    pub frames_pending: ::core::option::Option<i32>,
10692    #[prost(int32, optional, tag = "4")]
10693    pub te_count: ::core::option::Option<i32>,
10694    #[prost(uint32, optional, tag = "5")]
10695    pub during_disable: ::core::option::Option<u32>,
10696}
10697#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10698pub struct DpuDispFrameStartTimeoutFtraceEvent {
10699    #[prost(int32, optional, tag = "1")]
10700    pub display_id: ::core::option::Option<i32>,
10701    #[prost(uint32, optional, tag = "2")]
10702    pub output_id: ::core::option::Option<u32>,
10703    #[prost(int32, optional, tag = "3")]
10704    pub frames_pending: ::core::option::Option<i32>,
10705    #[prost(int32, optional, tag = "4")]
10706    pub te_count: ::core::option::Option<i32>,
10707}
10708#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10709pub struct DpuDispFrameDoneMissingFtraceEvent {
10710    #[prost(int32, optional, tag = "1")]
10711    pub display_id: ::core::option::Option<i32>,
10712    #[prost(uint32, optional, tag = "2")]
10713    pub output_id: ::core::option::Option<u32>,
10714    #[prost(int32, optional, tag = "3")]
10715    pub frames_pending: ::core::option::Option<i32>,
10716    #[prost(int32, optional, tag = "4")]
10717    pub te_count: ::core::option::Option<i32>,
10718}
10719#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10720pub struct DpuDispFrameStartMissingFtraceEvent {
10721    #[prost(int32, optional, tag = "1")]
10722    pub display_id: ::core::option::Option<i32>,
10723    #[prost(uint32, optional, tag = "2")]
10724    pub output_id: ::core::option::Option<u32>,
10725    #[prost(int32, optional, tag = "3")]
10726    pub frames_pending: ::core::option::Option<i32>,
10727    #[prost(int32, optional, tag = "4")]
10728    pub te_count: ::core::option::Option<i32>,
10729}
10730#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10731pub struct DpuDispDpuLineUnderrunFtraceEvent {
10732    #[prost(int32, optional, tag = "1")]
10733    pub id: ::core::option::Option<i32>,
10734    #[prost(int32, optional, tag = "2")]
10735    pub frames_pending: ::core::option::Option<i32>,
10736    #[prost(int32, optional, tag = "3")]
10737    pub vsync_count: ::core::option::Option<i32>,
10738}
10739#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10740pub struct DrmVblankEventFtraceEvent {
10741    #[prost(int32, optional, tag = "1")]
10742    pub crtc: ::core::option::Option<i32>,
10743    #[prost(uint32, optional, tag = "2")]
10744    pub high_prec: ::core::option::Option<u32>,
10745    #[prost(uint32, optional, tag = "3")]
10746    pub seq: ::core::option::Option<u32>,
10747    #[prost(int64, optional, tag = "4")]
10748    pub time: ::core::option::Option<i64>,
10749}
10750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10751pub struct DrmVblankEventDeliveredFtraceEvent {
10752    #[prost(int32, optional, tag = "1")]
10753    pub crtc: ::core::option::Option<i32>,
10754    #[prost(uint64, optional, tag = "2")]
10755    pub file: ::core::option::Option<u64>,
10756    #[prost(uint32, optional, tag = "3")]
10757    pub seq: ::core::option::Option<u32>,
10758}
10759#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10760pub struct Dwc3AllocRequestFtraceEvent {
10761    #[prost(string, optional, tag = "1")]
10762    pub name: ::core::option::Option<::prost::alloc::string::String>,
10763    #[prost(uint64, optional, tag = "2")]
10764    pub req: ::core::option::Option<u64>,
10765    #[prost(uint32, optional, tag = "3")]
10766    pub actual: ::core::option::Option<u32>,
10767    #[prost(uint32, optional, tag = "4")]
10768    pub length: ::core::option::Option<u32>,
10769    #[prost(int32, optional, tag = "5")]
10770    pub status: ::core::option::Option<i32>,
10771    #[prost(int32, optional, tag = "6")]
10772    pub zero: ::core::option::Option<i32>,
10773    #[prost(int32, optional, tag = "7")]
10774    pub short_not_ok: ::core::option::Option<i32>,
10775    #[prost(int32, optional, tag = "8")]
10776    pub no_interrupt: ::core::option::Option<i32>,
10777}
10778#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10779pub struct Dwc3CompleteTrbFtraceEvent {
10780    #[prost(string, optional, tag = "1")]
10781    pub name: ::core::option::Option<::prost::alloc::string::String>,
10782    #[prost(uint64, optional, tag = "2")]
10783    pub trb: ::core::option::Option<u64>,
10784    #[prost(uint32, optional, tag = "3")]
10785    pub allocated: ::core::option::Option<u32>,
10786    #[prost(uint32, optional, tag = "4")]
10787    pub queued: ::core::option::Option<u32>,
10788    #[prost(uint32, optional, tag = "5")]
10789    pub bpl: ::core::option::Option<u32>,
10790    #[prost(uint32, optional, tag = "6")]
10791    pub bph: ::core::option::Option<u32>,
10792    #[prost(uint32, optional, tag = "7")]
10793    pub size: ::core::option::Option<u32>,
10794    #[prost(uint32, optional, tag = "8")]
10795    pub ctrl: ::core::option::Option<u32>,
10796    #[prost(uint32, optional, tag = "9")]
10797    pub r#type: ::core::option::Option<u32>,
10798    #[prost(uint32, optional, tag = "10")]
10799    pub enqueue: ::core::option::Option<u32>,
10800    #[prost(uint32, optional, tag = "11")]
10801    pub dequeue: ::core::option::Option<u32>,
10802}
10803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10804pub struct Dwc3CtrlReqFtraceEvent {
10805    #[prost(uint32, optional, tag = "1")]
10806    pub b_request_type: ::core::option::Option<u32>,
10807    #[prost(uint32, optional, tag = "2")]
10808    pub b_request: ::core::option::Option<u32>,
10809    #[prost(uint32, optional, tag = "3")]
10810    pub w_value: ::core::option::Option<u32>,
10811    #[prost(uint32, optional, tag = "4")]
10812    pub w_index: ::core::option::Option<u32>,
10813    #[prost(uint32, optional, tag = "5")]
10814    pub w_length: ::core::option::Option<u32>,
10815    #[prost(string, optional, tag = "6")]
10816    pub str: ::core::option::Option<::prost::alloc::string::String>,
10817}
10818#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10819pub struct Dwc3EpDequeueFtraceEvent {
10820    #[prost(string, optional, tag = "1")]
10821    pub name: ::core::option::Option<::prost::alloc::string::String>,
10822    #[prost(uint64, optional, tag = "2")]
10823    pub req: ::core::option::Option<u64>,
10824    #[prost(uint32, optional, tag = "3")]
10825    pub actual: ::core::option::Option<u32>,
10826    #[prost(uint32, optional, tag = "4")]
10827    pub length: ::core::option::Option<u32>,
10828    #[prost(int32, optional, tag = "5")]
10829    pub status: ::core::option::Option<i32>,
10830    #[prost(int32, optional, tag = "6")]
10831    pub zero: ::core::option::Option<i32>,
10832    #[prost(int32, optional, tag = "7")]
10833    pub short_not_ok: ::core::option::Option<i32>,
10834    #[prost(int32, optional, tag = "8")]
10835    pub no_interrupt: ::core::option::Option<i32>,
10836}
10837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10838pub struct Dwc3EpQueueFtraceEvent {
10839    #[prost(string, optional, tag = "1")]
10840    pub name: ::core::option::Option<::prost::alloc::string::String>,
10841    #[prost(uint64, optional, tag = "2")]
10842    pub req: ::core::option::Option<u64>,
10843    #[prost(uint32, optional, tag = "3")]
10844    pub actual: ::core::option::Option<u32>,
10845    #[prost(uint32, optional, tag = "4")]
10846    pub length: ::core::option::Option<u32>,
10847    #[prost(int32, optional, tag = "5")]
10848    pub status: ::core::option::Option<i32>,
10849    #[prost(int32, optional, tag = "6")]
10850    pub zero: ::core::option::Option<i32>,
10851    #[prost(int32, optional, tag = "7")]
10852    pub short_not_ok: ::core::option::Option<i32>,
10853    #[prost(int32, optional, tag = "8")]
10854    pub no_interrupt: ::core::option::Option<i32>,
10855}
10856#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10857pub struct Dwc3EventFtraceEvent {
10858    #[prost(uint32, optional, tag = "1")]
10859    pub event: ::core::option::Option<u32>,
10860    #[prost(uint32, optional, tag = "2")]
10861    pub ep0state: ::core::option::Option<u32>,
10862    #[prost(string, optional, tag = "3")]
10863    pub str: ::core::option::Option<::prost::alloc::string::String>,
10864}
10865#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10866pub struct Dwc3FreeRequestFtraceEvent {
10867    #[prost(string, optional, tag = "1")]
10868    pub name: ::core::option::Option<::prost::alloc::string::String>,
10869    #[prost(uint64, optional, tag = "2")]
10870    pub req: ::core::option::Option<u64>,
10871    #[prost(uint32, optional, tag = "3")]
10872    pub actual: ::core::option::Option<u32>,
10873    #[prost(uint32, optional, tag = "4")]
10874    pub length: ::core::option::Option<u32>,
10875    #[prost(int32, optional, tag = "5")]
10876    pub status: ::core::option::Option<i32>,
10877    #[prost(int32, optional, tag = "6")]
10878    pub zero: ::core::option::Option<i32>,
10879    #[prost(int32, optional, tag = "7")]
10880    pub short_not_ok: ::core::option::Option<i32>,
10881    #[prost(int32, optional, tag = "8")]
10882    pub no_interrupt: ::core::option::Option<i32>,
10883}
10884#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10885pub struct Dwc3GadgetEpCmdFtraceEvent {
10886    #[prost(string, optional, tag = "1")]
10887    pub name: ::core::option::Option<::prost::alloc::string::String>,
10888    #[prost(uint32, optional, tag = "2")]
10889    pub cmd: ::core::option::Option<u32>,
10890    #[prost(uint32, optional, tag = "3")]
10891    pub param0: ::core::option::Option<u32>,
10892    #[prost(uint32, optional, tag = "4")]
10893    pub param1: ::core::option::Option<u32>,
10894    #[prost(uint32, optional, tag = "5")]
10895    pub param2: ::core::option::Option<u32>,
10896    #[prost(int32, optional, tag = "6")]
10897    pub cmd_status: ::core::option::Option<i32>,
10898}
10899#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10900pub struct Dwc3GadgetEpDisableFtraceEvent {
10901    #[prost(string, optional, tag = "1")]
10902    pub name: ::core::option::Option<::prost::alloc::string::String>,
10903    #[prost(uint32, optional, tag = "2")]
10904    pub maxpacket: ::core::option::Option<u32>,
10905    #[prost(uint32, optional, tag = "3")]
10906    pub maxpacket_limit: ::core::option::Option<u32>,
10907    #[prost(uint32, optional, tag = "4")]
10908    pub max_streams: ::core::option::Option<u32>,
10909    #[prost(uint32, optional, tag = "5")]
10910    pub maxburst: ::core::option::Option<u32>,
10911    #[prost(uint32, optional, tag = "6")]
10912    pub flags: ::core::option::Option<u32>,
10913    #[prost(uint32, optional, tag = "7")]
10914    pub direction: ::core::option::Option<u32>,
10915    #[prost(uint32, optional, tag = "8")]
10916    pub trb_enqueue: ::core::option::Option<u32>,
10917    #[prost(uint32, optional, tag = "9")]
10918    pub trb_dequeue: ::core::option::Option<u32>,
10919}
10920#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10921pub struct Dwc3GadgetEpEnableFtraceEvent {
10922    #[prost(string, optional, tag = "1")]
10923    pub name: ::core::option::Option<::prost::alloc::string::String>,
10924    #[prost(uint32, optional, tag = "2")]
10925    pub maxpacket: ::core::option::Option<u32>,
10926    #[prost(uint32, optional, tag = "3")]
10927    pub maxpacket_limit: ::core::option::Option<u32>,
10928    #[prost(uint32, optional, tag = "4")]
10929    pub max_streams: ::core::option::Option<u32>,
10930    #[prost(uint32, optional, tag = "5")]
10931    pub maxburst: ::core::option::Option<u32>,
10932    #[prost(uint32, optional, tag = "6")]
10933    pub flags: ::core::option::Option<u32>,
10934    #[prost(uint32, optional, tag = "7")]
10935    pub direction: ::core::option::Option<u32>,
10936    #[prost(uint32, optional, tag = "8")]
10937    pub trb_enqueue: ::core::option::Option<u32>,
10938    #[prost(uint32, optional, tag = "9")]
10939    pub trb_dequeue: ::core::option::Option<u32>,
10940}
10941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10942pub struct Dwc3GadgetGenericCmdFtraceEvent {
10943    #[prost(uint32, optional, tag = "1")]
10944    pub cmd: ::core::option::Option<u32>,
10945    #[prost(uint32, optional, tag = "2")]
10946    pub param: ::core::option::Option<u32>,
10947    #[prost(int32, optional, tag = "3")]
10948    pub status: ::core::option::Option<i32>,
10949}
10950#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10951pub struct Dwc3GadgetGivebackFtraceEvent {
10952    #[prost(string, optional, tag = "1")]
10953    pub name: ::core::option::Option<::prost::alloc::string::String>,
10954    #[prost(uint64, optional, tag = "2")]
10955    pub req: ::core::option::Option<u64>,
10956    #[prost(uint32, optional, tag = "3")]
10957    pub actual: ::core::option::Option<u32>,
10958    #[prost(uint32, optional, tag = "4")]
10959    pub length: ::core::option::Option<u32>,
10960    #[prost(int32, optional, tag = "5")]
10961    pub status: ::core::option::Option<i32>,
10962    #[prost(int32, optional, tag = "6")]
10963    pub zero: ::core::option::Option<i32>,
10964    #[prost(int32, optional, tag = "7")]
10965    pub short_not_ok: ::core::option::Option<i32>,
10966    #[prost(int32, optional, tag = "8")]
10967    pub no_interrupt: ::core::option::Option<i32>,
10968}
10969#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10970pub struct Dwc3PrepareTrbFtraceEvent {
10971    #[prost(string, optional, tag = "1")]
10972    pub name: ::core::option::Option<::prost::alloc::string::String>,
10973    #[prost(uint64, optional, tag = "2")]
10974    pub trb: ::core::option::Option<u64>,
10975    #[prost(uint32, optional, tag = "3")]
10976    pub allocated: ::core::option::Option<u32>,
10977    #[prost(uint32, optional, tag = "4")]
10978    pub queued: ::core::option::Option<u32>,
10979    #[prost(uint32, optional, tag = "5")]
10980    pub bpl: ::core::option::Option<u32>,
10981    #[prost(uint32, optional, tag = "6")]
10982    pub bph: ::core::option::Option<u32>,
10983    #[prost(uint32, optional, tag = "7")]
10984    pub size: ::core::option::Option<u32>,
10985    #[prost(uint32, optional, tag = "8")]
10986    pub ctrl: ::core::option::Option<u32>,
10987    #[prost(uint32, optional, tag = "9")]
10988    pub r#type: ::core::option::Option<u32>,
10989    #[prost(uint32, optional, tag = "10")]
10990    pub enqueue: ::core::option::Option<u32>,
10991    #[prost(uint32, optional, tag = "11")]
10992    pub dequeue: ::core::option::Option<u32>,
10993}
10994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10995pub struct Dwc3ReadlFtraceEvent {
10996    #[prost(uint64, optional, tag = "1")]
10997    pub base: ::core::option::Option<u64>,
10998    #[prost(uint32, optional, tag = "2")]
10999    pub offset: ::core::option::Option<u32>,
11000    #[prost(uint32, optional, tag = "3")]
11001    pub value: ::core::option::Option<u32>,
11002    #[prost(string, optional, tag = "4")]
11003    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11004}
11005#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11006pub struct Dwc3WritelFtraceEvent {
11007    #[prost(uint64, optional, tag = "1")]
11008    pub base: ::core::option::Option<u64>,
11009    #[prost(uint32, optional, tag = "2")]
11010    pub offset: ::core::option::Option<u32>,
11011    #[prost(uint32, optional, tag = "3")]
11012    pub value: ::core::option::Option<u32>,
11013    #[prost(string, optional, tag = "4")]
11014    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11015}
11016#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11017pub struct Ext4DaWriteBeginFtraceEvent {
11018    #[prost(uint64, optional, tag = "1")]
11019    pub dev: ::core::option::Option<u64>,
11020    #[prost(uint64, optional, tag = "2")]
11021    pub ino: ::core::option::Option<u64>,
11022    #[prost(int64, optional, tag = "3")]
11023    pub pos: ::core::option::Option<i64>,
11024    #[prost(uint32, optional, tag = "4")]
11025    pub len: ::core::option::Option<u32>,
11026    #[prost(uint32, optional, tag = "5")]
11027    pub flags: ::core::option::Option<u32>,
11028}
11029#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11030pub struct Ext4DaWriteEndFtraceEvent {
11031    #[prost(uint64, optional, tag = "1")]
11032    pub dev: ::core::option::Option<u64>,
11033    #[prost(uint64, optional, tag = "2")]
11034    pub ino: ::core::option::Option<u64>,
11035    #[prost(int64, optional, tag = "3")]
11036    pub pos: ::core::option::Option<i64>,
11037    #[prost(uint32, optional, tag = "4")]
11038    pub len: ::core::option::Option<u32>,
11039    #[prost(uint32, optional, tag = "5")]
11040    pub copied: ::core::option::Option<u32>,
11041}
11042#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11043pub struct Ext4SyncFileEnterFtraceEvent {
11044    #[prost(uint64, optional, tag = "1")]
11045    pub dev: ::core::option::Option<u64>,
11046    #[prost(uint64, optional, tag = "2")]
11047    pub ino: ::core::option::Option<u64>,
11048    #[prost(uint64, optional, tag = "3")]
11049    pub parent: ::core::option::Option<u64>,
11050    #[prost(int32, optional, tag = "4")]
11051    pub datasync: ::core::option::Option<i32>,
11052}
11053#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11054pub struct Ext4SyncFileExitFtraceEvent {
11055    #[prost(uint64, optional, tag = "1")]
11056    pub dev: ::core::option::Option<u64>,
11057    #[prost(uint64, optional, tag = "2")]
11058    pub ino: ::core::option::Option<u64>,
11059    #[prost(int32, optional, tag = "3")]
11060    pub ret: ::core::option::Option<i32>,
11061}
11062#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11063pub struct Ext4AllocDaBlocksFtraceEvent {
11064    #[prost(uint64, optional, tag = "1")]
11065    pub dev: ::core::option::Option<u64>,
11066    #[prost(uint64, optional, tag = "2")]
11067    pub ino: ::core::option::Option<u64>,
11068    #[prost(uint32, optional, tag = "3")]
11069    pub data_blocks: ::core::option::Option<u32>,
11070    #[prost(uint32, optional, tag = "4")]
11071    pub meta_blocks: ::core::option::Option<u32>,
11072}
11073#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11074pub struct Ext4AllocateBlocksFtraceEvent {
11075    #[prost(uint64, optional, tag = "1")]
11076    pub dev: ::core::option::Option<u64>,
11077    #[prost(uint64, optional, tag = "2")]
11078    pub ino: ::core::option::Option<u64>,
11079    #[prost(uint64, optional, tag = "3")]
11080    pub block: ::core::option::Option<u64>,
11081    #[prost(uint32, optional, tag = "4")]
11082    pub len: ::core::option::Option<u32>,
11083    #[prost(uint32, optional, tag = "5")]
11084    pub logical: ::core::option::Option<u32>,
11085    #[prost(uint32, optional, tag = "6")]
11086    pub lleft: ::core::option::Option<u32>,
11087    #[prost(uint32, optional, tag = "7")]
11088    pub lright: ::core::option::Option<u32>,
11089    #[prost(uint64, optional, tag = "8")]
11090    pub goal: ::core::option::Option<u64>,
11091    #[prost(uint64, optional, tag = "9")]
11092    pub pleft: ::core::option::Option<u64>,
11093    #[prost(uint64, optional, tag = "10")]
11094    pub pright: ::core::option::Option<u64>,
11095    #[prost(uint32, optional, tag = "11")]
11096    pub flags: ::core::option::Option<u32>,
11097}
11098#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11099pub struct Ext4AllocateInodeFtraceEvent {
11100    #[prost(uint64, optional, tag = "1")]
11101    pub dev: ::core::option::Option<u64>,
11102    #[prost(uint64, optional, tag = "2")]
11103    pub ino: ::core::option::Option<u64>,
11104    #[prost(uint64, optional, tag = "3")]
11105    pub dir: ::core::option::Option<u64>,
11106    #[prost(uint32, optional, tag = "4")]
11107    pub mode: ::core::option::Option<u32>,
11108}
11109#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11110pub struct Ext4BeginOrderedTruncateFtraceEvent {
11111    #[prost(uint64, optional, tag = "1")]
11112    pub dev: ::core::option::Option<u64>,
11113    #[prost(uint64, optional, tag = "2")]
11114    pub ino: ::core::option::Option<u64>,
11115    #[prost(int64, optional, tag = "3")]
11116    pub new_size: ::core::option::Option<i64>,
11117}
11118#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11119pub struct Ext4CollapseRangeFtraceEvent {
11120    #[prost(uint64, optional, tag = "1")]
11121    pub dev: ::core::option::Option<u64>,
11122    #[prost(uint64, optional, tag = "2")]
11123    pub ino: ::core::option::Option<u64>,
11124    #[prost(int64, optional, tag = "3")]
11125    pub offset: ::core::option::Option<i64>,
11126    #[prost(int64, optional, tag = "4")]
11127    pub len: ::core::option::Option<i64>,
11128}
11129#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11130pub struct Ext4DaReleaseSpaceFtraceEvent {
11131    #[prost(uint64, optional, tag = "1")]
11132    pub dev: ::core::option::Option<u64>,
11133    #[prost(uint64, optional, tag = "2")]
11134    pub ino: ::core::option::Option<u64>,
11135    #[prost(uint64, optional, tag = "3")]
11136    pub i_blocks: ::core::option::Option<u64>,
11137    #[prost(int32, optional, tag = "4")]
11138    pub freed_blocks: ::core::option::Option<i32>,
11139    #[prost(int32, optional, tag = "5")]
11140    pub reserved_data_blocks: ::core::option::Option<i32>,
11141    #[prost(int32, optional, tag = "6")]
11142    pub reserved_meta_blocks: ::core::option::Option<i32>,
11143    #[prost(int32, optional, tag = "7")]
11144    pub allocated_meta_blocks: ::core::option::Option<i32>,
11145    #[prost(uint32, optional, tag = "8")]
11146    pub mode: ::core::option::Option<u32>,
11147}
11148#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11149pub struct Ext4DaReserveSpaceFtraceEvent {
11150    #[prost(uint64, optional, tag = "1")]
11151    pub dev: ::core::option::Option<u64>,
11152    #[prost(uint64, optional, tag = "2")]
11153    pub ino: ::core::option::Option<u64>,
11154    #[prost(uint64, optional, tag = "3")]
11155    pub i_blocks: ::core::option::Option<u64>,
11156    #[prost(int32, optional, tag = "4")]
11157    pub reserved_data_blocks: ::core::option::Option<i32>,
11158    #[prost(int32, optional, tag = "5")]
11159    pub reserved_meta_blocks: ::core::option::Option<i32>,
11160    #[prost(uint32, optional, tag = "6")]
11161    pub mode: ::core::option::Option<u32>,
11162    #[prost(int32, optional, tag = "7")]
11163    pub md_needed: ::core::option::Option<i32>,
11164}
11165#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11166pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
11167    #[prost(uint64, optional, tag = "1")]
11168    pub dev: ::core::option::Option<u64>,
11169    #[prost(uint64, optional, tag = "2")]
11170    pub ino: ::core::option::Option<u64>,
11171    #[prost(uint64, optional, tag = "3")]
11172    pub i_blocks: ::core::option::Option<u64>,
11173    #[prost(int32, optional, tag = "4")]
11174    pub used_blocks: ::core::option::Option<i32>,
11175    #[prost(int32, optional, tag = "5")]
11176    pub reserved_data_blocks: ::core::option::Option<i32>,
11177    #[prost(int32, optional, tag = "6")]
11178    pub reserved_meta_blocks: ::core::option::Option<i32>,
11179    #[prost(int32, optional, tag = "7")]
11180    pub allocated_meta_blocks: ::core::option::Option<i32>,
11181    #[prost(int32, optional, tag = "8")]
11182    pub quota_claim: ::core::option::Option<i32>,
11183    #[prost(uint32, optional, tag = "9")]
11184    pub mode: ::core::option::Option<u32>,
11185}
11186#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11187pub struct Ext4DaWritePagesFtraceEvent {
11188    #[prost(uint64, optional, tag = "1")]
11189    pub dev: ::core::option::Option<u64>,
11190    #[prost(uint64, optional, tag = "2")]
11191    pub ino: ::core::option::Option<u64>,
11192    #[prost(uint64, optional, tag = "3")]
11193    pub first_page: ::core::option::Option<u64>,
11194    #[prost(int64, optional, tag = "4")]
11195    pub nr_to_write: ::core::option::Option<i64>,
11196    #[prost(int32, optional, tag = "5")]
11197    pub sync_mode: ::core::option::Option<i32>,
11198    #[prost(uint64, optional, tag = "6")]
11199    pub b_blocknr: ::core::option::Option<u64>,
11200    #[prost(uint32, optional, tag = "7")]
11201    pub b_size: ::core::option::Option<u32>,
11202    #[prost(uint32, optional, tag = "8")]
11203    pub b_state: ::core::option::Option<u32>,
11204    #[prost(int32, optional, tag = "9")]
11205    pub io_done: ::core::option::Option<i32>,
11206    #[prost(int32, optional, tag = "10")]
11207    pub pages_written: ::core::option::Option<i32>,
11208}
11209#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11210pub struct Ext4DaWritePagesExtentFtraceEvent {
11211    #[prost(uint64, optional, tag = "1")]
11212    pub dev: ::core::option::Option<u64>,
11213    #[prost(uint64, optional, tag = "2")]
11214    pub ino: ::core::option::Option<u64>,
11215    #[prost(uint64, optional, tag = "3")]
11216    pub lblk: ::core::option::Option<u64>,
11217    #[prost(uint32, optional, tag = "4")]
11218    pub len: ::core::option::Option<u32>,
11219    #[prost(uint32, optional, tag = "5")]
11220    pub flags: ::core::option::Option<u32>,
11221}
11222#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11223pub struct Ext4DirectIoEnterFtraceEvent {
11224    #[prost(uint64, optional, tag = "1")]
11225    pub dev: ::core::option::Option<u64>,
11226    #[prost(uint64, optional, tag = "2")]
11227    pub ino: ::core::option::Option<u64>,
11228    #[prost(int64, optional, tag = "3")]
11229    pub pos: ::core::option::Option<i64>,
11230    #[prost(uint64, optional, tag = "4")]
11231    pub len: ::core::option::Option<u64>,
11232    #[prost(int32, optional, tag = "5")]
11233    pub rw: ::core::option::Option<i32>,
11234}
11235#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11236pub struct Ext4DirectIoExitFtraceEvent {
11237    #[prost(uint64, optional, tag = "1")]
11238    pub dev: ::core::option::Option<u64>,
11239    #[prost(uint64, optional, tag = "2")]
11240    pub ino: ::core::option::Option<u64>,
11241    #[prost(int64, optional, tag = "3")]
11242    pub pos: ::core::option::Option<i64>,
11243    #[prost(uint64, optional, tag = "4")]
11244    pub len: ::core::option::Option<u64>,
11245    #[prost(int32, optional, tag = "5")]
11246    pub rw: ::core::option::Option<i32>,
11247    #[prost(int32, optional, tag = "6")]
11248    pub ret: ::core::option::Option<i32>,
11249}
11250#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11251pub struct Ext4DiscardBlocksFtraceEvent {
11252    #[prost(uint64, optional, tag = "1")]
11253    pub dev: ::core::option::Option<u64>,
11254    #[prost(uint64, optional, tag = "2")]
11255    pub blk: ::core::option::Option<u64>,
11256    #[prost(uint64, optional, tag = "3")]
11257    pub count: ::core::option::Option<u64>,
11258}
11259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11260pub struct Ext4DiscardPreallocationsFtraceEvent {
11261    #[prost(uint64, optional, tag = "1")]
11262    pub dev: ::core::option::Option<u64>,
11263    #[prost(uint64, optional, tag = "2")]
11264    pub ino: ::core::option::Option<u64>,
11265    #[prost(uint32, optional, tag = "3")]
11266    pub len: ::core::option::Option<u32>,
11267    #[prost(uint32, optional, tag = "4")]
11268    pub needed: ::core::option::Option<u32>,
11269}
11270#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11271pub struct Ext4DropInodeFtraceEvent {
11272    #[prost(uint64, optional, tag = "1")]
11273    pub dev: ::core::option::Option<u64>,
11274    #[prost(uint64, optional, tag = "2")]
11275    pub ino: ::core::option::Option<u64>,
11276    #[prost(int32, optional, tag = "3")]
11277    pub drop: ::core::option::Option<i32>,
11278}
11279#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11280pub struct Ext4EsCacheExtentFtraceEvent {
11281    #[prost(uint64, optional, tag = "1")]
11282    pub dev: ::core::option::Option<u64>,
11283    #[prost(uint64, optional, tag = "2")]
11284    pub ino: ::core::option::Option<u64>,
11285    #[prost(uint32, optional, tag = "3")]
11286    pub lblk: ::core::option::Option<u32>,
11287    #[prost(uint32, optional, tag = "4")]
11288    pub len: ::core::option::Option<u32>,
11289    #[prost(uint64, optional, tag = "5")]
11290    pub pblk: ::core::option::Option<u64>,
11291    #[prost(uint32, optional, tag = "6")]
11292    pub status: ::core::option::Option<u32>,
11293}
11294#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11295pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11296    #[prost(uint64, optional, tag = "1")]
11297    pub dev: ::core::option::Option<u64>,
11298    #[prost(uint64, optional, tag = "2")]
11299    pub ino: ::core::option::Option<u64>,
11300    #[prost(uint32, optional, tag = "3")]
11301    pub lblk: ::core::option::Option<u32>,
11302}
11303#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11304pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11305    #[prost(uint64, optional, tag = "1")]
11306    pub dev: ::core::option::Option<u64>,
11307    #[prost(uint64, optional, tag = "2")]
11308    pub ino: ::core::option::Option<u64>,
11309    #[prost(uint32, optional, tag = "3")]
11310    pub lblk: ::core::option::Option<u32>,
11311    #[prost(uint32, optional, tag = "4")]
11312    pub len: ::core::option::Option<u32>,
11313    #[prost(uint64, optional, tag = "5")]
11314    pub pblk: ::core::option::Option<u64>,
11315    #[prost(uint64, optional, tag = "6")]
11316    pub status: ::core::option::Option<u64>,
11317}
11318#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11319pub struct Ext4EsInsertExtentFtraceEvent {
11320    #[prost(uint64, optional, tag = "1")]
11321    pub dev: ::core::option::Option<u64>,
11322    #[prost(uint64, optional, tag = "2")]
11323    pub ino: ::core::option::Option<u64>,
11324    #[prost(uint32, optional, tag = "3")]
11325    pub lblk: ::core::option::Option<u32>,
11326    #[prost(uint32, optional, tag = "4")]
11327    pub len: ::core::option::Option<u32>,
11328    #[prost(uint64, optional, tag = "5")]
11329    pub pblk: ::core::option::Option<u64>,
11330    #[prost(uint64, optional, tag = "6")]
11331    pub status: ::core::option::Option<u64>,
11332}
11333#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11334pub struct Ext4EsLookupExtentEnterFtraceEvent {
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(uint32, optional, tag = "3")]
11340    pub lblk: ::core::option::Option<u32>,
11341}
11342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11343pub struct Ext4EsLookupExtentExitFtraceEvent {
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(uint32, optional, tag = "3")]
11349    pub lblk: ::core::option::Option<u32>,
11350    #[prost(uint32, optional, tag = "4")]
11351    pub len: ::core::option::Option<u32>,
11352    #[prost(uint64, optional, tag = "5")]
11353    pub pblk: ::core::option::Option<u64>,
11354    #[prost(uint64, optional, tag = "6")]
11355    pub status: ::core::option::Option<u64>,
11356    #[prost(int32, optional, tag = "7")]
11357    pub found: ::core::option::Option<i32>,
11358}
11359#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11360pub struct Ext4EsRemoveExtentFtraceEvent {
11361    #[prost(uint64, optional, tag = "1")]
11362    pub dev: ::core::option::Option<u64>,
11363    #[prost(uint64, optional, tag = "2")]
11364    pub ino: ::core::option::Option<u64>,
11365    #[prost(int64, optional, tag = "3")]
11366    pub lblk: ::core::option::Option<i64>,
11367    #[prost(int64, optional, tag = "4")]
11368    pub len: ::core::option::Option<i64>,
11369}
11370#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11371pub struct Ext4EsShrinkFtraceEvent {
11372    #[prost(uint64, optional, tag = "1")]
11373    pub dev: ::core::option::Option<u64>,
11374    #[prost(int32, optional, tag = "2")]
11375    pub nr_shrunk: ::core::option::Option<i32>,
11376    #[prost(uint64, optional, tag = "3")]
11377    pub scan_time: ::core::option::Option<u64>,
11378    #[prost(int32, optional, tag = "4")]
11379    pub nr_skipped: ::core::option::Option<i32>,
11380    #[prost(int32, optional, tag = "5")]
11381    pub retried: ::core::option::Option<i32>,
11382}
11383#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11384pub struct Ext4EsShrinkCountFtraceEvent {
11385    #[prost(uint64, optional, tag = "1")]
11386    pub dev: ::core::option::Option<u64>,
11387    #[prost(int32, optional, tag = "2")]
11388    pub nr_to_scan: ::core::option::Option<i32>,
11389    #[prost(int32, optional, tag = "3")]
11390    pub cache_cnt: ::core::option::Option<i32>,
11391}
11392#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11393pub struct Ext4EsShrinkScanEnterFtraceEvent {
11394    #[prost(uint64, optional, tag = "1")]
11395    pub dev: ::core::option::Option<u64>,
11396    #[prost(int32, optional, tag = "2")]
11397    pub nr_to_scan: ::core::option::Option<i32>,
11398    #[prost(int32, optional, tag = "3")]
11399    pub cache_cnt: ::core::option::Option<i32>,
11400}
11401#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11402pub struct Ext4EsShrinkScanExitFtraceEvent {
11403    #[prost(uint64, optional, tag = "1")]
11404    pub dev: ::core::option::Option<u64>,
11405    #[prost(int32, optional, tag = "2")]
11406    pub nr_shrunk: ::core::option::Option<i32>,
11407    #[prost(int32, optional, tag = "3")]
11408    pub cache_cnt: ::core::option::Option<i32>,
11409}
11410#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11411pub struct Ext4EvictInodeFtraceEvent {
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(int32, optional, tag = "3")]
11417    pub nlink: ::core::option::Option<i32>,
11418}
11419#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11420pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
11421    #[prost(uint64, optional, tag = "1")]
11422    pub dev: ::core::option::Option<u64>,
11423    #[prost(uint64, optional, tag = "2")]
11424    pub ino: ::core::option::Option<u64>,
11425    #[prost(uint32, optional, tag = "3")]
11426    pub m_lblk: ::core::option::Option<u32>,
11427    #[prost(uint32, optional, tag = "4")]
11428    pub m_len: ::core::option::Option<u32>,
11429    #[prost(uint32, optional, tag = "5")]
11430    pub u_lblk: ::core::option::Option<u32>,
11431    #[prost(uint32, optional, tag = "6")]
11432    pub u_len: ::core::option::Option<u32>,
11433    #[prost(uint64, optional, tag = "7")]
11434    pub u_pblk: ::core::option::Option<u64>,
11435}
11436#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11437pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11438    #[prost(uint64, optional, tag = "1")]
11439    pub dev: ::core::option::Option<u64>,
11440    #[prost(uint64, optional, tag = "2")]
11441    pub ino: ::core::option::Option<u64>,
11442    #[prost(uint32, optional, tag = "3")]
11443    pub m_lblk: ::core::option::Option<u32>,
11444    #[prost(uint32, optional, tag = "4")]
11445    pub m_len: ::core::option::Option<u32>,
11446    #[prost(uint32, optional, tag = "5")]
11447    pub u_lblk: ::core::option::Option<u32>,
11448    #[prost(uint32, optional, tag = "6")]
11449    pub u_len: ::core::option::Option<u32>,
11450    #[prost(uint64, optional, tag = "7")]
11451    pub u_pblk: ::core::option::Option<u64>,
11452    #[prost(uint32, optional, tag = "8")]
11453    pub i_lblk: ::core::option::Option<u32>,
11454    #[prost(uint32, optional, tag = "9")]
11455    pub i_len: ::core::option::Option<u32>,
11456    #[prost(uint64, optional, tag = "10")]
11457    pub i_pblk: ::core::option::Option<u64>,
11458}
11459#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11460pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
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(int32, optional, tag = "3")]
11466    pub flags: ::core::option::Option<i32>,
11467    #[prost(uint32, optional, tag = "4")]
11468    pub lblk: ::core::option::Option<u32>,
11469    #[prost(uint64, optional, tag = "5")]
11470    pub pblk: ::core::option::Option<u64>,
11471    #[prost(uint32, optional, tag = "6")]
11472    pub len: ::core::option::Option<u32>,
11473    #[prost(uint32, optional, tag = "7")]
11474    pub allocated: ::core::option::Option<u32>,
11475    #[prost(uint64, optional, tag = "8")]
11476    pub newblk: ::core::option::Option<u64>,
11477}
11478#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11479pub struct Ext4ExtInCacheFtraceEvent {
11480    #[prost(uint64, optional, tag = "1")]
11481    pub dev: ::core::option::Option<u64>,
11482    #[prost(uint64, optional, tag = "2")]
11483    pub ino: ::core::option::Option<u64>,
11484    #[prost(uint32, optional, tag = "3")]
11485    pub lblk: ::core::option::Option<u32>,
11486    #[prost(int32, optional, tag = "4")]
11487    pub ret: ::core::option::Option<i32>,
11488}
11489#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11490pub struct Ext4ExtLoadExtentFtraceEvent {
11491    #[prost(uint64, optional, tag = "1")]
11492    pub dev: ::core::option::Option<u64>,
11493    #[prost(uint64, optional, tag = "2")]
11494    pub ino: ::core::option::Option<u64>,
11495    #[prost(uint64, optional, tag = "3")]
11496    pub pblk: ::core::option::Option<u64>,
11497    #[prost(uint32, optional, tag = "4")]
11498    pub lblk: ::core::option::Option<u32>,
11499}
11500#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11501pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11502    #[prost(uint64, optional, tag = "1")]
11503    pub dev: ::core::option::Option<u64>,
11504    #[prost(uint64, optional, tag = "2")]
11505    pub ino: ::core::option::Option<u64>,
11506    #[prost(uint32, optional, tag = "3")]
11507    pub lblk: ::core::option::Option<u32>,
11508    #[prost(uint32, optional, tag = "4")]
11509    pub len: ::core::option::Option<u32>,
11510    #[prost(uint32, optional, tag = "5")]
11511    pub flags: ::core::option::Option<u32>,
11512}
11513#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11514pub struct Ext4ExtMapBlocksExitFtraceEvent {
11515    #[prost(uint64, optional, tag = "1")]
11516    pub dev: ::core::option::Option<u64>,
11517    #[prost(uint64, optional, tag = "2")]
11518    pub ino: ::core::option::Option<u64>,
11519    #[prost(uint32, optional, tag = "3")]
11520    pub flags: ::core::option::Option<u32>,
11521    #[prost(uint64, optional, tag = "4")]
11522    pub pblk: ::core::option::Option<u64>,
11523    #[prost(uint32, optional, tag = "5")]
11524    pub lblk: ::core::option::Option<u32>,
11525    #[prost(uint32, optional, tag = "6")]
11526    pub len: ::core::option::Option<u32>,
11527    #[prost(uint32, optional, tag = "7")]
11528    pub mflags: ::core::option::Option<u32>,
11529    #[prost(int32, optional, tag = "8")]
11530    pub ret: ::core::option::Option<i32>,
11531}
11532#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11533pub struct Ext4ExtPutInCacheFtraceEvent {
11534    #[prost(uint64, optional, tag = "1")]
11535    pub dev: ::core::option::Option<u64>,
11536    #[prost(uint64, optional, tag = "2")]
11537    pub ino: ::core::option::Option<u64>,
11538    #[prost(uint32, optional, tag = "3")]
11539    pub lblk: ::core::option::Option<u32>,
11540    #[prost(uint32, optional, tag = "4")]
11541    pub len: ::core::option::Option<u32>,
11542    #[prost(uint64, optional, tag = "5")]
11543    pub start: ::core::option::Option<u64>,
11544}
11545#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11546pub struct Ext4ExtRemoveSpaceFtraceEvent {
11547    #[prost(uint64, optional, tag = "1")]
11548    pub dev: ::core::option::Option<u64>,
11549    #[prost(uint64, optional, tag = "2")]
11550    pub ino: ::core::option::Option<u64>,
11551    #[prost(uint32, optional, tag = "3")]
11552    pub start: ::core::option::Option<u32>,
11553    #[prost(uint32, optional, tag = "4")]
11554    pub end: ::core::option::Option<u32>,
11555    #[prost(int32, optional, tag = "5")]
11556    pub depth: ::core::option::Option<i32>,
11557}
11558#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11559pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11560    #[prost(uint64, optional, tag = "1")]
11561    pub dev: ::core::option::Option<u64>,
11562    #[prost(uint64, optional, tag = "2")]
11563    pub ino: ::core::option::Option<u64>,
11564    #[prost(uint32, optional, tag = "3")]
11565    pub start: ::core::option::Option<u32>,
11566    #[prost(uint32, optional, tag = "4")]
11567    pub end: ::core::option::Option<u32>,
11568    #[prost(int32, optional, tag = "5")]
11569    pub depth: ::core::option::Option<i32>,
11570    #[prost(int64, optional, tag = "6")]
11571    pub partial: ::core::option::Option<i64>,
11572    #[prost(uint32, optional, tag = "7")]
11573    pub eh_entries: ::core::option::Option<u32>,
11574    #[prost(uint32, optional, tag = "8")]
11575    pub pc_lblk: ::core::option::Option<u32>,
11576    #[prost(uint64, optional, tag = "9")]
11577    pub pc_pclu: ::core::option::Option<u64>,
11578    #[prost(int32, optional, tag = "10")]
11579    pub pc_state: ::core::option::Option<i32>,
11580}
11581#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11582pub struct Ext4ExtRmIdxFtraceEvent {
11583    #[prost(uint64, optional, tag = "1")]
11584    pub dev: ::core::option::Option<u64>,
11585    #[prost(uint64, optional, tag = "2")]
11586    pub ino: ::core::option::Option<u64>,
11587    #[prost(uint64, optional, tag = "3")]
11588    pub pblk: ::core::option::Option<u64>,
11589}
11590#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11591pub struct Ext4ExtRmLeafFtraceEvent {
11592    #[prost(uint64, optional, tag = "1")]
11593    pub dev: ::core::option::Option<u64>,
11594    #[prost(uint64, optional, tag = "2")]
11595    pub ino: ::core::option::Option<u64>,
11596    #[prost(int64, optional, tag = "3")]
11597    pub partial: ::core::option::Option<i64>,
11598    #[prost(uint32, optional, tag = "4")]
11599    pub start: ::core::option::Option<u32>,
11600    #[prost(uint32, optional, tag = "5")]
11601    pub ee_lblk: ::core::option::Option<u32>,
11602    #[prost(uint64, optional, tag = "6")]
11603    pub ee_pblk: ::core::option::Option<u64>,
11604    #[prost(int32, optional, tag = "7")]
11605    pub ee_len: ::core::option::Option<i32>,
11606    #[prost(uint32, optional, tag = "8")]
11607    pub pc_lblk: ::core::option::Option<u32>,
11608    #[prost(uint64, optional, tag = "9")]
11609    pub pc_pclu: ::core::option::Option<u64>,
11610    #[prost(int32, optional, tag = "10")]
11611    pub pc_state: ::core::option::Option<i32>,
11612}
11613#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11614pub struct Ext4ExtShowExtentFtraceEvent {
11615    #[prost(uint64, optional, tag = "1")]
11616    pub dev: ::core::option::Option<u64>,
11617    #[prost(uint64, optional, tag = "2")]
11618    pub ino: ::core::option::Option<u64>,
11619    #[prost(uint64, optional, tag = "3")]
11620    pub pblk: ::core::option::Option<u64>,
11621    #[prost(uint32, optional, tag = "4")]
11622    pub lblk: ::core::option::Option<u32>,
11623    #[prost(uint32, optional, tag = "5")]
11624    pub len: ::core::option::Option<u32>,
11625}
11626#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11627pub struct Ext4FallocateEnterFtraceEvent {
11628    #[prost(uint64, optional, tag = "1")]
11629    pub dev: ::core::option::Option<u64>,
11630    #[prost(uint64, optional, tag = "2")]
11631    pub ino: ::core::option::Option<u64>,
11632    #[prost(int64, optional, tag = "3")]
11633    pub offset: ::core::option::Option<i64>,
11634    #[prost(int64, optional, tag = "4")]
11635    pub len: ::core::option::Option<i64>,
11636    #[prost(int32, optional, tag = "5")]
11637    pub mode: ::core::option::Option<i32>,
11638    #[prost(int64, optional, tag = "6")]
11639    pub pos: ::core::option::Option<i64>,
11640}
11641#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11642pub struct Ext4FallocateExitFtraceEvent {
11643    #[prost(uint64, optional, tag = "1")]
11644    pub dev: ::core::option::Option<u64>,
11645    #[prost(uint64, optional, tag = "2")]
11646    pub ino: ::core::option::Option<u64>,
11647    #[prost(int64, optional, tag = "3")]
11648    pub pos: ::core::option::Option<i64>,
11649    #[prost(uint32, optional, tag = "4")]
11650    pub blocks: ::core::option::Option<u32>,
11651    #[prost(int32, optional, tag = "5")]
11652    pub ret: ::core::option::Option<i32>,
11653}
11654#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11655pub struct Ext4FindDelallocRangeFtraceEvent {
11656    #[prost(uint64, optional, tag = "1")]
11657    pub dev: ::core::option::Option<u64>,
11658    #[prost(uint64, optional, tag = "2")]
11659    pub ino: ::core::option::Option<u64>,
11660    #[prost(uint32, optional, tag = "3")]
11661    pub from: ::core::option::Option<u32>,
11662    #[prost(uint32, optional, tag = "4")]
11663    pub to: ::core::option::Option<u32>,
11664    #[prost(int32, optional, tag = "5")]
11665    pub reverse: ::core::option::Option<i32>,
11666    #[prost(int32, optional, tag = "6")]
11667    pub found: ::core::option::Option<i32>,
11668    #[prost(uint32, optional, tag = "7")]
11669    pub found_blk: ::core::option::Option<u32>,
11670}
11671#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11672pub struct Ext4ForgetFtraceEvent {
11673    #[prost(uint64, optional, tag = "1")]
11674    pub dev: ::core::option::Option<u64>,
11675    #[prost(uint64, optional, tag = "2")]
11676    pub ino: ::core::option::Option<u64>,
11677    #[prost(uint64, optional, tag = "3")]
11678    pub block: ::core::option::Option<u64>,
11679    #[prost(int32, optional, tag = "4")]
11680    pub is_metadata: ::core::option::Option<i32>,
11681    #[prost(uint32, optional, tag = "5")]
11682    pub mode: ::core::option::Option<u32>,
11683}
11684#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11685pub struct Ext4FreeBlocksFtraceEvent {
11686    #[prost(uint64, optional, tag = "1")]
11687    pub dev: ::core::option::Option<u64>,
11688    #[prost(uint64, optional, tag = "2")]
11689    pub ino: ::core::option::Option<u64>,
11690    #[prost(uint64, optional, tag = "3")]
11691    pub block: ::core::option::Option<u64>,
11692    #[prost(uint64, optional, tag = "4")]
11693    pub count: ::core::option::Option<u64>,
11694    #[prost(int32, optional, tag = "5")]
11695    pub flags: ::core::option::Option<i32>,
11696    #[prost(uint32, optional, tag = "6")]
11697    pub mode: ::core::option::Option<u32>,
11698}
11699#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11700pub struct Ext4FreeInodeFtraceEvent {
11701    #[prost(uint64, optional, tag = "1")]
11702    pub dev: ::core::option::Option<u64>,
11703    #[prost(uint64, optional, tag = "2")]
11704    pub ino: ::core::option::Option<u64>,
11705    #[prost(uint32, optional, tag = "3")]
11706    pub uid: ::core::option::Option<u32>,
11707    #[prost(uint32, optional, tag = "4")]
11708    pub gid: ::core::option::Option<u32>,
11709    #[prost(uint64, optional, tag = "5")]
11710    pub blocks: ::core::option::Option<u64>,
11711    #[prost(uint32, optional, tag = "6")]
11712    pub mode: ::core::option::Option<u32>,
11713}
11714#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11715pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11716    #[prost(uint64, optional, tag = "1")]
11717    pub dev: ::core::option::Option<u64>,
11718    #[prost(uint32, optional, tag = "2")]
11719    pub flags: ::core::option::Option<u32>,
11720    #[prost(uint32, optional, tag = "3")]
11721    pub lblk: ::core::option::Option<u32>,
11722    #[prost(uint64, optional, tag = "4")]
11723    pub pblk: ::core::option::Option<u64>,
11724    #[prost(uint32, optional, tag = "5")]
11725    pub len: ::core::option::Option<u32>,
11726    #[prost(int32, optional, tag = "6")]
11727    pub ret: ::core::option::Option<i32>,
11728}
11729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11730pub struct Ext4GetReservedClusterAllocFtraceEvent {
11731    #[prost(uint64, optional, tag = "1")]
11732    pub dev: ::core::option::Option<u64>,
11733    #[prost(uint64, optional, tag = "2")]
11734    pub ino: ::core::option::Option<u64>,
11735    #[prost(uint32, optional, tag = "3")]
11736    pub lblk: ::core::option::Option<u32>,
11737    #[prost(uint32, optional, tag = "4")]
11738    pub len: ::core::option::Option<u32>,
11739}
11740#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11741pub struct Ext4IndMapBlocksEnterFtraceEvent {
11742    #[prost(uint64, optional, tag = "1")]
11743    pub dev: ::core::option::Option<u64>,
11744    #[prost(uint64, optional, tag = "2")]
11745    pub ino: ::core::option::Option<u64>,
11746    #[prost(uint32, optional, tag = "3")]
11747    pub lblk: ::core::option::Option<u32>,
11748    #[prost(uint32, optional, tag = "4")]
11749    pub len: ::core::option::Option<u32>,
11750    #[prost(uint32, optional, tag = "5")]
11751    pub flags: ::core::option::Option<u32>,
11752}
11753#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11754pub struct Ext4IndMapBlocksExitFtraceEvent {
11755    #[prost(uint64, optional, tag = "1")]
11756    pub dev: ::core::option::Option<u64>,
11757    #[prost(uint64, optional, tag = "2")]
11758    pub ino: ::core::option::Option<u64>,
11759    #[prost(uint32, optional, tag = "3")]
11760    pub flags: ::core::option::Option<u32>,
11761    #[prost(uint64, optional, tag = "4")]
11762    pub pblk: ::core::option::Option<u64>,
11763    #[prost(uint32, optional, tag = "5")]
11764    pub lblk: ::core::option::Option<u32>,
11765    #[prost(uint32, optional, tag = "6")]
11766    pub len: ::core::option::Option<u32>,
11767    #[prost(uint32, optional, tag = "7")]
11768    pub mflags: ::core::option::Option<u32>,
11769    #[prost(int32, optional, tag = "8")]
11770    pub ret: ::core::option::Option<i32>,
11771}
11772#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11773pub struct Ext4InsertRangeFtraceEvent {
11774    #[prost(uint64, optional, tag = "1")]
11775    pub dev: ::core::option::Option<u64>,
11776    #[prost(uint64, optional, tag = "2")]
11777    pub ino: ::core::option::Option<u64>,
11778    #[prost(int64, optional, tag = "3")]
11779    pub offset: ::core::option::Option<i64>,
11780    #[prost(int64, optional, tag = "4")]
11781    pub len: ::core::option::Option<i64>,
11782}
11783#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11784pub struct Ext4InvalidatepageFtraceEvent {
11785    #[prost(uint64, optional, tag = "1")]
11786    pub dev: ::core::option::Option<u64>,
11787    #[prost(uint64, optional, tag = "2")]
11788    pub ino: ::core::option::Option<u64>,
11789    #[prost(uint64, optional, tag = "3")]
11790    pub index: ::core::option::Option<u64>,
11791    #[prost(uint64, optional, tag = "4")]
11792    pub offset: ::core::option::Option<u64>,
11793    #[prost(uint32, optional, tag = "5")]
11794    pub length: ::core::option::Option<u32>,
11795}
11796#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11797pub struct Ext4JournalStartFtraceEvent {
11798    #[prost(uint64, optional, tag = "1")]
11799    pub dev: ::core::option::Option<u64>,
11800    #[prost(uint64, optional, tag = "2")]
11801    pub ip: ::core::option::Option<u64>,
11802    #[prost(int32, optional, tag = "3")]
11803    pub blocks: ::core::option::Option<i32>,
11804    #[prost(int32, optional, tag = "4")]
11805    pub rsv_blocks: ::core::option::Option<i32>,
11806    #[prost(int32, optional, tag = "5")]
11807    pub nblocks: ::core::option::Option<i32>,
11808    #[prost(int32, optional, tag = "6")]
11809    pub revoke_creds: ::core::option::Option<i32>,
11810}
11811#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11812pub struct Ext4JournalStartReservedFtraceEvent {
11813    #[prost(uint64, optional, tag = "1")]
11814    pub dev: ::core::option::Option<u64>,
11815    #[prost(uint64, optional, tag = "2")]
11816    pub ip: ::core::option::Option<u64>,
11817    #[prost(int32, optional, tag = "3")]
11818    pub blocks: ::core::option::Option<i32>,
11819}
11820#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11821pub struct Ext4JournalledInvalidatepageFtraceEvent {
11822    #[prost(uint64, optional, tag = "1")]
11823    pub dev: ::core::option::Option<u64>,
11824    #[prost(uint64, optional, tag = "2")]
11825    pub ino: ::core::option::Option<u64>,
11826    #[prost(uint64, optional, tag = "3")]
11827    pub index: ::core::option::Option<u64>,
11828    #[prost(uint64, optional, tag = "4")]
11829    pub offset: ::core::option::Option<u64>,
11830    #[prost(uint32, optional, tag = "5")]
11831    pub length: ::core::option::Option<u32>,
11832}
11833#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11834pub struct Ext4JournalledWriteEndFtraceEvent {
11835    #[prost(uint64, optional, tag = "1")]
11836    pub dev: ::core::option::Option<u64>,
11837    #[prost(uint64, optional, tag = "2")]
11838    pub ino: ::core::option::Option<u64>,
11839    #[prost(int64, optional, tag = "3")]
11840    pub pos: ::core::option::Option<i64>,
11841    #[prost(uint32, optional, tag = "4")]
11842    pub len: ::core::option::Option<u32>,
11843    #[prost(uint32, optional, tag = "5")]
11844    pub copied: ::core::option::Option<u32>,
11845}
11846#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11847pub struct Ext4LoadInodeFtraceEvent {
11848    #[prost(uint64, optional, tag = "1")]
11849    pub dev: ::core::option::Option<u64>,
11850    #[prost(uint64, optional, tag = "2")]
11851    pub ino: ::core::option::Option<u64>,
11852}
11853#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11854pub struct Ext4LoadInodeBitmapFtraceEvent {
11855    #[prost(uint64, optional, tag = "1")]
11856    pub dev: ::core::option::Option<u64>,
11857    #[prost(uint32, optional, tag = "2")]
11858    pub group: ::core::option::Option<u32>,
11859}
11860#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11861pub struct Ext4MarkInodeDirtyFtraceEvent {
11862    #[prost(uint64, optional, tag = "1")]
11863    pub dev: ::core::option::Option<u64>,
11864    #[prost(uint64, optional, tag = "2")]
11865    pub ino: ::core::option::Option<u64>,
11866    #[prost(uint64, optional, tag = "3")]
11867    pub ip: ::core::option::Option<u64>,
11868}
11869#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11870pub struct Ext4MbBitmapLoadFtraceEvent {
11871    #[prost(uint64, optional, tag = "1")]
11872    pub dev: ::core::option::Option<u64>,
11873    #[prost(uint32, optional, tag = "2")]
11874    pub group: ::core::option::Option<u32>,
11875}
11876#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11877pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11878    #[prost(uint64, optional, tag = "1")]
11879    pub dev: ::core::option::Option<u64>,
11880    #[prost(uint32, optional, tag = "2")]
11881    pub group: ::core::option::Option<u32>,
11882}
11883#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11884pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11885    #[prost(uint64, optional, tag = "1")]
11886    pub dev: ::core::option::Option<u64>,
11887    #[prost(int32, optional, tag = "2")]
11888    pub needed: ::core::option::Option<i32>,
11889}
11890#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11891pub struct Ext4MbNewGroupPaFtraceEvent {
11892    #[prost(uint64, optional, tag = "1")]
11893    pub dev: ::core::option::Option<u64>,
11894    #[prost(uint64, optional, tag = "2")]
11895    pub ino: ::core::option::Option<u64>,
11896    #[prost(uint64, optional, tag = "3")]
11897    pub pa_pstart: ::core::option::Option<u64>,
11898    #[prost(uint64, optional, tag = "4")]
11899    pub pa_lstart: ::core::option::Option<u64>,
11900    #[prost(uint32, optional, tag = "5")]
11901    pub pa_len: ::core::option::Option<u32>,
11902}
11903#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11904pub struct Ext4MbNewInodePaFtraceEvent {
11905    #[prost(uint64, optional, tag = "1")]
11906    pub dev: ::core::option::Option<u64>,
11907    #[prost(uint64, optional, tag = "2")]
11908    pub ino: ::core::option::Option<u64>,
11909    #[prost(uint64, optional, tag = "3")]
11910    pub pa_pstart: ::core::option::Option<u64>,
11911    #[prost(uint64, optional, tag = "4")]
11912    pub pa_lstart: ::core::option::Option<u64>,
11913    #[prost(uint32, optional, tag = "5")]
11914    pub pa_len: ::core::option::Option<u32>,
11915}
11916#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11917pub struct Ext4MbReleaseGroupPaFtraceEvent {
11918    #[prost(uint64, optional, tag = "1")]
11919    pub dev: ::core::option::Option<u64>,
11920    #[prost(uint64, optional, tag = "2")]
11921    pub pa_pstart: ::core::option::Option<u64>,
11922    #[prost(uint32, optional, tag = "3")]
11923    pub pa_len: ::core::option::Option<u32>,
11924}
11925#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11926pub struct Ext4MbReleaseInodePaFtraceEvent {
11927    #[prost(uint64, optional, tag = "1")]
11928    pub dev: ::core::option::Option<u64>,
11929    #[prost(uint64, optional, tag = "2")]
11930    pub ino: ::core::option::Option<u64>,
11931    #[prost(uint64, optional, tag = "3")]
11932    pub block: ::core::option::Option<u64>,
11933    #[prost(uint32, optional, tag = "4")]
11934    pub count: ::core::option::Option<u32>,
11935}
11936#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11937pub struct Ext4MballocAllocFtraceEvent {
11938    #[prost(uint64, optional, tag = "1")]
11939    pub dev: ::core::option::Option<u64>,
11940    #[prost(uint64, optional, tag = "2")]
11941    pub ino: ::core::option::Option<u64>,
11942    #[prost(uint32, optional, tag = "3")]
11943    pub orig_logical: ::core::option::Option<u32>,
11944    #[prost(int32, optional, tag = "4")]
11945    pub orig_start: ::core::option::Option<i32>,
11946    #[prost(uint32, optional, tag = "5")]
11947    pub orig_group: ::core::option::Option<u32>,
11948    #[prost(int32, optional, tag = "6")]
11949    pub orig_len: ::core::option::Option<i32>,
11950    #[prost(uint32, optional, tag = "7")]
11951    pub goal_logical: ::core::option::Option<u32>,
11952    #[prost(int32, optional, tag = "8")]
11953    pub goal_start: ::core::option::Option<i32>,
11954    #[prost(uint32, optional, tag = "9")]
11955    pub goal_group: ::core::option::Option<u32>,
11956    #[prost(int32, optional, tag = "10")]
11957    pub goal_len: ::core::option::Option<i32>,
11958    #[prost(uint32, optional, tag = "11")]
11959    pub result_logical: ::core::option::Option<u32>,
11960    #[prost(int32, optional, tag = "12")]
11961    pub result_start: ::core::option::Option<i32>,
11962    #[prost(uint32, optional, tag = "13")]
11963    pub result_group: ::core::option::Option<u32>,
11964    #[prost(int32, optional, tag = "14")]
11965    pub result_len: ::core::option::Option<i32>,
11966    #[prost(uint32, optional, tag = "15")]
11967    pub found: ::core::option::Option<u32>,
11968    #[prost(uint32, optional, tag = "16")]
11969    pub groups: ::core::option::Option<u32>,
11970    #[prost(uint32, optional, tag = "17")]
11971    pub buddy: ::core::option::Option<u32>,
11972    #[prost(uint32, optional, tag = "18")]
11973    pub flags: ::core::option::Option<u32>,
11974    #[prost(uint32, optional, tag = "19")]
11975    pub tail: ::core::option::Option<u32>,
11976    #[prost(uint32, optional, tag = "20")]
11977    pub cr: ::core::option::Option<u32>,
11978}
11979#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11980pub struct Ext4MballocDiscardFtraceEvent {
11981    #[prost(uint64, optional, tag = "1")]
11982    pub dev: ::core::option::Option<u64>,
11983    #[prost(uint64, optional, tag = "2")]
11984    pub ino: ::core::option::Option<u64>,
11985    #[prost(int32, optional, tag = "3")]
11986    pub result_start: ::core::option::Option<i32>,
11987    #[prost(uint32, optional, tag = "4")]
11988    pub result_group: ::core::option::Option<u32>,
11989    #[prost(int32, optional, tag = "5")]
11990    pub result_len: ::core::option::Option<i32>,
11991}
11992#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11993pub struct Ext4MballocFreeFtraceEvent {
11994    #[prost(uint64, optional, tag = "1")]
11995    pub dev: ::core::option::Option<u64>,
11996    #[prost(uint64, optional, tag = "2")]
11997    pub ino: ::core::option::Option<u64>,
11998    #[prost(int32, optional, tag = "3")]
11999    pub result_start: ::core::option::Option<i32>,
12000    #[prost(uint32, optional, tag = "4")]
12001    pub result_group: ::core::option::Option<u32>,
12002    #[prost(int32, optional, tag = "5")]
12003    pub result_len: ::core::option::Option<i32>,
12004}
12005#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12006pub struct Ext4MballocPreallocFtraceEvent {
12007    #[prost(uint64, optional, tag = "1")]
12008    pub dev: ::core::option::Option<u64>,
12009    #[prost(uint64, optional, tag = "2")]
12010    pub ino: ::core::option::Option<u64>,
12011    #[prost(uint32, optional, tag = "3")]
12012    pub orig_logical: ::core::option::Option<u32>,
12013    #[prost(int32, optional, tag = "4")]
12014    pub orig_start: ::core::option::Option<i32>,
12015    #[prost(uint32, optional, tag = "5")]
12016    pub orig_group: ::core::option::Option<u32>,
12017    #[prost(int32, optional, tag = "6")]
12018    pub orig_len: ::core::option::Option<i32>,
12019    #[prost(uint32, optional, tag = "7")]
12020    pub result_logical: ::core::option::Option<u32>,
12021    #[prost(int32, optional, tag = "8")]
12022    pub result_start: ::core::option::Option<i32>,
12023    #[prost(uint32, optional, tag = "9")]
12024    pub result_group: ::core::option::Option<u32>,
12025    #[prost(int32, optional, tag = "10")]
12026    pub result_len: ::core::option::Option<i32>,
12027}
12028#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12029pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12030    #[prost(uint64, optional, tag = "1")]
12031    pub dev: ::core::option::Option<u64>,
12032    #[prost(uint64, optional, tag = "2")]
12033    pub ino: ::core::option::Option<u64>,
12034    #[prost(uint64, optional, tag = "3")]
12035    pub orig_ino: ::core::option::Option<u64>,
12036    #[prost(uint32, optional, tag = "4")]
12037    pub uid: ::core::option::Option<u32>,
12038    #[prost(uint32, optional, tag = "5")]
12039    pub gid: ::core::option::Option<u32>,
12040    #[prost(uint32, optional, tag = "6")]
12041    pub mode: ::core::option::Option<u32>,
12042}
12043#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12044pub struct Ext4PunchHoleFtraceEvent {
12045    #[prost(uint64, optional, tag = "1")]
12046    pub dev: ::core::option::Option<u64>,
12047    #[prost(uint64, optional, tag = "2")]
12048    pub ino: ::core::option::Option<u64>,
12049    #[prost(int64, optional, tag = "3")]
12050    pub offset: ::core::option::Option<i64>,
12051    #[prost(int64, optional, tag = "4")]
12052    pub len: ::core::option::Option<i64>,
12053    #[prost(int32, optional, tag = "5")]
12054    pub mode: ::core::option::Option<i32>,
12055}
12056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12057pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12058    #[prost(uint64, optional, tag = "1")]
12059    pub dev: ::core::option::Option<u64>,
12060    #[prost(uint32, optional, tag = "2")]
12061    pub group: ::core::option::Option<u32>,
12062    #[prost(uint32, optional, tag = "3")]
12063    pub prefetch: ::core::option::Option<u32>,
12064}
12065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12066pub struct Ext4ReadpageFtraceEvent {
12067    #[prost(uint64, optional, tag = "1")]
12068    pub dev: ::core::option::Option<u64>,
12069    #[prost(uint64, optional, tag = "2")]
12070    pub ino: ::core::option::Option<u64>,
12071    #[prost(uint64, optional, tag = "3")]
12072    pub index: ::core::option::Option<u64>,
12073}
12074#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12075pub struct Ext4ReleasepageFtraceEvent {
12076    #[prost(uint64, optional, tag = "1")]
12077    pub dev: ::core::option::Option<u64>,
12078    #[prost(uint64, optional, tag = "2")]
12079    pub ino: ::core::option::Option<u64>,
12080    #[prost(uint64, optional, tag = "3")]
12081    pub index: ::core::option::Option<u64>,
12082}
12083#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12084pub struct Ext4RemoveBlocksFtraceEvent {
12085    #[prost(uint64, optional, tag = "1")]
12086    pub dev: ::core::option::Option<u64>,
12087    #[prost(uint64, optional, tag = "2")]
12088    pub ino: ::core::option::Option<u64>,
12089    #[prost(uint32, optional, tag = "3")]
12090    pub from: ::core::option::Option<u32>,
12091    #[prost(uint32, optional, tag = "4")]
12092    pub to: ::core::option::Option<u32>,
12093    #[prost(int64, optional, tag = "5")]
12094    pub partial: ::core::option::Option<i64>,
12095    #[prost(uint64, optional, tag = "6")]
12096    pub ee_pblk: ::core::option::Option<u64>,
12097    #[prost(uint32, optional, tag = "7")]
12098    pub ee_lblk: ::core::option::Option<u32>,
12099    #[prost(uint32, optional, tag = "8")]
12100    pub ee_len: ::core::option::Option<u32>,
12101    #[prost(uint32, optional, tag = "9")]
12102    pub pc_lblk: ::core::option::Option<u32>,
12103    #[prost(uint64, optional, tag = "10")]
12104    pub pc_pclu: ::core::option::Option<u64>,
12105    #[prost(int32, optional, tag = "11")]
12106    pub pc_state: ::core::option::Option<i32>,
12107}
12108#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12109pub struct Ext4RequestBlocksFtraceEvent {
12110    #[prost(uint64, optional, tag = "1")]
12111    pub dev: ::core::option::Option<u64>,
12112    #[prost(uint64, optional, tag = "2")]
12113    pub ino: ::core::option::Option<u64>,
12114    #[prost(uint32, optional, tag = "3")]
12115    pub len: ::core::option::Option<u32>,
12116    #[prost(uint32, optional, tag = "4")]
12117    pub logical: ::core::option::Option<u32>,
12118    #[prost(uint32, optional, tag = "5")]
12119    pub lleft: ::core::option::Option<u32>,
12120    #[prost(uint32, optional, tag = "6")]
12121    pub lright: ::core::option::Option<u32>,
12122    #[prost(uint64, optional, tag = "7")]
12123    pub goal: ::core::option::Option<u64>,
12124    #[prost(uint64, optional, tag = "8")]
12125    pub pleft: ::core::option::Option<u64>,
12126    #[prost(uint64, optional, tag = "9")]
12127    pub pright: ::core::option::Option<u64>,
12128    #[prost(uint32, optional, tag = "10")]
12129    pub flags: ::core::option::Option<u32>,
12130}
12131#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12132pub struct Ext4RequestInodeFtraceEvent {
12133    #[prost(uint64, optional, tag = "1")]
12134    pub dev: ::core::option::Option<u64>,
12135    #[prost(uint64, optional, tag = "2")]
12136    pub dir: ::core::option::Option<u64>,
12137    #[prost(uint32, optional, tag = "3")]
12138    pub mode: ::core::option::Option<u32>,
12139}
12140#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12141pub struct Ext4SyncFsFtraceEvent {
12142    #[prost(uint64, optional, tag = "1")]
12143    pub dev: ::core::option::Option<u64>,
12144    #[prost(int32, optional, tag = "2")]
12145    pub wait: ::core::option::Option<i32>,
12146}
12147#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12148pub struct Ext4TrimAllFreeFtraceEvent {
12149    #[prost(int32, optional, tag = "1")]
12150    pub dev_major: ::core::option::Option<i32>,
12151    #[prost(int32, optional, tag = "2")]
12152    pub dev_minor: ::core::option::Option<i32>,
12153    #[prost(uint32, optional, tag = "3")]
12154    pub group: ::core::option::Option<u32>,
12155    #[prost(int32, optional, tag = "4")]
12156    pub start: ::core::option::Option<i32>,
12157    #[prost(int32, optional, tag = "5")]
12158    pub len: ::core::option::Option<i32>,
12159}
12160#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12161pub struct Ext4TrimExtentFtraceEvent {
12162    #[prost(int32, optional, tag = "1")]
12163    pub dev_major: ::core::option::Option<i32>,
12164    #[prost(int32, optional, tag = "2")]
12165    pub dev_minor: ::core::option::Option<i32>,
12166    #[prost(uint32, optional, tag = "3")]
12167    pub group: ::core::option::Option<u32>,
12168    #[prost(int32, optional, tag = "4")]
12169    pub start: ::core::option::Option<i32>,
12170    #[prost(int32, optional, tag = "5")]
12171    pub len: ::core::option::Option<i32>,
12172}
12173#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12174pub struct Ext4TruncateEnterFtraceEvent {
12175    #[prost(uint64, optional, tag = "1")]
12176    pub dev: ::core::option::Option<u64>,
12177    #[prost(uint64, optional, tag = "2")]
12178    pub ino: ::core::option::Option<u64>,
12179    #[prost(uint64, optional, tag = "3")]
12180    pub blocks: ::core::option::Option<u64>,
12181}
12182#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12183pub struct Ext4TruncateExitFtraceEvent {
12184    #[prost(uint64, optional, tag = "1")]
12185    pub dev: ::core::option::Option<u64>,
12186    #[prost(uint64, optional, tag = "2")]
12187    pub ino: ::core::option::Option<u64>,
12188    #[prost(uint64, optional, tag = "3")]
12189    pub blocks: ::core::option::Option<u64>,
12190}
12191#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12192pub struct Ext4UnlinkEnterFtraceEvent {
12193    #[prost(uint64, optional, tag = "1")]
12194    pub dev: ::core::option::Option<u64>,
12195    #[prost(uint64, optional, tag = "2")]
12196    pub ino: ::core::option::Option<u64>,
12197    #[prost(uint64, optional, tag = "3")]
12198    pub parent: ::core::option::Option<u64>,
12199    #[prost(int64, optional, tag = "4")]
12200    pub size: ::core::option::Option<i64>,
12201}
12202#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12203pub struct Ext4UnlinkExitFtraceEvent {
12204    #[prost(uint64, optional, tag = "1")]
12205    pub dev: ::core::option::Option<u64>,
12206    #[prost(uint64, optional, tag = "2")]
12207    pub ino: ::core::option::Option<u64>,
12208    #[prost(int32, optional, tag = "3")]
12209    pub ret: ::core::option::Option<i32>,
12210}
12211#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12212pub struct Ext4WriteBeginFtraceEvent {
12213    #[prost(uint64, optional, tag = "1")]
12214    pub dev: ::core::option::Option<u64>,
12215    #[prost(uint64, optional, tag = "2")]
12216    pub ino: ::core::option::Option<u64>,
12217    #[prost(int64, optional, tag = "3")]
12218    pub pos: ::core::option::Option<i64>,
12219    #[prost(uint32, optional, tag = "4")]
12220    pub len: ::core::option::Option<u32>,
12221    #[prost(uint32, optional, tag = "5")]
12222    pub flags: ::core::option::Option<u32>,
12223}
12224#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12225pub struct Ext4WriteEndFtraceEvent {
12226    #[prost(uint64, optional, tag = "1")]
12227    pub dev: ::core::option::Option<u64>,
12228    #[prost(uint64, optional, tag = "2")]
12229    pub ino: ::core::option::Option<u64>,
12230    #[prost(int64, optional, tag = "3")]
12231    pub pos: ::core::option::Option<i64>,
12232    #[prost(uint32, optional, tag = "4")]
12233    pub len: ::core::option::Option<u32>,
12234    #[prost(uint32, optional, tag = "5")]
12235    pub copied: ::core::option::Option<u32>,
12236}
12237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12238pub struct Ext4WritepageFtraceEvent {
12239    #[prost(uint64, optional, tag = "1")]
12240    pub dev: ::core::option::Option<u64>,
12241    #[prost(uint64, optional, tag = "2")]
12242    pub ino: ::core::option::Option<u64>,
12243    #[prost(uint64, optional, tag = "3")]
12244    pub index: ::core::option::Option<u64>,
12245}
12246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12247pub struct Ext4WritepagesFtraceEvent {
12248    #[prost(uint64, optional, tag = "1")]
12249    pub dev: ::core::option::Option<u64>,
12250    #[prost(uint64, optional, tag = "2")]
12251    pub ino: ::core::option::Option<u64>,
12252    #[prost(int64, optional, tag = "3")]
12253    pub nr_to_write: ::core::option::Option<i64>,
12254    #[prost(int64, optional, tag = "4")]
12255    pub pages_skipped: ::core::option::Option<i64>,
12256    #[prost(int64, optional, tag = "5")]
12257    pub range_start: ::core::option::Option<i64>,
12258    #[prost(int64, optional, tag = "6")]
12259    pub range_end: ::core::option::Option<i64>,
12260    #[prost(uint64, optional, tag = "7")]
12261    pub writeback_index: ::core::option::Option<u64>,
12262    #[prost(int32, optional, tag = "8")]
12263    pub sync_mode: ::core::option::Option<i32>,
12264    #[prost(uint32, optional, tag = "9")]
12265    pub for_kupdate: ::core::option::Option<u32>,
12266    #[prost(uint32, optional, tag = "10")]
12267    pub range_cyclic: ::core::option::Option<u32>,
12268}
12269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12270pub struct Ext4WritepagesResultFtraceEvent {
12271    #[prost(uint64, optional, tag = "1")]
12272    pub dev: ::core::option::Option<u64>,
12273    #[prost(uint64, optional, tag = "2")]
12274    pub ino: ::core::option::Option<u64>,
12275    #[prost(int32, optional, tag = "3")]
12276    pub ret: ::core::option::Option<i32>,
12277    #[prost(int32, optional, tag = "4")]
12278    pub pages_written: ::core::option::Option<i32>,
12279    #[prost(int64, optional, tag = "5")]
12280    pub pages_skipped: ::core::option::Option<i64>,
12281    #[prost(uint64, optional, tag = "6")]
12282    pub writeback_index: ::core::option::Option<u64>,
12283    #[prost(int32, optional, tag = "7")]
12284    pub sync_mode: ::core::option::Option<i32>,
12285}
12286#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12287pub struct Ext4ZeroRangeFtraceEvent {
12288    #[prost(uint64, optional, tag = "1")]
12289    pub dev: ::core::option::Option<u64>,
12290    #[prost(uint64, optional, tag = "2")]
12291    pub ino: ::core::option::Option<u64>,
12292    #[prost(int64, optional, tag = "3")]
12293    pub offset: ::core::option::Option<i64>,
12294    #[prost(int64, optional, tag = "4")]
12295    pub len: ::core::option::Option<i64>,
12296    #[prost(int32, optional, tag = "5")]
12297    pub mode: ::core::option::Option<i32>,
12298}
12299#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12300pub struct F2fsDoSubmitBioFtraceEvent {
12301    #[prost(uint64, optional, tag = "1")]
12302    pub dev: ::core::option::Option<u64>,
12303    #[prost(int32, optional, tag = "2")]
12304    pub btype: ::core::option::Option<i32>,
12305    #[prost(uint32, optional, tag = "3")]
12306    pub sync: ::core::option::Option<u32>,
12307    #[prost(uint64, optional, tag = "4")]
12308    pub sector: ::core::option::Option<u64>,
12309    #[prost(uint32, optional, tag = "5")]
12310    pub size: ::core::option::Option<u32>,
12311}
12312#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12313pub struct F2fsEvictInodeFtraceEvent {
12314    #[prost(uint64, optional, tag = "1")]
12315    pub dev: ::core::option::Option<u64>,
12316    #[prost(uint64, optional, tag = "2")]
12317    pub ino: ::core::option::Option<u64>,
12318    #[prost(uint64, optional, tag = "3")]
12319    pub pino: ::core::option::Option<u64>,
12320    #[prost(uint32, optional, tag = "4")]
12321    pub mode: ::core::option::Option<u32>,
12322    #[prost(int64, optional, tag = "5")]
12323    pub size: ::core::option::Option<i64>,
12324    #[prost(uint32, optional, tag = "6")]
12325    pub nlink: ::core::option::Option<u32>,
12326    #[prost(uint64, optional, tag = "7")]
12327    pub blocks: ::core::option::Option<u64>,
12328    #[prost(uint32, optional, tag = "8")]
12329    pub advise: ::core::option::Option<u32>,
12330}
12331#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12332pub struct F2fsFallocateFtraceEvent {
12333    #[prost(uint64, optional, tag = "1")]
12334    pub dev: ::core::option::Option<u64>,
12335    #[prost(uint64, optional, tag = "2")]
12336    pub ino: ::core::option::Option<u64>,
12337    #[prost(int32, optional, tag = "3")]
12338    pub mode: ::core::option::Option<i32>,
12339    #[prost(int64, optional, tag = "4")]
12340    pub offset: ::core::option::Option<i64>,
12341    #[prost(int64, optional, tag = "5")]
12342    pub len: ::core::option::Option<i64>,
12343    #[prost(int64, optional, tag = "6")]
12344    pub size: ::core::option::Option<i64>,
12345    #[prost(uint64, optional, tag = "7")]
12346    pub blocks: ::core::option::Option<u64>,
12347    #[prost(int32, optional, tag = "8")]
12348    pub ret: ::core::option::Option<i32>,
12349}
12350#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12351pub struct F2fsGetDataBlockFtraceEvent {
12352    #[prost(uint64, optional, tag = "1")]
12353    pub dev: ::core::option::Option<u64>,
12354    #[prost(uint64, optional, tag = "2")]
12355    pub ino: ::core::option::Option<u64>,
12356    #[prost(uint64, optional, tag = "3")]
12357    pub iblock: ::core::option::Option<u64>,
12358    #[prost(uint64, optional, tag = "4")]
12359    pub bh_start: ::core::option::Option<u64>,
12360    #[prost(uint64, optional, tag = "5")]
12361    pub bh_size: ::core::option::Option<u64>,
12362    #[prost(int32, optional, tag = "6")]
12363    pub ret: ::core::option::Option<i32>,
12364}
12365#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12366pub struct F2fsGetVictimFtraceEvent {
12367    #[prost(uint64, optional, tag = "1")]
12368    pub dev: ::core::option::Option<u64>,
12369    #[prost(int32, optional, tag = "2")]
12370    pub r#type: ::core::option::Option<i32>,
12371    #[prost(int32, optional, tag = "3")]
12372    pub gc_type: ::core::option::Option<i32>,
12373    #[prost(int32, optional, tag = "4")]
12374    pub alloc_mode: ::core::option::Option<i32>,
12375    #[prost(int32, optional, tag = "5")]
12376    pub gc_mode: ::core::option::Option<i32>,
12377    #[prost(uint32, optional, tag = "6")]
12378    pub victim: ::core::option::Option<u32>,
12379    #[prost(uint32, optional, tag = "7")]
12380    pub ofs_unit: ::core::option::Option<u32>,
12381    #[prost(uint32, optional, tag = "8")]
12382    pub pre_victim: ::core::option::Option<u32>,
12383    #[prost(uint32, optional, tag = "9")]
12384    pub prefree: ::core::option::Option<u32>,
12385    #[prost(uint32, optional, tag = "10")]
12386    pub free: ::core::option::Option<u32>,
12387    #[prost(uint32, optional, tag = "11")]
12388    pub cost: ::core::option::Option<u32>,
12389}
12390#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12391pub struct F2fsIgetFtraceEvent {
12392    #[prost(uint64, optional, tag = "1")]
12393    pub dev: ::core::option::Option<u64>,
12394    #[prost(uint64, optional, tag = "2")]
12395    pub ino: ::core::option::Option<u64>,
12396    #[prost(uint64, optional, tag = "3")]
12397    pub pino: ::core::option::Option<u64>,
12398    #[prost(uint32, optional, tag = "4")]
12399    pub mode: ::core::option::Option<u32>,
12400    #[prost(int64, optional, tag = "5")]
12401    pub size: ::core::option::Option<i64>,
12402    #[prost(uint32, optional, tag = "6")]
12403    pub nlink: ::core::option::Option<u32>,
12404    #[prost(uint64, optional, tag = "7")]
12405    pub blocks: ::core::option::Option<u64>,
12406    #[prost(uint32, optional, tag = "8")]
12407    pub advise: ::core::option::Option<u32>,
12408}
12409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12410pub struct F2fsIgetExitFtraceEvent {
12411    #[prost(uint64, optional, tag = "1")]
12412    pub dev: ::core::option::Option<u64>,
12413    #[prost(uint64, optional, tag = "2")]
12414    pub ino: ::core::option::Option<u64>,
12415    #[prost(int32, optional, tag = "3")]
12416    pub ret: ::core::option::Option<i32>,
12417}
12418#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12419pub struct F2fsNewInodeFtraceEvent {
12420    #[prost(uint64, optional, tag = "1")]
12421    pub dev: ::core::option::Option<u64>,
12422    #[prost(uint64, optional, tag = "2")]
12423    pub ino: ::core::option::Option<u64>,
12424    #[prost(int32, optional, tag = "3")]
12425    pub ret: ::core::option::Option<i32>,
12426}
12427#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12428pub struct F2fsReadpageFtraceEvent {
12429    #[prost(uint64, optional, tag = "1")]
12430    pub dev: ::core::option::Option<u64>,
12431    #[prost(uint64, optional, tag = "2")]
12432    pub ino: ::core::option::Option<u64>,
12433    #[prost(uint64, optional, tag = "3")]
12434    pub index: ::core::option::Option<u64>,
12435    #[prost(uint64, optional, tag = "4")]
12436    pub blkaddr: ::core::option::Option<u64>,
12437    #[prost(int32, optional, tag = "5")]
12438    pub r#type: ::core::option::Option<i32>,
12439    #[prost(int32, optional, tag = "6")]
12440    pub dir: ::core::option::Option<i32>,
12441    #[prost(int32, optional, tag = "7")]
12442    pub dirty: ::core::option::Option<i32>,
12443    #[prost(int32, optional, tag = "8")]
12444    pub uptodate: ::core::option::Option<i32>,
12445}
12446#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12447pub struct F2fsReserveNewBlockFtraceEvent {
12448    #[prost(uint64, optional, tag = "1")]
12449    pub dev: ::core::option::Option<u64>,
12450    #[prost(uint32, optional, tag = "2")]
12451    pub nid: ::core::option::Option<u32>,
12452    #[prost(uint32, optional, tag = "3")]
12453    pub ofs_in_node: ::core::option::Option<u32>,
12454}
12455#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12456pub struct F2fsSetPageDirtyFtraceEvent {
12457    #[prost(uint64, optional, tag = "1")]
12458    pub dev: ::core::option::Option<u64>,
12459    #[prost(uint64, optional, tag = "2")]
12460    pub ino: ::core::option::Option<u64>,
12461    #[prost(int32, optional, tag = "3")]
12462    pub r#type: ::core::option::Option<i32>,
12463    #[prost(int32, optional, tag = "4")]
12464    pub dir: ::core::option::Option<i32>,
12465    #[prost(uint64, optional, tag = "5")]
12466    pub index: ::core::option::Option<u64>,
12467    #[prost(int32, optional, tag = "6")]
12468    pub dirty: ::core::option::Option<i32>,
12469    #[prost(int32, optional, tag = "7")]
12470    pub uptodate: ::core::option::Option<i32>,
12471}
12472#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12473pub struct F2fsSubmitWritePageFtraceEvent {
12474    #[prost(uint64, optional, tag = "1")]
12475    pub dev: ::core::option::Option<u64>,
12476    #[prost(uint64, optional, tag = "2")]
12477    pub ino: ::core::option::Option<u64>,
12478    #[prost(int32, optional, tag = "3")]
12479    pub r#type: ::core::option::Option<i32>,
12480    #[prost(uint64, optional, tag = "4")]
12481    pub index: ::core::option::Option<u64>,
12482    #[prost(uint32, optional, tag = "5")]
12483    pub block: ::core::option::Option<u32>,
12484}
12485#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12486pub struct F2fsSyncFileEnterFtraceEvent {
12487    #[prost(uint64, optional, tag = "1")]
12488    pub dev: ::core::option::Option<u64>,
12489    #[prost(uint64, optional, tag = "2")]
12490    pub ino: ::core::option::Option<u64>,
12491    #[prost(uint64, optional, tag = "3")]
12492    pub pino: ::core::option::Option<u64>,
12493    #[prost(uint32, optional, tag = "4")]
12494    pub mode: ::core::option::Option<u32>,
12495    #[prost(int64, optional, tag = "5")]
12496    pub size: ::core::option::Option<i64>,
12497    #[prost(uint32, optional, tag = "6")]
12498    pub nlink: ::core::option::Option<u32>,
12499    #[prost(uint64, optional, tag = "7")]
12500    pub blocks: ::core::option::Option<u64>,
12501    #[prost(uint32, optional, tag = "8")]
12502    pub advise: ::core::option::Option<u32>,
12503}
12504#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12505pub struct F2fsSyncFileExitFtraceEvent {
12506    #[prost(uint64, optional, tag = "1")]
12507    pub dev: ::core::option::Option<u64>,
12508    #[prost(uint64, optional, tag = "2")]
12509    pub ino: ::core::option::Option<u64>,
12510    #[prost(uint32, optional, tag = "3")]
12511    pub need_cp: ::core::option::Option<u32>,
12512    #[prost(int32, optional, tag = "4")]
12513    pub datasync: ::core::option::Option<i32>,
12514    #[prost(int32, optional, tag = "5")]
12515    pub ret: ::core::option::Option<i32>,
12516    #[prost(int32, optional, tag = "6")]
12517    pub cp_reason: ::core::option::Option<i32>,
12518}
12519#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12520pub struct F2fsSyncFsFtraceEvent {
12521    #[prost(uint64, optional, tag = "1")]
12522    pub dev: ::core::option::Option<u64>,
12523    #[prost(int32, optional, tag = "2")]
12524    pub dirty: ::core::option::Option<i32>,
12525    #[prost(int32, optional, tag = "3")]
12526    pub wait: ::core::option::Option<i32>,
12527}
12528#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12529pub struct F2fsTruncateFtraceEvent {
12530    #[prost(uint64, optional, tag = "1")]
12531    pub dev: ::core::option::Option<u64>,
12532    #[prost(uint64, optional, tag = "2")]
12533    pub ino: ::core::option::Option<u64>,
12534    #[prost(uint64, optional, tag = "3")]
12535    pub pino: ::core::option::Option<u64>,
12536    #[prost(uint32, optional, tag = "4")]
12537    pub mode: ::core::option::Option<u32>,
12538    #[prost(int64, optional, tag = "5")]
12539    pub size: ::core::option::Option<i64>,
12540    #[prost(uint32, optional, tag = "6")]
12541    pub nlink: ::core::option::Option<u32>,
12542    #[prost(uint64, optional, tag = "7")]
12543    pub blocks: ::core::option::Option<u64>,
12544    #[prost(uint32, optional, tag = "8")]
12545    pub advise: ::core::option::Option<u32>,
12546}
12547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12548pub struct F2fsTruncateBlocksEnterFtraceEvent {
12549    #[prost(uint64, optional, tag = "1")]
12550    pub dev: ::core::option::Option<u64>,
12551    #[prost(uint64, optional, tag = "2")]
12552    pub ino: ::core::option::Option<u64>,
12553    #[prost(int64, optional, tag = "3")]
12554    pub size: ::core::option::Option<i64>,
12555    #[prost(uint64, optional, tag = "4")]
12556    pub blocks: ::core::option::Option<u64>,
12557    #[prost(uint64, optional, tag = "5")]
12558    pub from: ::core::option::Option<u64>,
12559}
12560#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12561pub struct F2fsTruncateBlocksExitFtraceEvent {
12562    #[prost(uint64, optional, tag = "1")]
12563    pub dev: ::core::option::Option<u64>,
12564    #[prost(uint64, optional, tag = "2")]
12565    pub ino: ::core::option::Option<u64>,
12566    #[prost(int32, optional, tag = "3")]
12567    pub ret: ::core::option::Option<i32>,
12568}
12569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12570pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12571    #[prost(uint64, optional, tag = "1")]
12572    pub dev: ::core::option::Option<u64>,
12573    #[prost(uint64, optional, tag = "2")]
12574    pub ino: ::core::option::Option<u64>,
12575    #[prost(uint32, optional, tag = "3")]
12576    pub nid: ::core::option::Option<u32>,
12577    #[prost(uint32, optional, tag = "4")]
12578    pub ofs: ::core::option::Option<u32>,
12579    #[prost(int32, optional, tag = "5")]
12580    pub free: ::core::option::Option<i32>,
12581}
12582#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12583pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12584    #[prost(uint64, optional, tag = "1")]
12585    pub dev: ::core::option::Option<u64>,
12586    #[prost(uint64, optional, tag = "2")]
12587    pub ino: ::core::option::Option<u64>,
12588    #[prost(int64, optional, tag = "3")]
12589    pub size: ::core::option::Option<i64>,
12590    #[prost(uint64, optional, tag = "4")]
12591    pub blocks: ::core::option::Option<u64>,
12592    #[prost(uint64, optional, tag = "5")]
12593    pub from: ::core::option::Option<u64>,
12594}
12595#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12596pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12597    #[prost(uint64, optional, tag = "1")]
12598    pub dev: ::core::option::Option<u64>,
12599    #[prost(uint64, optional, tag = "2")]
12600    pub ino: ::core::option::Option<u64>,
12601    #[prost(int32, optional, tag = "3")]
12602    pub ret: ::core::option::Option<i32>,
12603}
12604#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12605pub struct F2fsTruncateNodeFtraceEvent {
12606    #[prost(uint64, optional, tag = "1")]
12607    pub dev: ::core::option::Option<u64>,
12608    #[prost(uint64, optional, tag = "2")]
12609    pub ino: ::core::option::Option<u64>,
12610    #[prost(uint32, optional, tag = "3")]
12611    pub nid: ::core::option::Option<u32>,
12612    #[prost(uint32, optional, tag = "4")]
12613    pub blk_addr: ::core::option::Option<u32>,
12614}
12615#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12616pub struct F2fsTruncateNodesEnterFtraceEvent {
12617    #[prost(uint64, optional, tag = "1")]
12618    pub dev: ::core::option::Option<u64>,
12619    #[prost(uint64, optional, tag = "2")]
12620    pub ino: ::core::option::Option<u64>,
12621    #[prost(uint32, optional, tag = "3")]
12622    pub nid: ::core::option::Option<u32>,
12623    #[prost(uint32, optional, tag = "4")]
12624    pub blk_addr: ::core::option::Option<u32>,
12625}
12626#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12627pub struct F2fsTruncateNodesExitFtraceEvent {
12628    #[prost(uint64, optional, tag = "1")]
12629    pub dev: ::core::option::Option<u64>,
12630    #[prost(uint64, optional, tag = "2")]
12631    pub ino: ::core::option::Option<u64>,
12632    #[prost(int32, optional, tag = "3")]
12633    pub ret: ::core::option::Option<i32>,
12634}
12635#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12636pub struct F2fsTruncatePartialNodesFtraceEvent {
12637    #[prost(uint64, optional, tag = "1")]
12638    pub dev: ::core::option::Option<u64>,
12639    #[prost(uint64, optional, tag = "2")]
12640    pub ino: ::core::option::Option<u64>,
12641    #[prost(uint32, optional, tag = "3")]
12642    pub nid: ::core::option::Option<u32>,
12643    #[prost(int32, optional, tag = "4")]
12644    pub depth: ::core::option::Option<i32>,
12645    #[prost(int32, optional, tag = "5")]
12646    pub err: ::core::option::Option<i32>,
12647}
12648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12649pub struct F2fsUnlinkEnterFtraceEvent {
12650    #[prost(uint64, optional, tag = "1")]
12651    pub dev: ::core::option::Option<u64>,
12652    #[prost(uint64, optional, tag = "2")]
12653    pub ino: ::core::option::Option<u64>,
12654    #[prost(int64, optional, tag = "3")]
12655    pub size: ::core::option::Option<i64>,
12656    #[prost(uint64, optional, tag = "4")]
12657    pub blocks: ::core::option::Option<u64>,
12658    #[prost(string, optional, tag = "5")]
12659    pub name: ::core::option::Option<::prost::alloc::string::String>,
12660}
12661#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12662pub struct F2fsUnlinkExitFtraceEvent {
12663    #[prost(uint64, optional, tag = "1")]
12664    pub dev: ::core::option::Option<u64>,
12665    #[prost(uint64, optional, tag = "2")]
12666    pub ino: ::core::option::Option<u64>,
12667    #[prost(int32, optional, tag = "3")]
12668    pub ret: ::core::option::Option<i32>,
12669}
12670#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12671pub struct F2fsVmPageMkwriteFtraceEvent {
12672    #[prost(uint64, optional, tag = "1")]
12673    pub dev: ::core::option::Option<u64>,
12674    #[prost(uint64, optional, tag = "2")]
12675    pub ino: ::core::option::Option<u64>,
12676    #[prost(int32, optional, tag = "3")]
12677    pub r#type: ::core::option::Option<i32>,
12678    #[prost(int32, optional, tag = "4")]
12679    pub dir: ::core::option::Option<i32>,
12680    #[prost(uint64, optional, tag = "5")]
12681    pub index: ::core::option::Option<u64>,
12682    #[prost(int32, optional, tag = "6")]
12683    pub dirty: ::core::option::Option<i32>,
12684    #[prost(int32, optional, tag = "7")]
12685    pub uptodate: ::core::option::Option<i32>,
12686}
12687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12688pub struct F2fsWriteBeginFtraceEvent {
12689    #[prost(uint64, optional, tag = "1")]
12690    pub dev: ::core::option::Option<u64>,
12691    #[prost(uint64, optional, tag = "2")]
12692    pub ino: ::core::option::Option<u64>,
12693    #[prost(int64, optional, tag = "3")]
12694    pub pos: ::core::option::Option<i64>,
12695    #[prost(uint32, optional, tag = "4")]
12696    pub len: ::core::option::Option<u32>,
12697    #[prost(uint32, optional, tag = "5")]
12698    pub flags: ::core::option::Option<u32>,
12699}
12700#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12701pub struct F2fsWriteCheckpointFtraceEvent {
12702    #[prost(uint64, optional, tag = "1")]
12703    pub dev: ::core::option::Option<u64>,
12704    #[prost(uint32, optional, tag = "2")]
12705    pub is_umount: ::core::option::Option<u32>,
12706    #[prost(string, optional, tag = "3")]
12707    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12708    #[prost(int32, optional, tag = "4")]
12709    pub reason: ::core::option::Option<i32>,
12710    #[prost(uint32, optional, tag = "5")]
12711    pub phase: ::core::option::Option<u32>,
12712}
12713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12714pub struct F2fsWriteEndFtraceEvent {
12715    #[prost(uint64, optional, tag = "1")]
12716    pub dev: ::core::option::Option<u64>,
12717    #[prost(uint64, optional, tag = "2")]
12718    pub ino: ::core::option::Option<u64>,
12719    #[prost(int64, optional, tag = "3")]
12720    pub pos: ::core::option::Option<i64>,
12721    #[prost(uint32, optional, tag = "4")]
12722    pub len: ::core::option::Option<u32>,
12723    #[prost(uint32, optional, tag = "5")]
12724    pub copied: ::core::option::Option<u32>,
12725}
12726#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12727pub struct F2fsIostatFtraceEvent {
12728    #[prost(uint64, optional, tag = "1")]
12729    pub app_bio: ::core::option::Option<u64>,
12730    #[prost(uint64, optional, tag = "2")]
12731    pub app_brio: ::core::option::Option<u64>,
12732    #[prost(uint64, optional, tag = "3")]
12733    pub app_dio: ::core::option::Option<u64>,
12734    #[prost(uint64, optional, tag = "4")]
12735    pub app_drio: ::core::option::Option<u64>,
12736    #[prost(uint64, optional, tag = "5")]
12737    pub app_mio: ::core::option::Option<u64>,
12738    #[prost(uint64, optional, tag = "6")]
12739    pub app_mrio: ::core::option::Option<u64>,
12740    #[prost(uint64, optional, tag = "7")]
12741    pub app_rio: ::core::option::Option<u64>,
12742    #[prost(uint64, optional, tag = "8")]
12743    pub app_wio: ::core::option::Option<u64>,
12744    #[prost(uint64, optional, tag = "9")]
12745    pub dev: ::core::option::Option<u64>,
12746    #[prost(uint64, optional, tag = "10")]
12747    pub fs_cdrio: ::core::option::Option<u64>,
12748    #[prost(uint64, optional, tag = "11")]
12749    pub fs_cp_dio: ::core::option::Option<u64>,
12750    #[prost(uint64, optional, tag = "12")]
12751    pub fs_cp_mio: ::core::option::Option<u64>,
12752    #[prost(uint64, optional, tag = "13")]
12753    pub fs_cp_nio: ::core::option::Option<u64>,
12754    #[prost(uint64, optional, tag = "14")]
12755    pub fs_dio: ::core::option::Option<u64>,
12756    #[prost(uint64, optional, tag = "15")]
12757    pub fs_discard: ::core::option::Option<u64>,
12758    #[prost(uint64, optional, tag = "16")]
12759    pub fs_drio: ::core::option::Option<u64>,
12760    #[prost(uint64, optional, tag = "17")]
12761    pub fs_gc_dio: ::core::option::Option<u64>,
12762    #[prost(uint64, optional, tag = "18")]
12763    pub fs_gc_nio: ::core::option::Option<u64>,
12764    #[prost(uint64, optional, tag = "19")]
12765    pub fs_gdrio: ::core::option::Option<u64>,
12766    #[prost(uint64, optional, tag = "20")]
12767    pub fs_mio: ::core::option::Option<u64>,
12768    #[prost(uint64, optional, tag = "21")]
12769    pub fs_mrio: ::core::option::Option<u64>,
12770    #[prost(uint64, optional, tag = "22")]
12771    pub fs_nio: ::core::option::Option<u64>,
12772    #[prost(uint64, optional, tag = "23")]
12773    pub fs_nrio: ::core::option::Option<u64>,
12774}
12775#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12776pub struct F2fsIostatLatencyFtraceEvent {
12777    #[prost(uint32, optional, tag = "1")]
12778    pub d_rd_avg: ::core::option::Option<u32>,
12779    #[prost(uint32, optional, tag = "2")]
12780    pub d_rd_cnt: ::core::option::Option<u32>,
12781    #[prost(uint32, optional, tag = "3")]
12782    pub d_rd_peak: ::core::option::Option<u32>,
12783    #[prost(uint32, optional, tag = "4")]
12784    pub d_wr_as_avg: ::core::option::Option<u32>,
12785    #[prost(uint32, optional, tag = "5")]
12786    pub d_wr_as_cnt: ::core::option::Option<u32>,
12787    #[prost(uint32, optional, tag = "6")]
12788    pub d_wr_as_peak: ::core::option::Option<u32>,
12789    #[prost(uint32, optional, tag = "7")]
12790    pub d_wr_s_avg: ::core::option::Option<u32>,
12791    #[prost(uint32, optional, tag = "8")]
12792    pub d_wr_s_cnt: ::core::option::Option<u32>,
12793    #[prost(uint32, optional, tag = "9")]
12794    pub d_wr_s_peak: ::core::option::Option<u32>,
12795    #[prost(uint64, optional, tag = "10")]
12796    pub dev: ::core::option::Option<u64>,
12797    #[prost(uint32, optional, tag = "11")]
12798    pub m_rd_avg: ::core::option::Option<u32>,
12799    #[prost(uint32, optional, tag = "12")]
12800    pub m_rd_cnt: ::core::option::Option<u32>,
12801    #[prost(uint32, optional, tag = "13")]
12802    pub m_rd_peak: ::core::option::Option<u32>,
12803    #[prost(uint32, optional, tag = "14")]
12804    pub m_wr_as_avg: ::core::option::Option<u32>,
12805    #[prost(uint32, optional, tag = "15")]
12806    pub m_wr_as_cnt: ::core::option::Option<u32>,
12807    #[prost(uint32, optional, tag = "16")]
12808    pub m_wr_as_peak: ::core::option::Option<u32>,
12809    #[prost(uint32, optional, tag = "17")]
12810    pub m_wr_s_avg: ::core::option::Option<u32>,
12811    #[prost(uint32, optional, tag = "18")]
12812    pub m_wr_s_cnt: ::core::option::Option<u32>,
12813    #[prost(uint32, optional, tag = "19")]
12814    pub m_wr_s_peak: ::core::option::Option<u32>,
12815    #[prost(uint32, optional, tag = "20")]
12816    pub n_rd_avg: ::core::option::Option<u32>,
12817    #[prost(uint32, optional, tag = "21")]
12818    pub n_rd_cnt: ::core::option::Option<u32>,
12819    #[prost(uint32, optional, tag = "22")]
12820    pub n_rd_peak: ::core::option::Option<u32>,
12821    #[prost(uint32, optional, tag = "23")]
12822    pub n_wr_as_avg: ::core::option::Option<u32>,
12823    #[prost(uint32, optional, tag = "24")]
12824    pub n_wr_as_cnt: ::core::option::Option<u32>,
12825    #[prost(uint32, optional, tag = "25")]
12826    pub n_wr_as_peak: ::core::option::Option<u32>,
12827    #[prost(uint32, optional, tag = "26")]
12828    pub n_wr_s_avg: ::core::option::Option<u32>,
12829    #[prost(uint32, optional, tag = "27")]
12830    pub n_wr_s_cnt: ::core::option::Option<u32>,
12831    #[prost(uint32, optional, tag = "28")]
12832    pub n_wr_s_peak: ::core::option::Option<u32>,
12833}
12834#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12835pub struct F2fsBackgroundGcFtraceEvent {
12836    #[prost(uint64, optional, tag = "1")]
12837    pub dev: ::core::option::Option<u64>,
12838    #[prost(uint32, optional, tag = "2")]
12839    pub wait_ms: ::core::option::Option<u32>,
12840    #[prost(uint32, optional, tag = "3")]
12841    pub prefree: ::core::option::Option<u32>,
12842    #[prost(uint32, optional, tag = "4")]
12843    pub free: ::core::option::Option<u32>,
12844}
12845#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12846pub struct F2fsGcBeginFtraceEvent {
12847    #[prost(uint64, optional, tag = "1")]
12848    pub dev: ::core::option::Option<u64>,
12849    #[prost(uint32, optional, tag = "2")]
12850    pub sync: ::core::option::Option<u32>,
12851    #[prost(uint32, optional, tag = "3")]
12852    pub background: ::core::option::Option<u32>,
12853    #[prost(int64, optional, tag = "4")]
12854    pub dirty_nodes: ::core::option::Option<i64>,
12855    #[prost(int64, optional, tag = "5")]
12856    pub dirty_dents: ::core::option::Option<i64>,
12857    #[prost(int64, optional, tag = "6")]
12858    pub dirty_imeta: ::core::option::Option<i64>,
12859    #[prost(uint32, optional, tag = "7")]
12860    pub free_sec: ::core::option::Option<u32>,
12861    #[prost(uint32, optional, tag = "8")]
12862    pub free_seg: ::core::option::Option<u32>,
12863    #[prost(int32, optional, tag = "9")]
12864    pub reserved_seg: ::core::option::Option<i32>,
12865    #[prost(uint32, optional, tag = "10")]
12866    pub prefree_seg: ::core::option::Option<u32>,
12867    #[prost(int32, optional, tag = "11")]
12868    pub gc_type: ::core::option::Option<i32>,
12869    #[prost(uint32, optional, tag = "12")]
12870    pub no_bg_gc: ::core::option::Option<u32>,
12871    #[prost(uint32, optional, tag = "13")]
12872    pub nr_free_secs: ::core::option::Option<u32>,
12873}
12874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12875pub struct F2fsGcEndFtraceEvent {
12876    #[prost(uint64, optional, tag = "1")]
12877    pub dev: ::core::option::Option<u64>,
12878    #[prost(int32, optional, tag = "2")]
12879    pub ret: ::core::option::Option<i32>,
12880    #[prost(int32, optional, tag = "3")]
12881    pub seg_freed: ::core::option::Option<i32>,
12882    #[prost(int32, optional, tag = "4")]
12883    pub sec_freed: ::core::option::Option<i32>,
12884    #[prost(int64, optional, tag = "5")]
12885    pub dirty_nodes: ::core::option::Option<i64>,
12886    #[prost(int64, optional, tag = "6")]
12887    pub dirty_dents: ::core::option::Option<i64>,
12888    #[prost(int64, optional, tag = "7")]
12889    pub dirty_imeta: ::core::option::Option<i64>,
12890    #[prost(uint32, optional, tag = "8")]
12891    pub free_sec: ::core::option::Option<u32>,
12892    #[prost(uint32, optional, tag = "9")]
12893    pub free_seg: ::core::option::Option<u32>,
12894    #[prost(int32, optional, tag = "10")]
12895    pub reserved_seg: ::core::option::Option<i32>,
12896    #[prost(uint32, optional, tag = "11")]
12897    pub prefree_seg: ::core::option::Option<u32>,
12898}
12899#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12900pub struct F2fsLockElapsedTimeFtraceEvent {
12901    #[prost(uint64, optional, tag = "1")]
12902    pub dev: ::core::option::Option<u64>,
12903    #[prost(string, optional, tag = "2")]
12904    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12905    #[prost(int32, optional, tag = "3")]
12906    pub pid: ::core::option::Option<i32>,
12907    #[prost(int32, optional, tag = "4")]
12908    pub prio: ::core::option::Option<i32>,
12909    #[prost(int32, optional, tag = "5")]
12910    pub ioprio_class: ::core::option::Option<i32>,
12911    #[prost(int32, optional, tag = "6")]
12912    pub ioprio_data: ::core::option::Option<i32>,
12913    #[prost(uint32, optional, tag = "7")]
12914    pub lock_name: ::core::option::Option<u32>,
12915    #[prost(uint32, optional, tag = "8")]
12916    pub is_write: ::core::option::Option<u32>,
12917    #[prost(uint64, optional, tag = "9")]
12918    pub total_time: ::core::option::Option<u64>,
12919    #[prost(uint64, optional, tag = "10")]
12920    pub running_time: ::core::option::Option<u64>,
12921    #[prost(uint64, optional, tag = "11")]
12922    pub runnable_time: ::core::option::Option<u64>,
12923    #[prost(uint64, optional, tag = "12")]
12924    pub io_sleep_time: ::core::option::Option<u64>,
12925    #[prost(uint64, optional, tag = "13")]
12926    pub other_time: ::core::option::Option<u64>,
12927}
12928#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12929pub struct FastrpcDmaStatFtraceEvent {
12930    #[prost(int32, optional, tag = "1")]
12931    pub cid: ::core::option::Option<i32>,
12932    #[prost(int64, optional, tag = "2")]
12933    pub len: ::core::option::Option<i64>,
12934    #[prost(uint64, optional, tag = "3")]
12935    pub total_allocated: ::core::option::Option<u64>,
12936}
12937#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12938pub struct FastrpcDmaFreeFtraceEvent {
12939    #[prost(int32, optional, tag = "1")]
12940    pub cid: ::core::option::Option<i32>,
12941    #[prost(uint64, optional, tag = "2")]
12942    pub phys: ::core::option::Option<u64>,
12943    #[prost(uint64, optional, tag = "3")]
12944    pub size: ::core::option::Option<u64>,
12945}
12946#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12947pub struct FastrpcDmaAllocFtraceEvent {
12948    #[prost(int32, optional, tag = "1")]
12949    pub cid: ::core::option::Option<i32>,
12950    #[prost(uint64, optional, tag = "2")]
12951    pub phys: ::core::option::Option<u64>,
12952    #[prost(uint64, optional, tag = "3")]
12953    pub size: ::core::option::Option<u64>,
12954    #[prost(uint64, optional, tag = "4")]
12955    pub attr: ::core::option::Option<u64>,
12956    #[prost(int32, optional, tag = "5")]
12957    pub mflags: ::core::option::Option<i32>,
12958}
12959#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12960pub struct FastrpcDmaUnmapFtraceEvent {
12961    #[prost(int32, optional, tag = "1")]
12962    pub cid: ::core::option::Option<i32>,
12963    #[prost(uint64, optional, tag = "2")]
12964    pub phys: ::core::option::Option<u64>,
12965    #[prost(uint64, optional, tag = "3")]
12966    pub size: ::core::option::Option<u64>,
12967}
12968#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12969pub struct FastrpcDmaMapFtraceEvent {
12970    #[prost(int32, optional, tag = "1")]
12971    pub cid: ::core::option::Option<i32>,
12972    #[prost(int32, optional, tag = "2")]
12973    pub fd: ::core::option::Option<i32>,
12974    #[prost(uint64, optional, tag = "3")]
12975    pub phys: ::core::option::Option<u64>,
12976    #[prost(uint64, optional, tag = "4")]
12977    pub size: ::core::option::Option<u64>,
12978    #[prost(uint64, optional, tag = "5")]
12979    pub len: ::core::option::Option<u64>,
12980    #[prost(uint32, optional, tag = "6")]
12981    pub attr: ::core::option::Option<u32>,
12982    #[prost(int32, optional, tag = "7")]
12983    pub mflags: ::core::option::Option<i32>,
12984}
12985#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12986pub struct FenceInitFtraceEvent {
12987    #[prost(uint32, optional, tag = "1")]
12988    pub context: ::core::option::Option<u32>,
12989    #[prost(string, optional, tag = "2")]
12990    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12991    #[prost(uint32, optional, tag = "3")]
12992    pub seqno: ::core::option::Option<u32>,
12993    #[prost(string, optional, tag = "4")]
12994    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12995}
12996#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12997pub struct FenceDestroyFtraceEvent {
12998    #[prost(uint32, optional, tag = "1")]
12999    pub context: ::core::option::Option<u32>,
13000    #[prost(string, optional, tag = "2")]
13001    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13002    #[prost(uint32, optional, tag = "3")]
13003    pub seqno: ::core::option::Option<u32>,
13004    #[prost(string, optional, tag = "4")]
13005    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13006}
13007#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13008pub struct FenceEnableSignalFtraceEvent {
13009    #[prost(uint32, optional, tag = "1")]
13010    pub context: ::core::option::Option<u32>,
13011    #[prost(string, optional, tag = "2")]
13012    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13013    #[prost(uint32, optional, tag = "3")]
13014    pub seqno: ::core::option::Option<u32>,
13015    #[prost(string, optional, tag = "4")]
13016    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13017}
13018#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13019pub struct FenceSignaledFtraceEvent {
13020    #[prost(uint32, optional, tag = "1")]
13021    pub context: ::core::option::Option<u32>,
13022    #[prost(string, optional, tag = "2")]
13023    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13024    #[prost(uint32, optional, tag = "3")]
13025    pub seqno: ::core::option::Option<u32>,
13026    #[prost(string, optional, tag = "4")]
13027    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13028}
13029#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13030pub struct MmFilemapAddToPageCacheFtraceEvent {
13031    #[prost(uint64, optional, tag = "1")]
13032    pub pfn: ::core::option::Option<u64>,
13033    #[prost(uint64, optional, tag = "2")]
13034    pub i_ino: ::core::option::Option<u64>,
13035    #[prost(uint64, optional, tag = "3")]
13036    pub index: ::core::option::Option<u64>,
13037    #[prost(uint64, optional, tag = "4")]
13038    pub s_dev: ::core::option::Option<u64>,
13039    #[prost(uint64, optional, tag = "5")]
13040    pub page: ::core::option::Option<u64>,
13041}
13042#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13043pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13044    #[prost(uint64, optional, tag = "1")]
13045    pub pfn: ::core::option::Option<u64>,
13046    #[prost(uint64, optional, tag = "2")]
13047    pub i_ino: ::core::option::Option<u64>,
13048    #[prost(uint64, optional, tag = "3")]
13049    pub index: ::core::option::Option<u64>,
13050    #[prost(uint64, optional, tag = "4")]
13051    pub s_dev: ::core::option::Option<u64>,
13052    #[prost(uint64, optional, tag = "5")]
13053    pub page: ::core::option::Option<u64>,
13054}
13055#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13056pub struct DoSysOpenFtraceEvent {
13057    #[prost(string, optional, tag = "1")]
13058    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13059    #[prost(int32, optional, tag = "2")]
13060    pub flags: ::core::option::Option<i32>,
13061    #[prost(int32, optional, tag = "3")]
13062    pub mode: ::core::option::Option<i32>,
13063}
13064#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13065pub struct OpenExecFtraceEvent {
13066    #[prost(string, optional, tag = "1")]
13067    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13068}
13069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13070pub struct PrintFtraceEvent {
13071    #[prost(uint64, optional, tag = "1")]
13072    pub ip: ::core::option::Option<u64>,
13073    #[prost(string, optional, tag = "2")]
13074    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13075}
13076#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13077pub struct FuncgraphEntryFtraceEvent {
13078    #[prost(int32, optional, tag = "1")]
13079    pub depth: ::core::option::Option<i32>,
13080    #[prost(uint64, optional, tag = "2")]
13081    pub func: ::core::option::Option<u64>,
13082}
13083#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13084pub struct FuncgraphExitFtraceEvent {
13085    #[prost(uint64, optional, tag = "1")]
13086    pub calltime: ::core::option::Option<u64>,
13087    #[prost(int32, optional, tag = "2")]
13088    pub depth: ::core::option::Option<i32>,
13089    #[prost(uint64, optional, tag = "3")]
13090    pub func: ::core::option::Option<u64>,
13091    #[prost(uint64, optional, tag = "4")]
13092    pub overrun: ::core::option::Option<u64>,
13093    #[prost(uint64, optional, tag = "5")]
13094    pub rettime: ::core::option::Option<u64>,
13095}
13096#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13097pub struct FwtpPerfettoCounterFtraceEvent {
13098    #[prost(uint64, optional, tag = "1")]
13099    pub timestamp: ::core::option::Option<u64>,
13100    #[prost(uint32, optional, tag = "2")]
13101    pub track_id: ::core::option::Option<u32>,
13102    #[prost(string, optional, tag = "3")]
13103    pub category: ::core::option::Option<::prost::alloc::string::String>,
13104    #[prost(string, optional, tag = "4")]
13105    pub name: ::core::option::Option<::prost::alloc::string::String>,
13106    #[prost(uint32, optional, tag = "5")]
13107    pub value: ::core::option::Option<u32>,
13108}
13109#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13110pub struct FwtpPerfettoSliceFtraceEvent {
13111    #[prost(uint64, optional, tag = "1")]
13112    pub timestamp: ::core::option::Option<u64>,
13113    #[prost(uint32, optional, tag = "2")]
13114    pub track_id: ::core::option::Option<u32>,
13115    #[prost(string, optional, tag = "3")]
13116    pub category: ::core::option::Option<::prost::alloc::string::String>,
13117    #[prost(string, optional, tag = "4")]
13118    pub name: ::core::option::Option<::prost::alloc::string::String>,
13119    #[prost(uint32, optional, tag = "5")]
13120    pub begin: ::core::option::Option<u32>,
13121}
13122#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13123pub struct G2dTracingMarkWriteFtraceEvent {
13124    #[prost(int32, optional, tag = "1")]
13125    pub pid: ::core::option::Option<i32>,
13126    #[prost(string, optional, tag = "4")]
13127    pub name: ::core::option::Option<::prost::alloc::string::String>,
13128    #[prost(uint32, optional, tag = "5")]
13129    pub r#type: ::core::option::Option<u32>,
13130    #[prost(int32, optional, tag = "6")]
13131    pub value: ::core::option::Option<i32>,
13132}
13133/// This generic proto is used to output events in the trace
13134/// when a specific proto for that event does not exist.
13135#[derive(Clone, PartialEq, ::prost::Message)]
13136pub struct GenericFtraceEvent {
13137    #[prost(string, optional, tag = "1")]
13138    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13139    #[prost(message, repeated, tag = "2")]
13140    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13141}
13142/// Nested message and enum types in `GenericFtraceEvent`.
13143pub mod generic_ftrace_event {
13144    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13145    pub struct Field {
13146        #[prost(string, optional, tag = "1")]
13147        pub name: ::core::option::Option<::prost::alloc::string::String>,
13148        #[prost(oneof = "field::Value", tags = "3, 4, 5")]
13149        pub value: ::core::option::Option<field::Value>,
13150    }
13151    /// Nested message and enum types in `Field`.
13152    pub mod field {
13153        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
13154        pub enum Value {
13155            #[prost(string, tag = "3")]
13156            StrValue(::prost::alloc::string::String),
13157            #[prost(int64, tag = "4")]
13158            IntValue(i64),
13159            #[prost(uint64, tag = "5")]
13160            UintValue(u64),
13161        }
13162    }
13163}
13164#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13165pub struct KprobeEvent {
13166    #[prost(string, optional, tag = "1")]
13167    pub name: ::core::option::Option<::prost::alloc::string::String>,
13168    #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
13169    pub r#type: ::core::option::Option<i32>,
13170}
13171/// Nested message and enum types in `KprobeEvent`.
13172pub mod kprobe_event {
13173    #[derive(
13174        Clone,
13175        Copy,
13176        Debug,
13177        PartialEq,
13178        Eq,
13179        Hash,
13180        PartialOrd,
13181        Ord,
13182        ::prost::Enumeration
13183    )]
13184    #[repr(i32)]
13185    pub enum KprobeType {
13186        Unknown = 0,
13187        Begin = 1,
13188        End = 2,
13189        Instant = 3,
13190    }
13191    impl KprobeType {
13192        /// String value of the enum field names used in the ProtoBuf definition.
13193        ///
13194        /// The values are not transformed in any way and thus are considered stable
13195        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13196        pub fn as_str_name(&self) -> &'static str {
13197            match self {
13198                Self::Unknown => "KPROBE_TYPE_UNKNOWN",
13199                Self::Begin => "KPROBE_TYPE_BEGIN",
13200                Self::End => "KPROBE_TYPE_END",
13201                Self::Instant => "KPROBE_TYPE_INSTANT",
13202            }
13203        }
13204        /// Creates an enum from field names used in the ProtoBuf definition.
13205        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13206            match value {
13207                "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
13208                "KPROBE_TYPE_BEGIN" => Some(Self::Begin),
13209                "KPROBE_TYPE_END" => Some(Self::End),
13210                "KPROBE_TYPE_INSTANT" => Some(Self::Instant),
13211                _ => None,
13212            }
13213        }
13214    }
13215}
13216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13217pub struct GoogleIccEventFtraceEvent {
13218    #[prost(string, optional, tag = "1")]
13219    pub event: ::core::option::Option<::prost::alloc::string::String>,
13220    #[prost(uint64, optional, tag = "2")]
13221    pub timestamp: ::core::option::Option<u64>,
13222}
13223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13224pub struct GoogleIrmEventFtraceEvent {
13225    #[prost(string, optional, tag = "1")]
13226    pub event: ::core::option::Option<::prost::alloc::string::String>,
13227    #[prost(uint64, optional, tag = "2")]
13228    pub timestamp: ::core::option::Option<u64>,
13229}
13230#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13231pub struct GpuMemTotalFtraceEvent {
13232    #[prost(uint32, optional, tag = "1")]
13233    pub gpu_id: ::core::option::Option<u32>,
13234    #[prost(uint32, optional, tag = "2")]
13235    pub pid: ::core::option::Option<u32>,
13236    #[prost(uint64, optional, tag = "3")]
13237    pub size: ::core::option::Option<u64>,
13238}
13239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13240pub struct DrmSchedJobFtraceEvent {
13241    #[prost(uint64, optional, tag = "1")]
13242    pub entity: ::core::option::Option<u64>,
13243    #[prost(uint64, optional, tag = "2")]
13244    pub fence: ::core::option::Option<u64>,
13245    #[prost(int32, optional, tag = "3")]
13246    pub hw_job_count: ::core::option::Option<i32>,
13247    #[prost(uint64, optional, tag = "4")]
13248    pub id: ::core::option::Option<u64>,
13249    #[prost(uint32, optional, tag = "5")]
13250    pub job_count: ::core::option::Option<u32>,
13251    #[prost(string, optional, tag = "6")]
13252    pub name: ::core::option::Option<::prost::alloc::string::String>,
13253}
13254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13255pub struct DrmRunJobFtraceEvent {
13256    #[prost(uint64, optional, tag = "1")]
13257    pub entity: ::core::option::Option<u64>,
13258    #[prost(uint64, optional, tag = "2")]
13259    pub fence: ::core::option::Option<u64>,
13260    #[prost(int32, optional, tag = "3")]
13261    pub hw_job_count: ::core::option::Option<i32>,
13262    #[prost(uint64, optional, tag = "4")]
13263    pub id: ::core::option::Option<u64>,
13264    #[prost(uint32, optional, tag = "5")]
13265    pub job_count: ::core::option::Option<u32>,
13266    #[prost(string, optional, tag = "6")]
13267    pub name: ::core::option::Option<::prost::alloc::string::String>,
13268}
13269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13270pub struct DrmSchedProcessJobFtraceEvent {
13271    #[prost(uint64, optional, tag = "1")]
13272    pub fence: ::core::option::Option<u64>,
13273}
13274#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13275pub struct DrmSchedJobAddDepFtraceEvent {
13276    #[prost(uint64, optional, tag = "1")]
13277    pub fence_context: ::core::option::Option<u64>,
13278    #[prost(uint64, optional, tag = "2")]
13279    pub fence_seqno: ::core::option::Option<u64>,
13280    #[prost(uint64, optional, tag = "3")]
13281    pub ctx: ::core::option::Option<u64>,
13282    #[prost(uint64, optional, tag = "4")]
13283    pub seqno: ::core::option::Option<u64>,
13284}
13285#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13286pub struct DrmSchedJobDoneFtraceEvent {
13287    #[prost(uint64, optional, tag = "1")]
13288    pub fence_context: ::core::option::Option<u64>,
13289    #[prost(uint64, optional, tag = "2")]
13290    pub fence_seqno: ::core::option::Option<u64>,
13291}
13292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13293pub struct DrmSchedJobQueueFtraceEvent {
13294    #[prost(string, optional, tag = "1")]
13295    pub name: ::core::option::Option<::prost::alloc::string::String>,
13296    #[prost(uint32, optional, tag = "2")]
13297    pub job_count: ::core::option::Option<u32>,
13298    #[prost(int32, optional, tag = "3")]
13299    pub hw_job_count: ::core::option::Option<i32>,
13300    #[prost(string, optional, tag = "4")]
13301    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13302    #[prost(uint64, optional, tag = "5")]
13303    pub fence_context: ::core::option::Option<u64>,
13304    #[prost(uint64, optional, tag = "6")]
13305    pub fence_seqno: ::core::option::Option<u64>,
13306    #[prost(uint64, optional, tag = "7")]
13307    pub client_id: ::core::option::Option<u64>,
13308}
13309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13310pub struct DrmSchedJobRunFtraceEvent {
13311    #[prost(string, optional, tag = "1")]
13312    pub name: ::core::option::Option<::prost::alloc::string::String>,
13313    #[prost(uint32, optional, tag = "2")]
13314    pub job_count: ::core::option::Option<u32>,
13315    #[prost(int32, optional, tag = "3")]
13316    pub hw_job_count: ::core::option::Option<i32>,
13317    #[prost(string, optional, tag = "4")]
13318    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13319    #[prost(uint64, optional, tag = "5")]
13320    pub fence_context: ::core::option::Option<u64>,
13321    #[prost(uint64, optional, tag = "6")]
13322    pub fence_seqno: ::core::option::Option<u64>,
13323    #[prost(uint64, optional, tag = "7")]
13324    pub client_id: ::core::option::Option<u64>,
13325}
13326#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13327pub struct DrmSchedJobUnschedulableFtraceEvent {
13328    #[prost(uint64, optional, tag = "1")]
13329    pub fence_context: ::core::option::Option<u64>,
13330    #[prost(uint64, optional, tag = "2")]
13331    pub fence_seqno: ::core::option::Option<u64>,
13332    #[prost(uint64, optional, tag = "3")]
13333    pub ctx: ::core::option::Option<u64>,
13334    #[prost(uint64, optional, tag = "4")]
13335    pub seqno: ::core::option::Option<u64>,
13336}
13337#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13338pub struct HypEnterFtraceEvent {}
13339#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13340pub struct HypExitFtraceEvent {}
13341#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13342pub struct HostHcallFtraceEvent {
13343    #[prost(uint32, optional, tag = "1")]
13344    pub id: ::core::option::Option<u32>,
13345    #[prost(uint32, optional, tag = "2")]
13346    pub invalid: ::core::option::Option<u32>,
13347}
13348#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13349pub struct HostSmcFtraceEvent {
13350    #[prost(uint64, optional, tag = "1")]
13351    pub id: ::core::option::Option<u64>,
13352    #[prost(uint32, optional, tag = "2")]
13353    pub forwarded: ::core::option::Option<u32>,
13354}
13355#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13356pub struct HostMemAbortFtraceEvent {
13357    #[prost(uint64, optional, tag = "1")]
13358    pub esr: ::core::option::Option<u64>,
13359    #[prost(uint64, optional, tag = "2")]
13360    pub addr: ::core::option::Option<u64>,
13361}
13362#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13363pub struct HostFfaCallFtraceEvent {
13364    #[prost(uint64, optional, tag = "1")]
13365    pub func_id: ::core::option::Option<u64>,
13366    #[prost(uint64, optional, tag = "2")]
13367    pub res_a1: ::core::option::Option<u64>,
13368    #[prost(uint64, optional, tag = "3")]
13369    pub res_a2: ::core::option::Option<u64>,
13370    #[prost(uint64, optional, tag = "4")]
13371    pub res_a3: ::core::option::Option<u64>,
13372    #[prost(uint64, optional, tag = "5")]
13373    pub res_a4: ::core::option::Option<u64>,
13374    #[prost(int32, optional, tag = "6")]
13375    pub handled: ::core::option::Option<i32>,
13376    #[prost(int32, optional, tag = "7")]
13377    pub err: ::core::option::Option<i32>,
13378}
13379#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13380pub struct IommuIdmapFtraceEvent {
13381    #[prost(uint64, optional, tag = "1")]
13382    pub from: ::core::option::Option<u64>,
13383    #[prost(uint64, optional, tag = "2")]
13384    pub to: ::core::option::Option<u64>,
13385    #[prost(int32, optional, tag = "3")]
13386    pub prot: ::core::option::Option<i32>,
13387}
13388#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13389pub struct PsciMemProtectFtraceEvent {
13390    #[prost(uint64, optional, tag = "1")]
13391    pub count: ::core::option::Option<u64>,
13392    #[prost(uint64, optional, tag = "2")]
13393    pub was: ::core::option::Option<u64>,
13394}
13395#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13396pub struct HypervisorHostHcallFtraceEvent {
13397    #[prost(uint32, optional, tag = "1")]
13398    pub id: ::core::option::Option<u32>,
13399    #[prost(uint32, optional, tag = "2")]
13400    pub invalid: ::core::option::Option<u32>,
13401}
13402#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13403pub struct HypervisorHostSmcFtraceEvent {
13404    #[prost(uint64, optional, tag = "1")]
13405    pub id: ::core::option::Option<u64>,
13406    #[prost(uint32, optional, tag = "2")]
13407    pub forwarded: ::core::option::Option<u32>,
13408}
13409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13410pub struct HypervisorHypExitFtraceEvent {}
13411#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13412pub struct HypervisorIommuIdmapFtraceEvent {
13413    #[prost(uint64, optional, tag = "1")]
13414    pub from: ::core::option::Option<u64>,
13415    #[prost(uint64, optional, tag = "2")]
13416    pub to: ::core::option::Option<u64>,
13417    #[prost(int32, optional, tag = "3")]
13418    pub prot: ::core::option::Option<i32>,
13419}
13420#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13421pub struct HypervisorPsciMemProtectFtraceEvent {
13422    #[prost(uint64, optional, tag = "1")]
13423    pub count: ::core::option::Option<u64>,
13424    #[prost(uint64, optional, tag = "2")]
13425    pub was: ::core::option::Option<u64>,
13426}
13427#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13428pub struct HypervisorHostMemAbortFtraceEvent {
13429    #[prost(uint64, optional, tag = "1")]
13430    pub esr: ::core::option::Option<u64>,
13431    #[prost(uint64, optional, tag = "2")]
13432    pub addr: ::core::option::Option<u64>,
13433}
13434#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13435pub struct HypervisorHypEnterFtraceEvent {}
13436#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13437pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13438    #[prost(uint32, optional, tag = "1")]
13439    pub map: ::core::option::Option<u32>,
13440}
13441#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13442pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13443    #[prost(uint64, optional, tag = "1")]
13444    pub esr: ::core::option::Option<u64>,
13445}
13446#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13447pub struct I2cReadFtraceEvent {
13448    #[prost(int32, optional, tag = "1")]
13449    pub adapter_nr: ::core::option::Option<i32>,
13450    #[prost(uint32, optional, tag = "2")]
13451    pub msg_nr: ::core::option::Option<u32>,
13452    #[prost(uint32, optional, tag = "3")]
13453    pub addr: ::core::option::Option<u32>,
13454    #[prost(uint32, optional, tag = "4")]
13455    pub flags: ::core::option::Option<u32>,
13456    #[prost(uint32, optional, tag = "5")]
13457    pub len: ::core::option::Option<u32>,
13458}
13459#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13460pub struct I2cWriteFtraceEvent {
13461    #[prost(int32, optional, tag = "1")]
13462    pub adapter_nr: ::core::option::Option<i32>,
13463    #[prost(uint32, optional, tag = "2")]
13464    pub msg_nr: ::core::option::Option<u32>,
13465    #[prost(uint32, optional, tag = "3")]
13466    pub addr: ::core::option::Option<u32>,
13467    #[prost(uint32, optional, tag = "4")]
13468    pub flags: ::core::option::Option<u32>,
13469    #[prost(uint32, optional, tag = "5")]
13470    pub len: ::core::option::Option<u32>,
13471    #[prost(bytes = "vec", optional, tag = "7")]
13472    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13473}
13474#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13475pub struct I2cResultFtraceEvent {
13476    #[prost(int32, optional, tag = "1")]
13477    pub adapter_nr: ::core::option::Option<i32>,
13478    #[prost(uint32, optional, tag = "2")]
13479    pub nr_msgs: ::core::option::Option<u32>,
13480    #[prost(int32, optional, tag = "3")]
13481    pub ret: ::core::option::Option<i32>,
13482}
13483#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13484pub struct I2cReplyFtraceEvent {
13485    #[prost(int32, optional, tag = "1")]
13486    pub adapter_nr: ::core::option::Option<i32>,
13487    #[prost(uint32, optional, tag = "2")]
13488    pub msg_nr: ::core::option::Option<u32>,
13489    #[prost(uint32, optional, tag = "3")]
13490    pub addr: ::core::option::Option<u32>,
13491    #[prost(uint32, optional, tag = "4")]
13492    pub flags: ::core::option::Option<u32>,
13493    #[prost(uint32, optional, tag = "5")]
13494    pub len: ::core::option::Option<u32>,
13495    #[prost(bytes = "vec", optional, tag = "7")]
13496    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13497}
13498#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13499pub struct SmbusReadFtraceEvent {
13500    #[prost(int32, optional, tag = "1")]
13501    pub adapter_nr: ::core::option::Option<i32>,
13502    #[prost(uint32, optional, tag = "2")]
13503    pub flags: ::core::option::Option<u32>,
13504    #[prost(uint32, optional, tag = "3")]
13505    pub addr: ::core::option::Option<u32>,
13506    #[prost(uint32, optional, tag = "4")]
13507    pub command: ::core::option::Option<u32>,
13508    #[prost(uint32, optional, tag = "5")]
13509    pub protocol: ::core::option::Option<u32>,
13510}
13511#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13512pub struct SmbusWriteFtraceEvent {
13513    #[prost(int32, optional, tag = "1")]
13514    pub adapter_nr: ::core::option::Option<i32>,
13515    #[prost(uint32, optional, tag = "2")]
13516    pub addr: ::core::option::Option<u32>,
13517    #[prost(uint32, optional, tag = "3")]
13518    pub flags: ::core::option::Option<u32>,
13519    #[prost(uint32, optional, tag = "4")]
13520    pub command: ::core::option::Option<u32>,
13521    #[prost(uint32, optional, tag = "5")]
13522    pub len: ::core::option::Option<u32>,
13523    #[prost(uint32, optional, tag = "6")]
13524    pub protocol: ::core::option::Option<u32>,
13525}
13526#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13527pub struct SmbusResultFtraceEvent {
13528    #[prost(int32, optional, tag = "1")]
13529    pub adapter_nr: ::core::option::Option<i32>,
13530    #[prost(uint32, optional, tag = "2")]
13531    pub addr: ::core::option::Option<u32>,
13532    #[prost(uint32, optional, tag = "3")]
13533    pub flags: ::core::option::Option<u32>,
13534    #[prost(uint32, optional, tag = "4")]
13535    pub read_write: ::core::option::Option<u32>,
13536    #[prost(uint32, optional, tag = "5")]
13537    pub command: ::core::option::Option<u32>,
13538    #[prost(int32, optional, tag = "6")]
13539    pub res: ::core::option::Option<i32>,
13540    #[prost(uint32, optional, tag = "7")]
13541    pub protocol: ::core::option::Option<u32>,
13542}
13543#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13544pub struct SmbusReplyFtraceEvent {
13545    #[prost(int32, optional, tag = "1")]
13546    pub adapter_nr: ::core::option::Option<i32>,
13547    #[prost(uint32, optional, tag = "2")]
13548    pub addr: ::core::option::Option<u32>,
13549    #[prost(uint32, optional, tag = "3")]
13550    pub flags: ::core::option::Option<u32>,
13551    #[prost(uint32, optional, tag = "4")]
13552    pub command: ::core::option::Option<u32>,
13553    #[prost(uint32, optional, tag = "5")]
13554    pub len: ::core::option::Option<u32>,
13555    #[prost(uint32, optional, tag = "6")]
13556    pub protocol: ::core::option::Option<u32>,
13557}
13558#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13559pub struct IonStatFtraceEvent {
13560    #[prost(uint32, optional, tag = "1")]
13561    pub buffer_id: ::core::option::Option<u32>,
13562    #[prost(int64, optional, tag = "2")]
13563    pub len: ::core::option::Option<i64>,
13564    #[prost(uint64, optional, tag = "3")]
13565    pub total_allocated: ::core::option::Option<u64>,
13566}
13567#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13568pub struct IpiEntryFtraceEvent {
13569    #[prost(string, optional, tag = "1")]
13570    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13571}
13572#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13573pub struct IpiExitFtraceEvent {
13574    #[prost(string, optional, tag = "1")]
13575    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13576}
13577#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13578pub struct IpiRaiseFtraceEvent {
13579    #[prost(uint32, optional, tag = "1")]
13580    pub target_cpus: ::core::option::Option<u32>,
13581    #[prost(string, optional, tag = "2")]
13582    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13583}
13584#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13585pub struct SoftirqEntryFtraceEvent {
13586    #[prost(uint32, optional, tag = "1")]
13587    pub vec: ::core::option::Option<u32>,
13588}
13589#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13590pub struct SoftirqExitFtraceEvent {
13591    #[prost(uint32, optional, tag = "1")]
13592    pub vec: ::core::option::Option<u32>,
13593}
13594#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13595pub struct SoftirqRaiseFtraceEvent {
13596    #[prost(uint32, optional, tag = "1")]
13597    pub vec: ::core::option::Option<u32>,
13598}
13599#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13600pub struct IrqHandlerEntryFtraceEvent {
13601    #[prost(int32, optional, tag = "1")]
13602    pub irq: ::core::option::Option<i32>,
13603    #[prost(string, optional, tag = "2")]
13604    pub name: ::core::option::Option<::prost::alloc::string::String>,
13605    #[prost(uint32, optional, tag = "3")]
13606    pub handler: ::core::option::Option<u32>,
13607}
13608#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13609pub struct IrqHandlerExitFtraceEvent {
13610    #[prost(int32, optional, tag = "1")]
13611    pub irq: ::core::option::Option<i32>,
13612    #[prost(int32, optional, tag = "2")]
13613    pub ret: ::core::option::Option<i32>,
13614}
13615#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13616pub struct LocalTimerEntryFtraceEvent {
13617    #[prost(int32, optional, tag = "1")]
13618    pub vector: ::core::option::Option<i32>,
13619}
13620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13621pub struct LocalTimerExitFtraceEvent {
13622    #[prost(int32, optional, tag = "1")]
13623    pub vector: ::core::option::Option<i32>,
13624}
13625#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13626pub struct KgslGpuFrequencyFtraceEvent {
13627    #[prost(uint32, optional, tag = "1")]
13628    pub gpu_freq: ::core::option::Option<u32>,
13629    #[prost(uint32, optional, tag = "2")]
13630    pub gpu_id: ::core::option::Option<u32>,
13631}
13632#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13633pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13634    #[prost(uint32, optional, tag = "1")]
13635    pub id: ::core::option::Option<u32>,
13636    #[prost(uint32, optional, tag = "2")]
13637    pub timestamp: ::core::option::Option<u32>,
13638    #[prost(uint32, optional, tag = "3")]
13639    pub queued: ::core::option::Option<u32>,
13640    #[prost(uint32, optional, tag = "4")]
13641    pub flags: ::core::option::Option<u32>,
13642    #[prost(uint32, optional, tag = "5")]
13643    pub prio: ::core::option::Option<u32>,
13644}
13645#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13646pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13647    #[prost(uint32, optional, tag = "1")]
13648    pub id: ::core::option::Option<u32>,
13649    #[prost(uint32, optional, tag = "2")]
13650    pub timestamp: ::core::option::Option<u32>,
13651    #[prost(int64, optional, tag = "3")]
13652    pub inflight: ::core::option::Option<i64>,
13653    #[prost(uint32, optional, tag = "4")]
13654    pub flags: ::core::option::Option<u32>,
13655    #[prost(uint64, optional, tag = "5")]
13656    pub ticks: ::core::option::Option<u64>,
13657    #[prost(uint64, optional, tag = "6")]
13658    pub secs: ::core::option::Option<u64>,
13659    #[prost(uint64, optional, tag = "7")]
13660    pub usecs: ::core::option::Option<u64>,
13661    #[prost(int32, optional, tag = "8")]
13662    pub prio: ::core::option::Option<i32>,
13663    #[prost(int32, optional, tag = "9")]
13664    pub rb_id: ::core::option::Option<i32>,
13665    #[prost(uint32, optional, tag = "10")]
13666    pub rptr: ::core::option::Option<u32>,
13667    #[prost(uint32, optional, tag = "11")]
13668    pub wptr: ::core::option::Option<u32>,
13669    #[prost(int32, optional, tag = "12")]
13670    pub q_inflight: ::core::option::Option<i32>,
13671    #[prost(int32, optional, tag = "13")]
13672    pub dispatch_queue: ::core::option::Option<i32>,
13673}
13674#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13675pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13676    #[prost(uint32, optional, tag = "1")]
13677    pub id: ::core::option::Option<u32>,
13678    #[prost(uint32, optional, tag = "2")]
13679    pub timestamp: ::core::option::Option<u32>,
13680    #[prost(uint64, optional, tag = "3")]
13681    pub ticks: ::core::option::Option<u64>,
13682    #[prost(int32, optional, tag = "4")]
13683    pub prio: ::core::option::Option<i32>,
13684}
13685#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13686pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13687    #[prost(uint32, optional, tag = "1")]
13688    pub id: ::core::option::Option<u32>,
13689    #[prost(uint32, optional, tag = "2")]
13690    pub timestamp: ::core::option::Option<u32>,
13691    #[prost(int64, optional, tag = "3")]
13692    pub inflight: ::core::option::Option<i64>,
13693    #[prost(uint32, optional, tag = "4")]
13694    pub recovery: ::core::option::Option<u32>,
13695    #[prost(uint32, optional, tag = "5")]
13696    pub flags: ::core::option::Option<u32>,
13697    #[prost(uint64, optional, tag = "6")]
13698    pub start: ::core::option::Option<u64>,
13699    #[prost(uint64, optional, tag = "7")]
13700    pub retire: ::core::option::Option<u64>,
13701    #[prost(int32, optional, tag = "8")]
13702    pub prio: ::core::option::Option<i32>,
13703    #[prost(int32, optional, tag = "9")]
13704    pub rb_id: ::core::option::Option<i32>,
13705    #[prost(uint32, optional, tag = "10")]
13706    pub rptr: ::core::option::Option<u32>,
13707    #[prost(uint32, optional, tag = "11")]
13708    pub wptr: ::core::option::Option<u32>,
13709    #[prost(int32, optional, tag = "12")]
13710    pub q_inflight: ::core::option::Option<i32>,
13711    #[prost(uint64, optional, tag = "13")]
13712    pub fault_recovery: ::core::option::Option<u64>,
13713    #[prost(uint32, optional, tag = "14")]
13714    pub dispatch_queue: ::core::option::Option<u32>,
13715    #[prost(uint64, optional, tag = "15")]
13716    pub submitted_to_rb: ::core::option::Option<u64>,
13717    #[prost(uint64, optional, tag = "16")]
13718    pub retired_on_gmu: ::core::option::Option<u64>,
13719    #[prost(uint64, optional, tag = "17")]
13720    pub active: ::core::option::Option<u64>,
13721}
13722#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13723pub struct AllocPagesIommuEndFtraceEvent {
13724    #[prost(uint32, optional, tag = "1")]
13725    pub gfp_flags: ::core::option::Option<u32>,
13726    #[prost(uint32, optional, tag = "2")]
13727    pub order: ::core::option::Option<u32>,
13728}
13729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13730pub struct AllocPagesIommuFailFtraceEvent {
13731    #[prost(uint32, optional, tag = "1")]
13732    pub gfp_flags: ::core::option::Option<u32>,
13733    #[prost(uint32, optional, tag = "2")]
13734    pub order: ::core::option::Option<u32>,
13735}
13736#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13737pub struct AllocPagesIommuStartFtraceEvent {
13738    #[prost(uint32, optional, tag = "1")]
13739    pub gfp_flags: ::core::option::Option<u32>,
13740    #[prost(uint32, optional, tag = "2")]
13741    pub order: ::core::option::Option<u32>,
13742}
13743#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13744pub struct AllocPagesSysEndFtraceEvent {
13745    #[prost(uint32, optional, tag = "1")]
13746    pub gfp_flags: ::core::option::Option<u32>,
13747    #[prost(uint32, optional, tag = "2")]
13748    pub order: ::core::option::Option<u32>,
13749}
13750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13751pub struct AllocPagesSysFailFtraceEvent {
13752    #[prost(uint32, optional, tag = "1")]
13753    pub gfp_flags: ::core::option::Option<u32>,
13754    #[prost(uint32, optional, tag = "2")]
13755    pub order: ::core::option::Option<u32>,
13756}
13757#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13758pub struct AllocPagesSysStartFtraceEvent {
13759    #[prost(uint32, optional, tag = "1")]
13760    pub gfp_flags: ::core::option::Option<u32>,
13761    #[prost(uint32, optional, tag = "2")]
13762    pub order: ::core::option::Option<u32>,
13763}
13764#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13765pub struct DmaAllocContiguousRetryFtraceEvent {
13766    #[prost(int32, optional, tag = "1")]
13767    pub tries: ::core::option::Option<i32>,
13768}
13769#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13770pub struct IommuMapRangeFtraceEvent {
13771    #[prost(uint64, optional, tag = "1")]
13772    pub chunk_size: ::core::option::Option<u64>,
13773    #[prost(uint64, optional, tag = "2")]
13774    pub len: ::core::option::Option<u64>,
13775    #[prost(uint64, optional, tag = "3")]
13776    pub pa: ::core::option::Option<u64>,
13777    #[prost(uint64, optional, tag = "4")]
13778    pub va: ::core::option::Option<u64>,
13779}
13780#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13781pub struct IommuSecPtblMapRangeEndFtraceEvent {
13782    #[prost(uint64, optional, tag = "1")]
13783    pub len: ::core::option::Option<u64>,
13784    #[prost(int32, optional, tag = "2")]
13785    pub num: ::core::option::Option<i32>,
13786    #[prost(uint32, optional, tag = "3")]
13787    pub pa: ::core::option::Option<u32>,
13788    #[prost(int32, optional, tag = "4")]
13789    pub sec_id: ::core::option::Option<i32>,
13790    #[prost(uint64, optional, tag = "5")]
13791    pub va: ::core::option::Option<u64>,
13792}
13793#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13794pub struct IommuSecPtblMapRangeStartFtraceEvent {
13795    #[prost(uint64, optional, tag = "1")]
13796    pub len: ::core::option::Option<u64>,
13797    #[prost(int32, optional, tag = "2")]
13798    pub num: ::core::option::Option<i32>,
13799    #[prost(uint32, optional, tag = "3")]
13800    pub pa: ::core::option::Option<u32>,
13801    #[prost(int32, optional, tag = "4")]
13802    pub sec_id: ::core::option::Option<i32>,
13803    #[prost(uint64, optional, tag = "5")]
13804    pub va: ::core::option::Option<u64>,
13805}
13806#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13807pub struct IonAllocBufferEndFtraceEvent {
13808    #[prost(string, optional, tag = "1")]
13809    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13810    #[prost(uint32, optional, tag = "2")]
13811    pub flags: ::core::option::Option<u32>,
13812    #[prost(string, optional, tag = "3")]
13813    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13814    #[prost(uint64, optional, tag = "4")]
13815    pub len: ::core::option::Option<u64>,
13816    #[prost(uint32, optional, tag = "5")]
13817    pub mask: ::core::option::Option<u32>,
13818}
13819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13820pub struct IonAllocBufferFailFtraceEvent {
13821    #[prost(string, optional, tag = "1")]
13822    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13823    #[prost(int64, optional, tag = "2")]
13824    pub error: ::core::option::Option<i64>,
13825    #[prost(uint32, optional, tag = "3")]
13826    pub flags: ::core::option::Option<u32>,
13827    #[prost(string, optional, tag = "4")]
13828    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13829    #[prost(uint64, optional, tag = "5")]
13830    pub len: ::core::option::Option<u64>,
13831    #[prost(uint32, optional, tag = "6")]
13832    pub mask: ::core::option::Option<u32>,
13833}
13834#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13835pub struct IonAllocBufferFallbackFtraceEvent {
13836    #[prost(string, optional, tag = "1")]
13837    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13838    #[prost(int64, optional, tag = "2")]
13839    pub error: ::core::option::Option<i64>,
13840    #[prost(uint32, optional, tag = "3")]
13841    pub flags: ::core::option::Option<u32>,
13842    #[prost(string, optional, tag = "4")]
13843    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13844    #[prost(uint64, optional, tag = "5")]
13845    pub len: ::core::option::Option<u64>,
13846    #[prost(uint32, optional, tag = "6")]
13847    pub mask: ::core::option::Option<u32>,
13848}
13849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13850pub struct IonAllocBufferStartFtraceEvent {
13851    #[prost(string, optional, tag = "1")]
13852    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13853    #[prost(uint32, optional, tag = "2")]
13854    pub flags: ::core::option::Option<u32>,
13855    #[prost(string, optional, tag = "3")]
13856    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13857    #[prost(uint64, optional, tag = "4")]
13858    pub len: ::core::option::Option<u64>,
13859    #[prost(uint32, optional, tag = "5")]
13860    pub mask: ::core::option::Option<u32>,
13861}
13862#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13863pub struct IonCpAllocRetryFtraceEvent {
13864    #[prost(int32, optional, tag = "1")]
13865    pub tries: ::core::option::Option<i32>,
13866}
13867#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13868pub struct IonCpSecureBufferEndFtraceEvent {
13869    #[prost(uint64, optional, tag = "1")]
13870    pub align: ::core::option::Option<u64>,
13871    #[prost(uint64, optional, tag = "2")]
13872    pub flags: ::core::option::Option<u64>,
13873    #[prost(string, optional, tag = "3")]
13874    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13875    #[prost(uint64, optional, tag = "4")]
13876    pub len: ::core::option::Option<u64>,
13877}
13878#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13879pub struct IonCpSecureBufferStartFtraceEvent {
13880    #[prost(uint64, optional, tag = "1")]
13881    pub align: ::core::option::Option<u64>,
13882    #[prost(uint64, optional, tag = "2")]
13883    pub flags: ::core::option::Option<u64>,
13884    #[prost(string, optional, tag = "3")]
13885    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13886    #[prost(uint64, optional, tag = "4")]
13887    pub len: ::core::option::Option<u64>,
13888}
13889#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13890pub struct IonPrefetchingFtraceEvent {
13891    #[prost(uint64, optional, tag = "1")]
13892    pub len: ::core::option::Option<u64>,
13893}
13894#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13895pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13896    #[prost(uint32, optional, tag = "1")]
13897    pub is_prefetch: ::core::option::Option<u32>,
13898    #[prost(uint64, optional, tag = "2")]
13899    pub len: ::core::option::Option<u64>,
13900    #[prost(int32, optional, tag = "3")]
13901    pub pool_total: ::core::option::Option<i32>,
13902}
13903#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13904pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13905    #[prost(uint32, optional, tag = "1")]
13906    pub is_prefetch: ::core::option::Option<u32>,
13907    #[prost(uint64, optional, tag = "2")]
13908    pub len: ::core::option::Option<u64>,
13909    #[prost(int32, optional, tag = "3")]
13910    pub pool_total: ::core::option::Option<i32>,
13911}
13912#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13913pub struct IonSecureCmaAllocateEndFtraceEvent {
13914    #[prost(uint64, optional, tag = "1")]
13915    pub align: ::core::option::Option<u64>,
13916    #[prost(uint64, optional, tag = "2")]
13917    pub flags: ::core::option::Option<u64>,
13918    #[prost(string, optional, tag = "3")]
13919    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13920    #[prost(uint64, optional, tag = "4")]
13921    pub len: ::core::option::Option<u64>,
13922}
13923#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13924pub struct IonSecureCmaAllocateStartFtraceEvent {
13925    #[prost(uint64, optional, tag = "1")]
13926    pub align: ::core::option::Option<u64>,
13927    #[prost(uint64, optional, tag = "2")]
13928    pub flags: ::core::option::Option<u64>,
13929    #[prost(string, optional, tag = "3")]
13930    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13931    #[prost(uint64, optional, tag = "4")]
13932    pub len: ::core::option::Option<u64>,
13933}
13934#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13935pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13936    #[prost(uint64, optional, tag = "1")]
13937    pub drained_size: ::core::option::Option<u64>,
13938    #[prost(uint64, optional, tag = "2")]
13939    pub skipped_size: ::core::option::Option<u64>,
13940}
13941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13942pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13943    #[prost(uint64, optional, tag = "1")]
13944    pub drained_size: ::core::option::Option<u64>,
13945    #[prost(uint64, optional, tag = "2")]
13946    pub skipped_size: ::core::option::Option<u64>,
13947}
13948#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13949pub struct KfreeFtraceEvent {
13950    #[prost(uint64, optional, tag = "1")]
13951    pub call_site: ::core::option::Option<u64>,
13952    #[prost(uint64, optional, tag = "2")]
13953    pub ptr: ::core::option::Option<u64>,
13954}
13955#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13956pub struct KmallocFtraceEvent {
13957    #[prost(uint64, optional, tag = "1")]
13958    pub bytes_alloc: ::core::option::Option<u64>,
13959    #[prost(uint64, optional, tag = "2")]
13960    pub bytes_req: ::core::option::Option<u64>,
13961    #[prost(uint64, optional, tag = "3")]
13962    pub call_site: ::core::option::Option<u64>,
13963    #[prost(uint32, optional, tag = "4")]
13964    pub gfp_flags: ::core::option::Option<u32>,
13965    #[prost(uint64, optional, tag = "5")]
13966    pub ptr: ::core::option::Option<u64>,
13967}
13968#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13969pub struct KmallocNodeFtraceEvent {
13970    #[prost(uint64, optional, tag = "1")]
13971    pub bytes_alloc: ::core::option::Option<u64>,
13972    #[prost(uint64, optional, tag = "2")]
13973    pub bytes_req: ::core::option::Option<u64>,
13974    #[prost(uint64, optional, tag = "3")]
13975    pub call_site: ::core::option::Option<u64>,
13976    #[prost(uint32, optional, tag = "4")]
13977    pub gfp_flags: ::core::option::Option<u32>,
13978    #[prost(int32, optional, tag = "5")]
13979    pub node: ::core::option::Option<i32>,
13980    #[prost(uint64, optional, tag = "6")]
13981    pub ptr: ::core::option::Option<u64>,
13982}
13983#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13984pub struct KmemCacheAllocFtraceEvent {
13985    #[prost(uint64, optional, tag = "1")]
13986    pub bytes_alloc: ::core::option::Option<u64>,
13987    #[prost(uint64, optional, tag = "2")]
13988    pub bytes_req: ::core::option::Option<u64>,
13989    #[prost(uint64, optional, tag = "3")]
13990    pub call_site: ::core::option::Option<u64>,
13991    #[prost(uint32, optional, tag = "4")]
13992    pub gfp_flags: ::core::option::Option<u32>,
13993    #[prost(uint64, optional, tag = "5")]
13994    pub ptr: ::core::option::Option<u64>,
13995}
13996#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13997pub struct KmemCacheAllocNodeFtraceEvent {
13998    #[prost(uint64, optional, tag = "1")]
13999    pub bytes_alloc: ::core::option::Option<u64>,
14000    #[prost(uint64, optional, tag = "2")]
14001    pub bytes_req: ::core::option::Option<u64>,
14002    #[prost(uint64, optional, tag = "3")]
14003    pub call_site: ::core::option::Option<u64>,
14004    #[prost(uint32, optional, tag = "4")]
14005    pub gfp_flags: ::core::option::Option<u32>,
14006    #[prost(int32, optional, tag = "5")]
14007    pub node: ::core::option::Option<i32>,
14008    #[prost(uint64, optional, tag = "6")]
14009    pub ptr: ::core::option::Option<u64>,
14010}
14011#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14012pub struct KmemCacheFreeFtraceEvent {
14013    #[prost(uint64, optional, tag = "1")]
14014    pub call_site: ::core::option::Option<u64>,
14015    #[prost(uint64, optional, tag = "2")]
14016    pub ptr: ::core::option::Option<u64>,
14017}
14018#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14019pub struct MigratePagesEndFtraceEvent {
14020    #[prost(int32, optional, tag = "1")]
14021    pub mode: ::core::option::Option<i32>,
14022}
14023#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14024pub struct MigratePagesStartFtraceEvent {
14025    #[prost(int32, optional, tag = "1")]
14026    pub mode: ::core::option::Option<i32>,
14027}
14028#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14029pub struct MigrateRetryFtraceEvent {
14030    #[prost(int32, optional, tag = "1")]
14031    pub tries: ::core::option::Option<i32>,
14032}
14033#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14034pub struct MmPageAllocFtraceEvent {
14035    #[prost(uint32, optional, tag = "1")]
14036    pub gfp_flags: ::core::option::Option<u32>,
14037    #[prost(int32, optional, tag = "2")]
14038    pub migratetype: ::core::option::Option<i32>,
14039    #[prost(uint32, optional, tag = "3")]
14040    pub order: ::core::option::Option<u32>,
14041    #[prost(uint64, optional, tag = "4")]
14042    pub page: ::core::option::Option<u64>,
14043    #[prost(uint64, optional, tag = "5")]
14044    pub pfn: ::core::option::Option<u64>,
14045}
14046#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14047pub struct MmPageAllocExtfragFtraceEvent {
14048    #[prost(int32, optional, tag = "1")]
14049    pub alloc_migratetype: ::core::option::Option<i32>,
14050    #[prost(int32, optional, tag = "2")]
14051    pub alloc_order: ::core::option::Option<i32>,
14052    #[prost(int32, optional, tag = "3")]
14053    pub fallback_migratetype: ::core::option::Option<i32>,
14054    #[prost(int32, optional, tag = "4")]
14055    pub fallback_order: ::core::option::Option<i32>,
14056    #[prost(uint64, optional, tag = "5")]
14057    pub page: ::core::option::Option<u64>,
14058    #[prost(int32, optional, tag = "6")]
14059    pub change_ownership: ::core::option::Option<i32>,
14060    #[prost(uint64, optional, tag = "7")]
14061    pub pfn: ::core::option::Option<u64>,
14062}
14063#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14064pub struct MmPageAllocZoneLockedFtraceEvent {
14065    #[prost(int32, optional, tag = "1")]
14066    pub migratetype: ::core::option::Option<i32>,
14067    #[prost(uint32, optional, tag = "2")]
14068    pub order: ::core::option::Option<u32>,
14069    #[prost(uint64, optional, tag = "3")]
14070    pub page: ::core::option::Option<u64>,
14071    #[prost(uint64, optional, tag = "4")]
14072    pub pfn: ::core::option::Option<u64>,
14073}
14074#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14075pub struct MmPageFreeFtraceEvent {
14076    #[prost(uint32, optional, tag = "1")]
14077    pub order: ::core::option::Option<u32>,
14078    #[prost(uint64, optional, tag = "2")]
14079    pub page: ::core::option::Option<u64>,
14080    #[prost(uint64, optional, tag = "3")]
14081    pub pfn: ::core::option::Option<u64>,
14082}
14083#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14084pub struct MmPageFreeBatchedFtraceEvent {
14085    #[prost(int32, optional, tag = "1")]
14086    pub cold: ::core::option::Option<i32>,
14087    #[prost(uint64, optional, tag = "2")]
14088    pub page: ::core::option::Option<u64>,
14089    #[prost(uint64, optional, tag = "3")]
14090    pub pfn: ::core::option::Option<u64>,
14091}
14092#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14093pub struct MmPagePcpuDrainFtraceEvent {
14094    #[prost(int32, optional, tag = "1")]
14095    pub migratetype: ::core::option::Option<i32>,
14096    #[prost(uint32, optional, tag = "2")]
14097    pub order: ::core::option::Option<u32>,
14098    #[prost(uint64, optional, tag = "3")]
14099    pub page: ::core::option::Option<u64>,
14100    #[prost(uint64, optional, tag = "4")]
14101    pub pfn: ::core::option::Option<u64>,
14102}
14103#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14104pub struct RssStatFtraceEvent {
14105    #[prost(int32, optional, tag = "1")]
14106    pub member: ::core::option::Option<i32>,
14107    #[prost(int64, optional, tag = "2")]
14108    pub size: ::core::option::Option<i64>,
14109    #[prost(uint32, optional, tag = "3")]
14110    pub curr: ::core::option::Option<u32>,
14111    #[prost(uint32, optional, tag = "4")]
14112    pub mm_id: ::core::option::Option<u32>,
14113}
14114#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14115pub struct IonHeapShrinkFtraceEvent {
14116    #[prost(string, optional, tag = "1")]
14117    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14118    #[prost(uint64, optional, tag = "2")]
14119    pub len: ::core::option::Option<u64>,
14120    #[prost(int64, optional, tag = "3")]
14121    pub total_allocated: ::core::option::Option<i64>,
14122}
14123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14124pub struct IonHeapGrowFtraceEvent {
14125    #[prost(string, optional, tag = "1")]
14126    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14127    #[prost(uint64, optional, tag = "2")]
14128    pub len: ::core::option::Option<u64>,
14129    #[prost(int64, optional, tag = "3")]
14130    pub total_allocated: ::core::option::Option<i64>,
14131}
14132#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14133pub struct IonBufferCreateFtraceEvent {
14134    #[prost(uint64, optional, tag = "1")]
14135    pub addr: ::core::option::Option<u64>,
14136    #[prost(uint64, optional, tag = "2")]
14137    pub len: ::core::option::Option<u64>,
14138}
14139#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14140pub struct IonBufferDestroyFtraceEvent {
14141    #[prost(uint64, optional, tag = "1")]
14142    pub addr: ::core::option::Option<u64>,
14143    #[prost(uint64, optional, tag = "2")]
14144    pub len: ::core::option::Option<u64>,
14145}
14146#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14147pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
14148    #[prost(uint64, optional, tag = "1")]
14149    pub start: ::core::option::Option<u64>,
14150    #[prost(uint64, optional, tag = "2")]
14151    pub end: ::core::option::Option<u64>,
14152    #[prost(uint64, optional, tag = "3")]
14153    pub nr_migrated: ::core::option::Option<u64>,
14154    #[prost(uint64, optional, tag = "4")]
14155    pub nr_reclaimed: ::core::option::Option<u64>,
14156    #[prost(uint64, optional, tag = "5")]
14157    pub nr_mapped: ::core::option::Option<u64>,
14158    #[prost(int32, optional, tag = "6")]
14159    pub migratetype: ::core::option::Option<i32>,
14160}
14161#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14162pub struct DmabufRssStatFtraceEvent {
14163    #[prost(uint64, optional, tag = "1")]
14164    pub rss: ::core::option::Option<u64>,
14165    #[prost(int64, optional, tag = "2")]
14166    pub rss_delta: ::core::option::Option<i64>,
14167    #[prost(uint64, optional, tag = "3")]
14168    pub i_ino: ::core::option::Option<u64>,
14169}
14170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14171pub struct KvmAccessFaultFtraceEvent {
14172    #[prost(uint64, optional, tag = "1")]
14173    pub ipa: ::core::option::Option<u64>,
14174}
14175#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14176pub struct KvmAckIrqFtraceEvent {
14177    #[prost(uint32, optional, tag = "1")]
14178    pub irqchip: ::core::option::Option<u32>,
14179    #[prost(uint32, optional, tag = "2")]
14180    pub pin: ::core::option::Option<u32>,
14181}
14182#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14183pub struct KvmAgeHvaFtraceEvent {
14184    #[prost(uint64, optional, tag = "1")]
14185    pub end: ::core::option::Option<u64>,
14186    #[prost(uint64, optional, tag = "2")]
14187    pub start: ::core::option::Option<u64>,
14188}
14189#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14190pub struct KvmAgePageFtraceEvent {
14191    #[prost(uint64, optional, tag = "1")]
14192    pub gfn: ::core::option::Option<u64>,
14193    #[prost(uint64, optional, tag = "2")]
14194    pub hva: ::core::option::Option<u64>,
14195    #[prost(uint32, optional, tag = "3")]
14196    pub level: ::core::option::Option<u32>,
14197    #[prost(uint32, optional, tag = "4")]
14198    pub referenced: ::core::option::Option<u32>,
14199}
14200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14201pub struct KvmArmClearDebugFtraceEvent {
14202    #[prost(uint32, optional, tag = "1")]
14203    pub guest_debug: ::core::option::Option<u32>,
14204}
14205#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14206pub struct KvmArmSetDreg32FtraceEvent {
14207    #[prost(string, optional, tag = "1")]
14208    pub name: ::core::option::Option<::prost::alloc::string::String>,
14209    #[prost(uint32, optional, tag = "2")]
14210    pub value: ::core::option::Option<u32>,
14211}
14212#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14213pub struct KvmArmSetRegsetFtraceEvent {
14214    #[prost(int32, optional, tag = "1")]
14215    pub len: ::core::option::Option<i32>,
14216    #[prost(string, optional, tag = "2")]
14217    pub name: ::core::option::Option<::prost::alloc::string::String>,
14218}
14219#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14220pub struct KvmArmSetupDebugFtraceEvent {
14221    #[prost(uint32, optional, tag = "1")]
14222    pub guest_debug: ::core::option::Option<u32>,
14223    #[prost(uint64, optional, tag = "2")]
14224    pub vcpu: ::core::option::Option<u64>,
14225}
14226#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14227pub struct KvmEntryFtraceEvent {
14228    #[prost(uint64, optional, tag = "1")]
14229    pub vcpu_pc: ::core::option::Option<u64>,
14230}
14231#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14232pub struct KvmExitFtraceEvent {
14233    #[prost(uint32, optional, tag = "1")]
14234    pub esr_ec: ::core::option::Option<u32>,
14235    #[prost(int32, optional, tag = "2")]
14236    pub ret: ::core::option::Option<i32>,
14237    #[prost(uint64, optional, tag = "3")]
14238    pub vcpu_pc: ::core::option::Option<u64>,
14239}
14240#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14241pub struct KvmFpuFtraceEvent {
14242    #[prost(uint32, optional, tag = "1")]
14243    pub load: ::core::option::Option<u32>,
14244}
14245#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14246pub struct KvmGetTimerMapFtraceEvent {
14247    #[prost(int32, optional, tag = "1")]
14248    pub direct_ptimer: ::core::option::Option<i32>,
14249    #[prost(int32, optional, tag = "2")]
14250    pub direct_vtimer: ::core::option::Option<i32>,
14251    #[prost(int32, optional, tag = "3")]
14252    pub emul_ptimer: ::core::option::Option<i32>,
14253    #[prost(uint64, optional, tag = "4")]
14254    pub vcpu_id: ::core::option::Option<u64>,
14255}
14256#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14257pub struct KvmGuestFaultFtraceEvent {
14258    #[prost(uint64, optional, tag = "1")]
14259    pub hsr: ::core::option::Option<u64>,
14260    #[prost(uint64, optional, tag = "2")]
14261    pub hxfar: ::core::option::Option<u64>,
14262    #[prost(uint64, optional, tag = "3")]
14263    pub ipa: ::core::option::Option<u64>,
14264    #[prost(uint64, optional, tag = "4")]
14265    pub vcpu_pc: ::core::option::Option<u64>,
14266}
14267#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14268pub struct KvmHandleSysRegFtraceEvent {
14269    #[prost(uint64, optional, tag = "1")]
14270    pub hsr: ::core::option::Option<u64>,
14271}
14272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14273pub struct KvmHvcArm64FtraceEvent {
14274    #[prost(uint64, optional, tag = "1")]
14275    pub imm: ::core::option::Option<u64>,
14276    #[prost(uint64, optional, tag = "2")]
14277    pub r0: ::core::option::Option<u64>,
14278    #[prost(uint64, optional, tag = "3")]
14279    pub vcpu_pc: ::core::option::Option<u64>,
14280}
14281#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14282pub struct KvmIrqLineFtraceEvent {
14283    #[prost(int32, optional, tag = "1")]
14284    pub irq_num: ::core::option::Option<i32>,
14285    #[prost(int32, optional, tag = "2")]
14286    pub level: ::core::option::Option<i32>,
14287    #[prost(uint32, optional, tag = "3")]
14288    pub r#type: ::core::option::Option<u32>,
14289    #[prost(int32, optional, tag = "4")]
14290    pub vcpu_idx: ::core::option::Option<i32>,
14291}
14292#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14293pub struct KvmMmioFtraceEvent {
14294    #[prost(uint64, optional, tag = "1")]
14295    pub gpa: ::core::option::Option<u64>,
14296    #[prost(uint32, optional, tag = "2")]
14297    pub len: ::core::option::Option<u32>,
14298    #[prost(uint32, optional, tag = "3")]
14299    pub r#type: ::core::option::Option<u32>,
14300    #[prost(uint64, optional, tag = "4")]
14301    pub val: ::core::option::Option<u64>,
14302}
14303#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14304pub struct KvmMmioEmulateFtraceEvent {
14305    #[prost(uint64, optional, tag = "1")]
14306    pub cpsr: ::core::option::Option<u64>,
14307    #[prost(uint64, optional, tag = "2")]
14308    pub instr: ::core::option::Option<u64>,
14309    #[prost(uint64, optional, tag = "3")]
14310    pub vcpu_pc: ::core::option::Option<u64>,
14311}
14312#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14313pub struct KvmSetGuestDebugFtraceEvent {
14314    #[prost(uint32, optional, tag = "1")]
14315    pub guest_debug: ::core::option::Option<u32>,
14316    #[prost(uint64, optional, tag = "2")]
14317    pub vcpu: ::core::option::Option<u64>,
14318}
14319#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14320pub struct KvmSetIrqFtraceEvent {
14321    #[prost(uint32, optional, tag = "1")]
14322    pub gsi: ::core::option::Option<u32>,
14323    #[prost(int32, optional, tag = "2")]
14324    pub irq_source_id: ::core::option::Option<i32>,
14325    #[prost(int32, optional, tag = "3")]
14326    pub level: ::core::option::Option<i32>,
14327}
14328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14329pub struct KvmSetSpteHvaFtraceEvent {
14330    #[prost(uint64, optional, tag = "1")]
14331    pub hva: ::core::option::Option<u64>,
14332}
14333#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14334pub struct KvmSetWayFlushFtraceEvent {
14335    #[prost(uint32, optional, tag = "1")]
14336    pub cache: ::core::option::Option<u32>,
14337    #[prost(uint64, optional, tag = "2")]
14338    pub vcpu_pc: ::core::option::Option<u64>,
14339}
14340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14341pub struct KvmSysAccessFtraceEvent {
14342    #[prost(uint32, optional, tag = "1")]
14343    pub c_rm: ::core::option::Option<u32>,
14344    #[prost(uint32, optional, tag = "2")]
14345    pub c_rn: ::core::option::Option<u32>,
14346    #[prost(uint32, optional, tag = "3")]
14347    pub op0: ::core::option::Option<u32>,
14348    #[prost(uint32, optional, tag = "4")]
14349    pub op1: ::core::option::Option<u32>,
14350    #[prost(uint32, optional, tag = "5")]
14351    pub op2: ::core::option::Option<u32>,
14352    #[prost(uint32, optional, tag = "6")]
14353    pub is_write: ::core::option::Option<u32>,
14354    #[prost(string, optional, tag = "7")]
14355    pub name: ::core::option::Option<::prost::alloc::string::String>,
14356    #[prost(uint64, optional, tag = "8")]
14357    pub vcpu_pc: ::core::option::Option<u64>,
14358}
14359#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14360pub struct KvmTestAgeHvaFtraceEvent {
14361    #[prost(uint64, optional, tag = "1")]
14362    pub hva: ::core::option::Option<u64>,
14363}
14364#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14365pub struct KvmTimerEmulateFtraceEvent {
14366    #[prost(uint32, optional, tag = "1")]
14367    pub should_fire: ::core::option::Option<u32>,
14368    #[prost(int32, optional, tag = "2")]
14369    pub timer_idx: ::core::option::Option<i32>,
14370}
14371#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14372pub struct KvmTimerHrtimerExpireFtraceEvent {
14373    #[prost(int32, optional, tag = "1")]
14374    pub timer_idx: ::core::option::Option<i32>,
14375}
14376#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14377pub struct KvmTimerRestoreStateFtraceEvent {
14378    #[prost(uint64, optional, tag = "1")]
14379    pub ctl: ::core::option::Option<u64>,
14380    #[prost(uint64, optional, tag = "2")]
14381    pub cval: ::core::option::Option<u64>,
14382    #[prost(int32, optional, tag = "3")]
14383    pub timer_idx: ::core::option::Option<i32>,
14384}
14385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14386pub struct KvmTimerSaveStateFtraceEvent {
14387    #[prost(uint64, optional, tag = "1")]
14388    pub ctl: ::core::option::Option<u64>,
14389    #[prost(uint64, optional, tag = "2")]
14390    pub cval: ::core::option::Option<u64>,
14391    #[prost(int32, optional, tag = "3")]
14392    pub timer_idx: ::core::option::Option<i32>,
14393}
14394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14395pub struct KvmTimerUpdateIrqFtraceEvent {
14396    #[prost(uint32, optional, tag = "1")]
14397    pub irq: ::core::option::Option<u32>,
14398    #[prost(int32, optional, tag = "2")]
14399    pub level: ::core::option::Option<i32>,
14400    #[prost(uint64, optional, tag = "3")]
14401    pub vcpu_id: ::core::option::Option<u64>,
14402}
14403#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14404pub struct KvmToggleCacheFtraceEvent {
14405    #[prost(uint32, optional, tag = "1")]
14406    pub now: ::core::option::Option<u32>,
14407    #[prost(uint64, optional, tag = "2")]
14408    pub vcpu_pc: ::core::option::Option<u64>,
14409    #[prost(uint32, optional, tag = "3")]
14410    pub was: ::core::option::Option<u32>,
14411}
14412#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14413pub struct KvmUnmapHvaRangeFtraceEvent {
14414    #[prost(uint64, optional, tag = "1")]
14415    pub end: ::core::option::Option<u64>,
14416    #[prost(uint64, optional, tag = "2")]
14417    pub start: ::core::option::Option<u64>,
14418}
14419#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14420pub struct KvmUserspaceExitFtraceEvent {
14421    #[prost(uint32, optional, tag = "1")]
14422    pub reason: ::core::option::Option<u32>,
14423}
14424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14425pub struct KvmVcpuWakeupFtraceEvent {
14426    #[prost(uint64, optional, tag = "1")]
14427    pub ns: ::core::option::Option<u64>,
14428    #[prost(uint32, optional, tag = "2")]
14429    pub valid: ::core::option::Option<u32>,
14430    #[prost(uint32, optional, tag = "3")]
14431    pub waited: ::core::option::Option<u32>,
14432}
14433#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14434pub struct KvmWfxArm64FtraceEvent {
14435    #[prost(uint32, optional, tag = "1")]
14436    pub is_wfe: ::core::option::Option<u32>,
14437    #[prost(uint64, optional, tag = "2")]
14438    pub vcpu_pc: ::core::option::Option<u64>,
14439}
14440#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14441pub struct TrapRegFtraceEvent {
14442    #[prost(string, optional, tag = "1")]
14443    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14444    #[prost(uint32, optional, tag = "2")]
14445    pub is_write: ::core::option::Option<u32>,
14446    #[prost(int32, optional, tag = "3")]
14447    pub reg: ::core::option::Option<i32>,
14448    #[prost(uint64, optional, tag = "4")]
14449    pub write_value: ::core::option::Option<u64>,
14450}
14451#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14452pub struct VgicUpdateIrqPendingFtraceEvent {
14453    #[prost(uint32, optional, tag = "1")]
14454    pub irq: ::core::option::Option<u32>,
14455    #[prost(uint32, optional, tag = "2")]
14456    pub level: ::core::option::Option<u32>,
14457    #[prost(uint64, optional, tag = "3")]
14458    pub vcpu_id: ::core::option::Option<u64>,
14459}
14460#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14461pub struct LowmemoryKillFtraceEvent {
14462    #[prost(string, optional, tag = "1")]
14463    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14464    #[prost(int32, optional, tag = "2")]
14465    pub pid: ::core::option::Option<i32>,
14466    #[prost(int64, optional, tag = "3")]
14467    pub pagecache_size: ::core::option::Option<i64>,
14468    #[prost(int64, optional, tag = "4")]
14469    pub pagecache_limit: ::core::option::Option<i64>,
14470    #[prost(int64, optional, tag = "5")]
14471    pub free: ::core::option::Option<i64>,
14472}
14473#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14474pub struct LwisTracingMarkWriteFtraceEvent {
14475    #[prost(string, optional, tag = "1")]
14476    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14477    #[prost(uint32, optional, tag = "2")]
14478    pub r#type: ::core::option::Option<u32>,
14479    #[prost(int32, optional, tag = "3")]
14480    pub pid: ::core::option::Option<i32>,
14481    #[prost(string, optional, tag = "4")]
14482    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14483    #[prost(int64, optional, tag = "5")]
14484    pub value: ::core::option::Option<i64>,
14485}
14486#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14487pub struct MaliTracingMarkWriteFtraceEvent {
14488    #[prost(string, optional, tag = "1")]
14489    pub name: ::core::option::Option<::prost::alloc::string::String>,
14490    #[prost(int32, optional, tag = "2")]
14491    pub pid: ::core::option::Option<i32>,
14492    #[prost(uint32, optional, tag = "3")]
14493    pub r#type: ::core::option::Option<u32>,
14494    #[prost(int32, optional, tag = "4")]
14495    pub value: ::core::option::Option<i32>,
14496}
14497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14498pub struct MaliMaliKcpucqssetFtraceEvent {
14499    #[prost(uint32, optional, tag = "1")]
14500    pub id: ::core::option::Option<u32>,
14501    #[prost(uint64, optional, tag = "2")]
14502    pub info_val1: ::core::option::Option<u64>,
14503    #[prost(uint64, optional, tag = "3")]
14504    pub info_val2: ::core::option::Option<u64>,
14505    #[prost(uint32, optional, tag = "4")]
14506    pub kctx_id: ::core::option::Option<u32>,
14507    #[prost(int32, optional, tag = "5")]
14508    pub kctx_tgid: ::core::option::Option<i32>,
14509}
14510#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14511pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14512    #[prost(uint32, optional, tag = "1")]
14513    pub id: ::core::option::Option<u32>,
14514    #[prost(uint64, optional, tag = "2")]
14515    pub info_val1: ::core::option::Option<u64>,
14516    #[prost(uint64, optional, tag = "3")]
14517    pub info_val2: ::core::option::Option<u64>,
14518    #[prost(uint32, optional, tag = "4")]
14519    pub kctx_id: ::core::option::Option<u32>,
14520    #[prost(int32, optional, tag = "5")]
14521    pub kctx_tgid: ::core::option::Option<i32>,
14522}
14523#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14524pub struct MaliMaliKcpucqswaitendFtraceEvent {
14525    #[prost(uint32, optional, tag = "1")]
14526    pub id: ::core::option::Option<u32>,
14527    #[prost(uint64, optional, tag = "2")]
14528    pub info_val1: ::core::option::Option<u64>,
14529    #[prost(uint64, optional, tag = "3")]
14530    pub info_val2: ::core::option::Option<u64>,
14531    #[prost(uint32, optional, tag = "4")]
14532    pub kctx_id: ::core::option::Option<u32>,
14533    #[prost(int32, optional, tag = "5")]
14534    pub kctx_tgid: ::core::option::Option<i32>,
14535}
14536#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14537pub struct MaliMaliKcpufencesignalFtraceEvent {
14538    #[prost(uint64, optional, tag = "1")]
14539    pub info_val1: ::core::option::Option<u64>,
14540    #[prost(uint64, optional, tag = "2")]
14541    pub info_val2: ::core::option::Option<u64>,
14542    #[prost(int32, optional, tag = "3")]
14543    pub kctx_tgid: ::core::option::Option<i32>,
14544    #[prost(uint32, optional, tag = "4")]
14545    pub kctx_id: ::core::option::Option<u32>,
14546    #[prost(uint32, optional, tag = "5")]
14547    pub id: ::core::option::Option<u32>,
14548}
14549#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14550pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14551    #[prost(uint64, optional, tag = "1")]
14552    pub info_val1: ::core::option::Option<u64>,
14553    #[prost(uint64, optional, tag = "2")]
14554    pub info_val2: ::core::option::Option<u64>,
14555    #[prost(int32, optional, tag = "3")]
14556    pub kctx_tgid: ::core::option::Option<i32>,
14557    #[prost(uint32, optional, tag = "4")]
14558    pub kctx_id: ::core::option::Option<u32>,
14559    #[prost(uint32, optional, tag = "5")]
14560    pub id: ::core::option::Option<u32>,
14561}
14562#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14563pub struct MaliMaliKcpufencewaitendFtraceEvent {
14564    #[prost(uint64, optional, tag = "1")]
14565    pub info_val1: ::core::option::Option<u64>,
14566    #[prost(uint64, optional, tag = "2")]
14567    pub info_val2: ::core::option::Option<u64>,
14568    #[prost(int32, optional, tag = "3")]
14569    pub kctx_tgid: ::core::option::Option<i32>,
14570    #[prost(uint32, optional, tag = "4")]
14571    pub kctx_id: ::core::option::Option<u32>,
14572    #[prost(uint32, optional, tag = "5")]
14573    pub id: ::core::option::Option<u32>,
14574}
14575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14576pub struct MaliMaliCsfinterruptstartFtraceEvent {
14577    #[prost(int32, optional, tag = "1")]
14578    pub kctx_tgid: ::core::option::Option<i32>,
14579    #[prost(uint32, optional, tag = "2")]
14580    pub kctx_id: ::core::option::Option<u32>,
14581    #[prost(uint64, optional, tag = "3")]
14582    pub info_val: ::core::option::Option<u64>,
14583}
14584#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14585pub struct MaliMaliCsfinterruptendFtraceEvent {
14586    #[prost(int32, optional, tag = "1")]
14587    pub kctx_tgid: ::core::option::Option<i32>,
14588    #[prost(uint32, optional, tag = "2")]
14589    pub kctx_id: ::core::option::Option<u32>,
14590    #[prost(uint64, optional, tag = "3")]
14591    pub info_val: ::core::option::Option<u64>,
14592}
14593#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14594pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14595    #[prost(int32, optional, tag = "1")]
14596    pub kctx_tgid: ::core::option::Option<i32>,
14597    #[prost(uint32, optional, tag = "2")]
14598    pub kctx_id: ::core::option::Option<u32>,
14599    #[prost(uint64, optional, tag = "3")]
14600    pub info_val: ::core::option::Option<u64>,
14601}
14602#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14603pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14604    #[prost(int32, optional, tag = "1")]
14605    pub kctx_tgid: ::core::option::Option<i32>,
14606    #[prost(uint32, optional, tag = "2")]
14607    pub kctx_id: ::core::option::Option<u32>,
14608    #[prost(uint64, optional, tag = "3")]
14609    pub info_val: ::core::option::Option<u64>,
14610}
14611#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14612pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14613    #[prost(int32, optional, tag = "1")]
14614    pub kctx_tgid: ::core::option::Option<i32>,
14615    #[prost(uint32, optional, tag = "2")]
14616    pub kctx_id: ::core::option::Option<u32>,
14617    #[prost(uint64, optional, tag = "3")]
14618    pub info_val: ::core::option::Option<u64>,
14619}
14620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14621pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14622    #[prost(int32, optional, tag = "1")]
14623    pub kctx_tgid: ::core::option::Option<i32>,
14624    #[prost(uint32, optional, tag = "2")]
14625    pub kctx_id: ::core::option::Option<u32>,
14626    #[prost(uint64, optional, tag = "3")]
14627    pub info_val: ::core::option::Option<u64>,
14628}
14629#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14630pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14631    #[prost(int32, optional, tag = "1")]
14632    pub kctx_tgid: ::core::option::Option<i32>,
14633    #[prost(uint32, optional, tag = "2")]
14634    pub kctx_id: ::core::option::Option<u32>,
14635    #[prost(uint64, optional, tag = "3")]
14636    pub info_val: ::core::option::Option<u64>,
14637}
14638#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14639pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14640    #[prost(int32, optional, tag = "1")]
14641    pub kctx_tgid: ::core::option::Option<i32>,
14642    #[prost(uint32, optional, tag = "2")]
14643    pub kctx_id: ::core::option::Option<u32>,
14644    #[prost(uint64, optional, tag = "3")]
14645    pub info_val: ::core::option::Option<u64>,
14646}
14647#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14648pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14649    #[prost(int32, optional, tag = "1")]
14650    pub kctx_tgid: ::core::option::Option<i32>,
14651    #[prost(uint32, optional, tag = "2")]
14652    pub kctx_id: ::core::option::Option<u32>,
14653    #[prost(uint64, optional, tag = "3")]
14654    pub info_val: ::core::option::Option<u64>,
14655}
14656#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14657pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14658    #[prost(int32, optional, tag = "1")]
14659    pub kctx_tgid: ::core::option::Option<i32>,
14660    #[prost(uint32, optional, tag = "2")]
14661    pub kctx_id: ::core::option::Option<u32>,
14662    #[prost(uint64, optional, tag = "3")]
14663    pub info_val: ::core::option::Option<u64>,
14664}
14665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14666pub struct MaliMaliPmmcuinsleepFtraceEvent {
14667    #[prost(int32, optional, tag = "1")]
14668    pub kctx_tgid: ::core::option::Option<i32>,
14669    #[prost(uint32, optional, tag = "2")]
14670    pub kctx_id: ::core::option::Option<u32>,
14671    #[prost(uint64, optional, tag = "3")]
14672    pub info_val: ::core::option::Option<u64>,
14673}
14674#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14675pub struct MaliMaliPmmcuoffFtraceEvent {
14676    #[prost(int32, optional, tag = "1")]
14677    pub kctx_tgid: ::core::option::Option<i32>,
14678    #[prost(uint32, optional, tag = "2")]
14679    pub kctx_id: ::core::option::Option<u32>,
14680    #[prost(uint64, optional, tag = "3")]
14681    pub info_val: ::core::option::Option<u64>,
14682}
14683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14684pub struct MaliMaliPmmcuonFtraceEvent {
14685    #[prost(int32, optional, tag = "1")]
14686    pub kctx_tgid: ::core::option::Option<i32>,
14687    #[prost(uint32, optional, tag = "2")]
14688    pub kctx_id: ::core::option::Option<u32>,
14689    #[prost(uint64, optional, tag = "3")]
14690    pub info_val: ::core::option::Option<u64>,
14691}
14692#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14693pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14694    #[prost(int32, optional, tag = "1")]
14695    pub kctx_tgid: ::core::option::Option<i32>,
14696    #[prost(uint32, optional, tag = "2")]
14697    pub kctx_id: ::core::option::Option<u32>,
14698    #[prost(uint64, optional, tag = "3")]
14699    pub info_val: ::core::option::Option<u64>,
14700}
14701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14702pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14703    #[prost(int32, optional, tag = "1")]
14704    pub kctx_tgid: ::core::option::Option<i32>,
14705    #[prost(uint32, optional, tag = "2")]
14706    pub kctx_id: ::core::option::Option<u32>,
14707    #[prost(uint64, optional, tag = "3")]
14708    pub info_val: ::core::option::Option<u64>,
14709}
14710#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14711pub struct MaliMaliPmmcuonhaltFtraceEvent {
14712    #[prost(int32, optional, tag = "1")]
14713    pub kctx_tgid: ::core::option::Option<i32>,
14714    #[prost(uint32, optional, tag = "2")]
14715    pub kctx_id: ::core::option::Option<u32>,
14716    #[prost(uint64, optional, tag = "3")]
14717    pub info_val: ::core::option::Option<u64>,
14718}
14719#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14720pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14721    #[prost(int32, optional, tag = "1")]
14722    pub kctx_tgid: ::core::option::Option<i32>,
14723    #[prost(uint32, optional, tag = "2")]
14724    pub kctx_id: ::core::option::Option<u32>,
14725    #[prost(uint64, optional, tag = "3")]
14726    pub info_val: ::core::option::Option<u64>,
14727}
14728#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14729pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14730    #[prost(int32, optional, tag = "1")]
14731    pub kctx_tgid: ::core::option::Option<i32>,
14732    #[prost(uint32, optional, tag = "2")]
14733    pub kctx_id: ::core::option::Option<u32>,
14734    #[prost(uint64, optional, tag = "3")]
14735    pub info_val: ::core::option::Option<u64>,
14736}
14737#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14738pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14739    #[prost(int32, optional, tag = "1")]
14740    pub kctx_tgid: ::core::option::Option<i32>,
14741    #[prost(uint32, optional, tag = "2")]
14742    pub kctx_id: ::core::option::Option<u32>,
14743    #[prost(uint64, optional, tag = "3")]
14744    pub info_val: ::core::option::Option<u64>,
14745}
14746#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14747pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14748    #[prost(int32, optional, tag = "1")]
14749    pub kctx_tgid: ::core::option::Option<i32>,
14750    #[prost(uint32, optional, tag = "2")]
14751    pub kctx_id: ::core::option::Option<u32>,
14752    #[prost(uint64, optional, tag = "3")]
14753    pub info_val: ::core::option::Option<u64>,
14754}
14755#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14756pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14757    #[prost(int32, optional, tag = "1")]
14758    pub kctx_tgid: ::core::option::Option<i32>,
14759    #[prost(uint32, optional, tag = "2")]
14760    pub kctx_id: ::core::option::Option<u32>,
14761    #[prost(uint64, optional, tag = "3")]
14762    pub info_val: ::core::option::Option<u64>,
14763}
14764#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14765pub struct MaliMaliPmmcupendoffFtraceEvent {
14766    #[prost(int32, optional, tag = "1")]
14767    pub kctx_tgid: ::core::option::Option<i32>,
14768    #[prost(uint32, optional, tag = "2")]
14769    pub kctx_id: ::core::option::Option<u32>,
14770    #[prost(uint64, optional, tag = "3")]
14771    pub info_val: ::core::option::Option<u64>,
14772}
14773#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14774pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14775    #[prost(int32, optional, tag = "1")]
14776    pub kctx_tgid: ::core::option::Option<i32>,
14777    #[prost(uint32, optional, tag = "2")]
14778    pub kctx_id: ::core::option::Option<u32>,
14779    #[prost(uint64, optional, tag = "3")]
14780    pub info_val: ::core::option::Option<u64>,
14781}
14782#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14783pub struct MaliMaliPmmcupowerdownFtraceEvent {
14784    #[prost(int32, optional, tag = "1")]
14785    pub kctx_tgid: ::core::option::Option<i32>,
14786    #[prost(uint32, optional, tag = "2")]
14787    pub kctx_id: ::core::option::Option<u32>,
14788    #[prost(uint64, optional, tag = "3")]
14789    pub info_val: ::core::option::Option<u64>,
14790}
14791#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14792pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14793    #[prost(int32, optional, tag = "1")]
14794    pub kctx_tgid: ::core::option::Option<i32>,
14795    #[prost(uint32, optional, tag = "2")]
14796    pub kctx_id: ::core::option::Option<u32>,
14797    #[prost(uint64, optional, tag = "3")]
14798    pub info_val: ::core::option::Option<u64>,
14799}
14800#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14801pub struct MaliGpuPowerStateFtraceEvent {
14802    #[prost(uint64, optional, tag = "1")]
14803    pub change_ns: ::core::option::Option<u64>,
14804    #[prost(int32, optional, tag = "2")]
14805    pub from_state: ::core::option::Option<i32>,
14806    #[prost(int32, optional, tag = "3")]
14807    pub to_state: ::core::option::Option<i32>,
14808}
14809#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14810pub struct MdpCmdKickoffFtraceEvent {
14811    #[prost(uint32, optional, tag = "1")]
14812    pub ctl_num: ::core::option::Option<u32>,
14813    #[prost(int32, optional, tag = "2")]
14814    pub kickoff_cnt: ::core::option::Option<i32>,
14815}
14816#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14817pub struct MdpCommitFtraceEvent {
14818    #[prost(uint32, optional, tag = "1")]
14819    pub num: ::core::option::Option<u32>,
14820    #[prost(uint32, optional, tag = "2")]
14821    pub play_cnt: ::core::option::Option<u32>,
14822    #[prost(uint32, optional, tag = "3")]
14823    pub clk_rate: ::core::option::Option<u32>,
14824    #[prost(uint64, optional, tag = "4")]
14825    pub bandwidth: ::core::option::Option<u64>,
14826}
14827#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14828pub struct MdpPerfSetOtFtraceEvent {
14829    #[prost(uint32, optional, tag = "1")]
14830    pub pnum: ::core::option::Option<u32>,
14831    #[prost(uint32, optional, tag = "2")]
14832    pub xin_id: ::core::option::Option<u32>,
14833    #[prost(uint32, optional, tag = "3")]
14834    pub rd_lim: ::core::option::Option<u32>,
14835    #[prost(uint32, optional, tag = "4")]
14836    pub is_vbif_rt: ::core::option::Option<u32>,
14837}
14838#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14839pub struct MdpSsppChangeFtraceEvent {
14840    #[prost(uint32, optional, tag = "1")]
14841    pub num: ::core::option::Option<u32>,
14842    #[prost(uint32, optional, tag = "2")]
14843    pub play_cnt: ::core::option::Option<u32>,
14844    #[prost(uint32, optional, tag = "3")]
14845    pub mixer: ::core::option::Option<u32>,
14846    #[prost(uint32, optional, tag = "4")]
14847    pub stage: ::core::option::Option<u32>,
14848    #[prost(uint32, optional, tag = "5")]
14849    pub flags: ::core::option::Option<u32>,
14850    #[prost(uint32, optional, tag = "6")]
14851    pub format: ::core::option::Option<u32>,
14852    #[prost(uint32, optional, tag = "7")]
14853    pub img_w: ::core::option::Option<u32>,
14854    #[prost(uint32, optional, tag = "8")]
14855    pub img_h: ::core::option::Option<u32>,
14856    #[prost(uint32, optional, tag = "9")]
14857    pub src_x: ::core::option::Option<u32>,
14858    #[prost(uint32, optional, tag = "10")]
14859    pub src_y: ::core::option::Option<u32>,
14860    #[prost(uint32, optional, tag = "11")]
14861    pub src_w: ::core::option::Option<u32>,
14862    #[prost(uint32, optional, tag = "12")]
14863    pub src_h: ::core::option::Option<u32>,
14864    #[prost(uint32, optional, tag = "13")]
14865    pub dst_x: ::core::option::Option<u32>,
14866    #[prost(uint32, optional, tag = "14")]
14867    pub dst_y: ::core::option::Option<u32>,
14868    #[prost(uint32, optional, tag = "15")]
14869    pub dst_w: ::core::option::Option<u32>,
14870    #[prost(uint32, optional, tag = "16")]
14871    pub dst_h: ::core::option::Option<u32>,
14872}
14873#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14874pub struct TracingMarkWriteFtraceEvent {
14875    #[prost(int32, optional, tag = "1")]
14876    pub pid: ::core::option::Option<i32>,
14877    #[prost(string, optional, tag = "2")]
14878    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14879    #[prost(uint32, optional, tag = "3")]
14880    pub trace_begin: ::core::option::Option<u32>,
14881}
14882#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14883pub struct MdpCmdPingpongDoneFtraceEvent {
14884    #[prost(uint32, optional, tag = "1")]
14885    pub ctl_num: ::core::option::Option<u32>,
14886    #[prost(uint32, optional, tag = "2")]
14887    pub intf_num: ::core::option::Option<u32>,
14888    #[prost(uint32, optional, tag = "3")]
14889    pub pp_num: ::core::option::Option<u32>,
14890    #[prost(int32, optional, tag = "4")]
14891    pub koff_cnt: ::core::option::Option<i32>,
14892}
14893#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14894pub struct MdpCompareBwFtraceEvent {
14895    #[prost(uint64, optional, tag = "1")]
14896    pub new_ab: ::core::option::Option<u64>,
14897    #[prost(uint64, optional, tag = "2")]
14898    pub new_ib: ::core::option::Option<u64>,
14899    #[prost(uint64, optional, tag = "3")]
14900    pub new_wb: ::core::option::Option<u64>,
14901    #[prost(uint64, optional, tag = "4")]
14902    pub old_ab: ::core::option::Option<u64>,
14903    #[prost(uint64, optional, tag = "5")]
14904    pub old_ib: ::core::option::Option<u64>,
14905    #[prost(uint64, optional, tag = "6")]
14906    pub old_wb: ::core::option::Option<u64>,
14907    #[prost(uint32, optional, tag = "7")]
14908    pub params_changed: ::core::option::Option<u32>,
14909    #[prost(uint32, optional, tag = "8")]
14910    pub update_bw: ::core::option::Option<u32>,
14911}
14912#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14913pub struct MdpPerfSetPanicLutsFtraceEvent {
14914    #[prost(uint32, optional, tag = "1")]
14915    pub pnum: ::core::option::Option<u32>,
14916    #[prost(uint32, optional, tag = "2")]
14917    pub fmt: ::core::option::Option<u32>,
14918    #[prost(uint32, optional, tag = "3")]
14919    pub mode: ::core::option::Option<u32>,
14920    #[prost(uint32, optional, tag = "4")]
14921    pub panic_lut: ::core::option::Option<u32>,
14922    #[prost(uint32, optional, tag = "5")]
14923    pub robust_lut: ::core::option::Option<u32>,
14924}
14925#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14926pub struct MdpSsppSetFtraceEvent {
14927    #[prost(uint32, optional, tag = "1")]
14928    pub num: ::core::option::Option<u32>,
14929    #[prost(uint32, optional, tag = "2")]
14930    pub play_cnt: ::core::option::Option<u32>,
14931    #[prost(uint32, optional, tag = "3")]
14932    pub mixer: ::core::option::Option<u32>,
14933    #[prost(uint32, optional, tag = "4")]
14934    pub stage: ::core::option::Option<u32>,
14935    #[prost(uint32, optional, tag = "5")]
14936    pub flags: ::core::option::Option<u32>,
14937    #[prost(uint32, optional, tag = "6")]
14938    pub format: ::core::option::Option<u32>,
14939    #[prost(uint32, optional, tag = "7")]
14940    pub img_w: ::core::option::Option<u32>,
14941    #[prost(uint32, optional, tag = "8")]
14942    pub img_h: ::core::option::Option<u32>,
14943    #[prost(uint32, optional, tag = "9")]
14944    pub src_x: ::core::option::Option<u32>,
14945    #[prost(uint32, optional, tag = "10")]
14946    pub src_y: ::core::option::Option<u32>,
14947    #[prost(uint32, optional, tag = "11")]
14948    pub src_w: ::core::option::Option<u32>,
14949    #[prost(uint32, optional, tag = "12")]
14950    pub src_h: ::core::option::Option<u32>,
14951    #[prost(uint32, optional, tag = "13")]
14952    pub dst_x: ::core::option::Option<u32>,
14953    #[prost(uint32, optional, tag = "14")]
14954    pub dst_y: ::core::option::Option<u32>,
14955    #[prost(uint32, optional, tag = "15")]
14956    pub dst_w: ::core::option::Option<u32>,
14957    #[prost(uint32, optional, tag = "16")]
14958    pub dst_h: ::core::option::Option<u32>,
14959}
14960#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14961pub struct MdpCmdReadptrDoneFtraceEvent {
14962    #[prost(uint32, optional, tag = "1")]
14963    pub ctl_num: ::core::option::Option<u32>,
14964    #[prost(int32, optional, tag = "2")]
14965    pub koff_cnt: ::core::option::Option<i32>,
14966}
14967#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14968pub struct MdpMisrCrcFtraceEvent {
14969    #[prost(uint32, optional, tag = "1")]
14970    pub block_id: ::core::option::Option<u32>,
14971    #[prost(uint32, optional, tag = "2")]
14972    pub vsync_cnt: ::core::option::Option<u32>,
14973    #[prost(uint32, optional, tag = "3")]
14974    pub crc: ::core::option::Option<u32>,
14975}
14976#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14977pub struct MdpPerfSetQosLutsFtraceEvent {
14978    #[prost(uint32, optional, tag = "1")]
14979    pub pnum: ::core::option::Option<u32>,
14980    #[prost(uint32, optional, tag = "2")]
14981    pub fmt: ::core::option::Option<u32>,
14982    #[prost(uint32, optional, tag = "3")]
14983    pub intf: ::core::option::Option<u32>,
14984    #[prost(uint32, optional, tag = "4")]
14985    pub rot: ::core::option::Option<u32>,
14986    #[prost(uint32, optional, tag = "5")]
14987    pub fl: ::core::option::Option<u32>,
14988    #[prost(uint32, optional, tag = "6")]
14989    pub lut: ::core::option::Option<u32>,
14990    #[prost(uint32, optional, tag = "7")]
14991    pub linear: ::core::option::Option<u32>,
14992}
14993#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14994pub struct MdpTraceCounterFtraceEvent {
14995    #[prost(int32, optional, tag = "1")]
14996    pub pid: ::core::option::Option<i32>,
14997    #[prost(string, optional, tag = "2")]
14998    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
14999    #[prost(int32, optional, tag = "3")]
15000    pub value: ::core::option::Option<i32>,
15001}
15002#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15003pub struct MdpCmdReleaseBwFtraceEvent {
15004    #[prost(uint32, optional, tag = "1")]
15005    pub ctl_num: ::core::option::Option<u32>,
15006}
15007#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15008pub struct MdpMixerUpdateFtraceEvent {
15009    #[prost(uint32, optional, tag = "1")]
15010    pub mixer_num: ::core::option::Option<u32>,
15011}
15012#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15013pub struct MdpPerfSetWmLevelsFtraceEvent {
15014    #[prost(uint32, optional, tag = "1")]
15015    pub pnum: ::core::option::Option<u32>,
15016    #[prost(uint32, optional, tag = "2")]
15017    pub use_space: ::core::option::Option<u32>,
15018    #[prost(uint32, optional, tag = "3")]
15019    pub priority_bytes: ::core::option::Option<u32>,
15020    #[prost(uint32, optional, tag = "4")]
15021    pub wm0: ::core::option::Option<u32>,
15022    #[prost(uint32, optional, tag = "5")]
15023    pub wm1: ::core::option::Option<u32>,
15024    #[prost(uint32, optional, tag = "6")]
15025    pub wm2: ::core::option::Option<u32>,
15026    #[prost(uint32, optional, tag = "7")]
15027    pub mb_cnt: ::core::option::Option<u32>,
15028    #[prost(uint32, optional, tag = "8")]
15029    pub mb_size: ::core::option::Option<u32>,
15030}
15031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15032pub struct MdpVideoUnderrunDoneFtraceEvent {
15033    #[prost(uint32, optional, tag = "1")]
15034    pub ctl_num: ::core::option::Option<u32>,
15035    #[prost(uint32, optional, tag = "2")]
15036    pub underrun_cnt: ::core::option::Option<u32>,
15037}
15038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15039pub struct MdpCmdWaitPingpongFtraceEvent {
15040    #[prost(uint32, optional, tag = "1")]
15041    pub ctl_num: ::core::option::Option<u32>,
15042    #[prost(int32, optional, tag = "2")]
15043    pub kickoff_cnt: ::core::option::Option<i32>,
15044}
15045#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15046pub struct MdpPerfPrefillCalcFtraceEvent {
15047    #[prost(uint32, optional, tag = "1")]
15048    pub pnum: ::core::option::Option<u32>,
15049    #[prost(uint32, optional, tag = "2")]
15050    pub latency_buf: ::core::option::Option<u32>,
15051    #[prost(uint32, optional, tag = "3")]
15052    pub ot: ::core::option::Option<u32>,
15053    #[prost(uint32, optional, tag = "4")]
15054    pub y_buf: ::core::option::Option<u32>,
15055    #[prost(uint32, optional, tag = "5")]
15056    pub y_scaler: ::core::option::Option<u32>,
15057    #[prost(uint32, optional, tag = "6")]
15058    pub pp_lines: ::core::option::Option<u32>,
15059    #[prost(uint32, optional, tag = "7")]
15060    pub pp_bytes: ::core::option::Option<u32>,
15061    #[prost(uint32, optional, tag = "8")]
15062    pub post_sc: ::core::option::Option<u32>,
15063    #[prost(uint32, optional, tag = "9")]
15064    pub fbc_bytes: ::core::option::Option<u32>,
15065    #[prost(uint32, optional, tag = "10")]
15066    pub prefill_bytes: ::core::option::Option<u32>,
15067}
15068#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15069pub struct MdpPerfUpdateBusFtraceEvent {
15070    #[prost(int32, optional, tag = "1")]
15071    pub client: ::core::option::Option<i32>,
15072    #[prost(uint64, optional, tag = "2")]
15073    pub ab_quota: ::core::option::Option<u64>,
15074    #[prost(uint64, optional, tag = "3")]
15075    pub ib_quota: ::core::option::Option<u64>,
15076}
15077#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15078pub struct RotatorBwAoAsContextFtraceEvent {
15079    #[prost(uint32, optional, tag = "1")]
15080    pub state: ::core::option::Option<u32>,
15081}
15082#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15083pub struct MmEventRecordFtraceEvent {
15084    #[prost(uint32, optional, tag = "1")]
15085    pub avg_lat: ::core::option::Option<u32>,
15086    #[prost(uint32, optional, tag = "2")]
15087    pub count: ::core::option::Option<u32>,
15088    #[prost(uint32, optional, tag = "3")]
15089    pub max_lat: ::core::option::Option<u32>,
15090    #[prost(uint32, optional, tag = "4")]
15091    pub r#type: ::core::option::Option<u32>,
15092}
15093#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15094pub struct NetifReceiveSkbFtraceEvent {
15095    #[prost(uint32, optional, tag = "1")]
15096    pub len: ::core::option::Option<u32>,
15097    #[prost(string, optional, tag = "2")]
15098    pub name: ::core::option::Option<::prost::alloc::string::String>,
15099    #[prost(uint64, optional, tag = "3")]
15100    pub skbaddr: ::core::option::Option<u64>,
15101}
15102#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15103pub struct NetDevXmitFtraceEvent {
15104    #[prost(uint32, optional, tag = "1")]
15105    pub len: ::core::option::Option<u32>,
15106    #[prost(string, optional, tag = "2")]
15107    pub name: ::core::option::Option<::prost::alloc::string::String>,
15108    #[prost(int32, optional, tag = "3")]
15109    pub rc: ::core::option::Option<i32>,
15110    #[prost(uint64, optional, tag = "4")]
15111    pub skbaddr: ::core::option::Option<u64>,
15112}
15113#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15114pub struct NapiGroReceiveEntryFtraceEvent {
15115    #[prost(uint32, optional, tag = "1")]
15116    pub data_len: ::core::option::Option<u32>,
15117    #[prost(uint32, optional, tag = "2")]
15118    pub gso_size: ::core::option::Option<u32>,
15119    #[prost(uint32, optional, tag = "3")]
15120    pub gso_type: ::core::option::Option<u32>,
15121    #[prost(uint32, optional, tag = "4")]
15122    pub hash: ::core::option::Option<u32>,
15123    #[prost(uint32, optional, tag = "5")]
15124    pub ip_summed: ::core::option::Option<u32>,
15125    #[prost(uint32, optional, tag = "6")]
15126    pub l4_hash: ::core::option::Option<u32>,
15127    #[prost(uint32, optional, tag = "7")]
15128    pub len: ::core::option::Option<u32>,
15129    #[prost(int32, optional, tag = "8")]
15130    pub mac_header: ::core::option::Option<i32>,
15131    #[prost(uint32, optional, tag = "9")]
15132    pub mac_header_valid: ::core::option::Option<u32>,
15133    #[prost(string, optional, tag = "10")]
15134    pub name: ::core::option::Option<::prost::alloc::string::String>,
15135    #[prost(uint32, optional, tag = "11")]
15136    pub napi_id: ::core::option::Option<u32>,
15137    #[prost(uint32, optional, tag = "12")]
15138    pub nr_frags: ::core::option::Option<u32>,
15139    #[prost(uint32, optional, tag = "13")]
15140    pub protocol: ::core::option::Option<u32>,
15141    #[prost(uint32, optional, tag = "14")]
15142    pub queue_mapping: ::core::option::Option<u32>,
15143    #[prost(uint64, optional, tag = "15")]
15144    pub skbaddr: ::core::option::Option<u64>,
15145    #[prost(uint32, optional, tag = "16")]
15146    pub truesize: ::core::option::Option<u32>,
15147    #[prost(uint32, optional, tag = "17")]
15148    pub vlan_proto: ::core::option::Option<u32>,
15149    #[prost(uint32, optional, tag = "18")]
15150    pub vlan_tagged: ::core::option::Option<u32>,
15151    #[prost(uint32, optional, tag = "19")]
15152    pub vlan_tci: ::core::option::Option<u32>,
15153}
15154#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15155pub struct NapiGroReceiveExitFtraceEvent {
15156    #[prost(int32, optional, tag = "1")]
15157    pub ret: ::core::option::Option<i32>,
15158}
15159#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15160pub struct OomScoreAdjUpdateFtraceEvent {
15161    #[prost(string, optional, tag = "1")]
15162    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15163    #[prost(int32, optional, tag = "2")]
15164    pub oom_score_adj: ::core::option::Option<i32>,
15165    #[prost(int32, optional, tag = "3")]
15166    pub pid: ::core::option::Option<i32>,
15167}
15168#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15169pub struct MarkVictimFtraceEvent {
15170    #[prost(int32, optional, tag = "1")]
15171    pub pid: ::core::option::Option<i32>,
15172}
15173#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15174pub struct DsiCmdFifoStatusFtraceEvent {
15175    #[prost(uint32, optional, tag = "1")]
15176    pub header: ::core::option::Option<u32>,
15177    #[prost(uint32, optional, tag = "2")]
15178    pub payload: ::core::option::Option<u32>,
15179}
15180#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15181pub struct DsiRxFtraceEvent {
15182    #[prost(uint32, optional, tag = "1")]
15183    pub cmd: ::core::option::Option<u32>,
15184    #[prost(bytes = "vec", optional, tag = "3")]
15185    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15186}
15187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15188pub struct DsiTxFtraceEvent {
15189    #[prost(uint32, optional, tag = "1")]
15190    pub last: ::core::option::Option<u32>,
15191    #[prost(uint32, optional, tag = "3")]
15192    pub r#type: ::core::option::Option<u32>,
15193    #[prost(bytes = "vec", optional, tag = "4")]
15194    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15195}
15196#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15197pub struct PanelWriteGenericFtraceEvent {
15198    #[prost(int32, optional, tag = "1")]
15199    pub pid: ::core::option::Option<i32>,
15200    #[prost(string, optional, tag = "2")]
15201    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15202    #[prost(uint32, optional, tag = "3")]
15203    pub trace_begin: ::core::option::Option<u32>,
15204    #[prost(string, optional, tag = "4")]
15205    pub name: ::core::option::Option<::prost::alloc::string::String>,
15206    #[prost(uint32, optional, tag = "5")]
15207    pub r#type: ::core::option::Option<u32>,
15208    #[prost(int32, optional, tag = "6")]
15209    pub value: ::core::option::Option<i32>,
15210}
15211#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15212pub struct GramCollisionFtraceEvent {
15213    #[prost(int32, optional, tag = "1")]
15214    pub panel_index: ::core::option::Option<i32>,
15215    #[prost(uint32, optional, tag = "2")]
15216    pub collision_cnt: ::core::option::Option<u32>,
15217}
15218#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15219pub struct PanelSettingsFullFtraceEvent {
15220    #[prost(int32, optional, tag = "1")]
15221    pub panel_index: ::core::option::Option<i32>,
15222    #[prost(uint32, optional, tag = "2")]
15223    pub hbm: ::core::option::Option<u32>,
15224    #[prost(uint32, optional, tag = "3")]
15225    pub irc: ::core::option::Option<u32>,
15226    #[prost(uint32, optional, tag = "4")]
15227    pub h_pwm: ::core::option::Option<u32>,
15228    #[prost(uint32, optional, tag = "5")]
15229    pub fi_auto: ::core::option::Option<u32>,
15230    #[prost(uint32, optional, tag = "6")]
15231    pub fi_manual: ::core::option::Option<u32>,
15232    #[prost(uint32, optional, tag = "7")]
15233    pub early_exit: ::core::option::Option<u32>,
15234    #[prost(uint32, optional, tag = "8")]
15235    pub min_rr: ::core::option::Option<u32>,
15236    #[prost(uint32, optional, tag = "9")]
15237    pub max_rr: ::core::option::Option<u32>,
15238    #[prost(uint32, optional, tag = "10")]
15239    pub te_freq: ::core::option::Option<u32>,
15240}
15241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15242pub struct PanelSettingsLiteFtraceEvent {
15243    #[prost(int32, optional, tag = "1")]
15244    pub panel_index: ::core::option::Option<i32>,
15245    #[prost(uint32, optional, tag = "2")]
15246    pub vrr: ::core::option::Option<u32>,
15247    #[prost(uint32, optional, tag = "3")]
15248    pub min_rr: ::core::option::Option<u32>,
15249    #[prost(uint32, optional, tag = "4")]
15250    pub max_rr: ::core::option::Option<u32>,
15251    #[prost(uint32, optional, tag = "5")]
15252    pub te_freq: ::core::option::Option<u32>,
15253}
15254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15255pub struct SchedSwitchWithCtrsFtraceEvent {
15256    #[prost(int32, optional, tag = "1")]
15257    pub old_pid: ::core::option::Option<i32>,
15258    #[prost(int32, optional, tag = "2")]
15259    pub new_pid: ::core::option::Option<i32>,
15260    #[prost(uint64, optional, tag = "3")]
15261    pub cctr: ::core::option::Option<u64>,
15262    #[prost(uint64, optional, tag = "4")]
15263    pub ctr0: ::core::option::Option<u64>,
15264    #[prost(uint64, optional, tag = "5")]
15265    pub ctr1: ::core::option::Option<u64>,
15266    #[prost(uint64, optional, tag = "6")]
15267    pub ctr2: ::core::option::Option<u64>,
15268    #[prost(uint64, optional, tag = "7")]
15269    pub ctr3: ::core::option::Option<u64>,
15270    #[prost(uint32, optional, tag = "8")]
15271    pub lctr0: ::core::option::Option<u32>,
15272    #[prost(uint32, optional, tag = "9")]
15273    pub lctr1: ::core::option::Option<u32>,
15274    #[prost(uint64, optional, tag = "10")]
15275    pub ctr4: ::core::option::Option<u64>,
15276    #[prost(uint64, optional, tag = "11")]
15277    pub ctr5: ::core::option::Option<u64>,
15278    #[prost(string, optional, tag = "12")]
15279    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15280    #[prost(int32, optional, tag = "13")]
15281    pub prev_pid: ::core::option::Option<i32>,
15282    #[prost(uint32, optional, tag = "14")]
15283    pub cyc: ::core::option::Option<u32>,
15284    #[prost(uint32, optional, tag = "15")]
15285    pub inst: ::core::option::Option<u32>,
15286    #[prost(uint32, optional, tag = "16")]
15287    pub stallbm: ::core::option::Option<u32>,
15288    #[prost(uint32, optional, tag = "17")]
15289    pub l3dm: ::core::option::Option<u32>,
15290    #[prost(int32, optional, tag = "18")]
15291    pub next_pid: ::core::option::Option<i32>,
15292    #[prost(string, optional, tag = "19")]
15293    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15294    #[prost(int64, optional, tag = "20")]
15295    pub prev_state: ::core::option::Option<i64>,
15296    #[prost(uint64, optional, tag = "21")]
15297    pub amu0: ::core::option::Option<u64>,
15298    #[prost(uint64, optional, tag = "22")]
15299    pub amu1: ::core::option::Option<u64>,
15300    #[prost(uint64, optional, tag = "23")]
15301    pub amu2: ::core::option::Option<u64>,
15302}
15303#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15304pub struct LongIrqFtraceEvent {
15305    #[prost(int32, optional, tag = "1")]
15306    pub irq: ::core::option::Option<i32>,
15307    #[prost(uint32, optional, tag = "2")]
15308    pub latency: ::core::option::Option<u32>,
15309    #[prost(uint32, optional, tag = "3")]
15310    pub count: ::core::option::Option<u32>,
15311}
15312#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15313pub struct LongSoftirqFtraceEvent {
15314    #[prost(int32, optional, tag = "1")]
15315    pub vec_nr: ::core::option::Option<i32>,
15316    #[prost(uint32, optional, tag = "2")]
15317    pub latency: ::core::option::Option<u32>,
15318    #[prost(uint32, optional, tag = "3")]
15319    pub count: ::core::option::Option<u32>,
15320}
15321#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15322pub struct PixelMmKswapdWakeFtraceEvent {
15323    #[prost(int32, optional, tag = "1")]
15324    pub whatever: ::core::option::Option<i32>,
15325}
15326#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15327pub struct PixelMmKswapdDoneFtraceEvent {
15328    #[prost(uint64, optional, tag = "1")]
15329    pub delta_nr_scanned: ::core::option::Option<u64>,
15330    #[prost(uint64, optional, tag = "2")]
15331    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15332    #[prost(uint64, optional, tag = "3")]
15333    pub delta_nr_allocated: ::core::option::Option<u64>,
15334    #[prost(uint64, optional, tag = "4")]
15335    pub duration_ns: ::core::option::Option<u64>,
15336}
15337#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15338pub struct CpuFrequencyFtraceEvent {
15339    #[prost(uint32, optional, tag = "1")]
15340    pub state: ::core::option::Option<u32>,
15341    #[prost(uint32, optional, tag = "2")]
15342    pub cpu_id: ::core::option::Option<u32>,
15343}
15344#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15345pub struct CpuFrequencyLimitsFtraceEvent {
15346    #[prost(uint32, optional, tag = "1")]
15347    pub min_freq: ::core::option::Option<u32>,
15348    #[prost(uint32, optional, tag = "2")]
15349    pub max_freq: ::core::option::Option<u32>,
15350    #[prost(uint32, optional, tag = "3")]
15351    pub cpu_id: ::core::option::Option<u32>,
15352}
15353#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15354pub struct CpuIdleFtraceEvent {
15355    #[prost(uint32, optional, tag = "1")]
15356    pub state: ::core::option::Option<u32>,
15357    #[prost(uint32, optional, tag = "2")]
15358    pub cpu_id: ::core::option::Option<u32>,
15359}
15360#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15361pub struct ClockEnableFtraceEvent {
15362    #[prost(string, optional, tag = "1")]
15363    pub name: ::core::option::Option<::prost::alloc::string::String>,
15364    #[prost(uint64, optional, tag = "2")]
15365    pub state: ::core::option::Option<u64>,
15366    #[prost(uint64, optional, tag = "3")]
15367    pub cpu_id: ::core::option::Option<u64>,
15368}
15369#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15370pub struct ClockDisableFtraceEvent {
15371    #[prost(string, optional, tag = "1")]
15372    pub name: ::core::option::Option<::prost::alloc::string::String>,
15373    #[prost(uint64, optional, tag = "2")]
15374    pub state: ::core::option::Option<u64>,
15375    #[prost(uint64, optional, tag = "3")]
15376    pub cpu_id: ::core::option::Option<u64>,
15377}
15378#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15379pub struct ClockSetRateFtraceEvent {
15380    #[prost(string, optional, tag = "1")]
15381    pub name: ::core::option::Option<::prost::alloc::string::String>,
15382    #[prost(uint64, optional, tag = "2")]
15383    pub state: ::core::option::Option<u64>,
15384    #[prost(uint64, optional, tag = "3")]
15385    pub cpu_id: ::core::option::Option<u64>,
15386}
15387#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15388pub struct SuspendResumeFtraceEvent {
15389    #[prost(string, optional, tag = "1")]
15390    pub action: ::core::option::Option<::prost::alloc::string::String>,
15391    #[prost(int32, optional, tag = "2")]
15392    pub val: ::core::option::Option<i32>,
15393    #[prost(uint32, optional, tag = "3")]
15394    pub start: ::core::option::Option<u32>,
15395}
15396#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15397pub struct GpuFrequencyFtraceEvent {
15398    #[prost(uint32, optional, tag = "1")]
15399    pub gpu_id: ::core::option::Option<u32>,
15400    #[prost(uint32, optional, tag = "2")]
15401    pub state: ::core::option::Option<u32>,
15402}
15403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15404pub struct WakeupSourceActivateFtraceEvent {
15405    #[prost(string, optional, tag = "1")]
15406    pub name: ::core::option::Option<::prost::alloc::string::String>,
15407    #[prost(uint64, optional, tag = "2")]
15408    pub state: ::core::option::Option<u64>,
15409}
15410#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15411pub struct WakeupSourceDeactivateFtraceEvent {
15412    #[prost(string, optional, tag = "1")]
15413    pub name: ::core::option::Option<::prost::alloc::string::String>,
15414    #[prost(uint64, optional, tag = "2")]
15415    pub state: ::core::option::Option<u64>,
15416}
15417#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15418pub struct GpuWorkPeriodFtraceEvent {
15419    #[prost(uint32, optional, tag = "1")]
15420    pub gpu_id: ::core::option::Option<u32>,
15421    #[prost(uint32, optional, tag = "2")]
15422    pub uid: ::core::option::Option<u32>,
15423    #[prost(uint64, optional, tag = "3")]
15424    pub start_time_ns: ::core::option::Option<u64>,
15425    #[prost(uint64, optional, tag = "4")]
15426    pub end_time_ns: ::core::option::Option<u64>,
15427    #[prost(uint64, optional, tag = "5")]
15428    pub total_active_duration_ns: ::core::option::Option<u64>,
15429}
15430#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15431pub struct DevicePmCallbackStartFtraceEvent {
15432    #[prost(string, optional, tag = "1")]
15433    pub device: ::core::option::Option<::prost::alloc::string::String>,
15434    #[prost(string, optional, tag = "2")]
15435    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15436    #[prost(string, optional, tag = "3")]
15437    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15438    #[prost(string, optional, tag = "4")]
15439    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15440    #[prost(int32, optional, tag = "5")]
15441    pub event: ::core::option::Option<i32>,
15442}
15443#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15444pub struct DevicePmCallbackEndFtraceEvent {
15445    #[prost(string, optional, tag = "1")]
15446    pub device: ::core::option::Option<::prost::alloc::string::String>,
15447    #[prost(string, optional, tag = "2")]
15448    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15449    #[prost(int32, optional, tag = "3")]
15450    pub error: ::core::option::Option<i32>,
15451}
15452#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15453pub struct GpuPowerStateFtraceEvent {
15454    #[prost(int32, optional, tag = "1")]
15455    pub old_state: ::core::option::Option<i32>,
15456    #[prost(int32, optional, tag = "2")]
15457    pub new_state: ::core::option::Option<i32>,
15458}
15459#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15460pub struct PsciDomainIdleExitFtraceEvent {
15461    #[prost(uint32, optional, tag = "1")]
15462    pub cpu_id: ::core::option::Option<u32>,
15463    #[prost(uint32, optional, tag = "2")]
15464    pub state: ::core::option::Option<u32>,
15465    #[prost(uint32, optional, tag = "3")]
15466    pub s2idle: ::core::option::Option<u32>,
15467}
15468#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15469pub struct PsciDomainIdleEnterFtraceEvent {
15470    #[prost(uint32, optional, tag = "1")]
15471    pub cpu_id: ::core::option::Option<u32>,
15472    #[prost(uint32, optional, tag = "2")]
15473    pub state: ::core::option::Option<u32>,
15474    #[prost(uint32, optional, tag = "3")]
15475    pub s2idle: ::core::option::Option<u32>,
15476}
15477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15478pub struct ConsoleFtraceEvent {
15479    #[prost(string, optional, tag = "1")]
15480    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15481}
15482#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15483pub struct SysEnterFtraceEvent {
15484    #[prost(int64, optional, tag = "1")]
15485    pub id: ::core::option::Option<i64>,
15486    #[prost(uint64, repeated, packed = "false", tag = "2")]
15487    pub args: ::prost::alloc::vec::Vec<u64>,
15488}
15489#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15490pub struct SysExitFtraceEvent {
15491    #[prost(int64, optional, tag = "1")]
15492    pub id: ::core::option::Option<i64>,
15493    #[prost(int64, optional, tag = "2")]
15494    pub ret: ::core::option::Option<i64>,
15495}
15496#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15497pub struct RegulatorDisableFtraceEvent {
15498    #[prost(string, optional, tag = "1")]
15499    pub name: ::core::option::Option<::prost::alloc::string::String>,
15500}
15501#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15502pub struct RegulatorDisableCompleteFtraceEvent {
15503    #[prost(string, optional, tag = "1")]
15504    pub name: ::core::option::Option<::prost::alloc::string::String>,
15505}
15506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15507pub struct RegulatorEnableFtraceEvent {
15508    #[prost(string, optional, tag = "1")]
15509    pub name: ::core::option::Option<::prost::alloc::string::String>,
15510}
15511#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15512pub struct RegulatorEnableCompleteFtraceEvent {
15513    #[prost(string, optional, tag = "1")]
15514    pub name: ::core::option::Option<::prost::alloc::string::String>,
15515}
15516#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15517pub struct RegulatorEnableDelayFtraceEvent {
15518    #[prost(string, optional, tag = "1")]
15519    pub name: ::core::option::Option<::prost::alloc::string::String>,
15520}
15521#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15522pub struct RegulatorSetVoltageFtraceEvent {
15523    #[prost(string, optional, tag = "1")]
15524    pub name: ::core::option::Option<::prost::alloc::string::String>,
15525    #[prost(int32, optional, tag = "2")]
15526    pub min: ::core::option::Option<i32>,
15527    #[prost(int32, optional, tag = "3")]
15528    pub max: ::core::option::Option<i32>,
15529}
15530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15531pub struct RegulatorSetVoltageCompleteFtraceEvent {
15532    #[prost(string, optional, tag = "1")]
15533    pub name: ::core::option::Option<::prost::alloc::string::String>,
15534    #[prost(uint32, optional, tag = "2")]
15535    pub val: ::core::option::Option<u32>,
15536}
15537#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15538pub struct RpmStatusFtraceEvent {
15539    #[prost(string, optional, tag = "1")]
15540    pub name: ::core::option::Option<::prost::alloc::string::String>,
15541    #[prost(int32, optional, tag = "2")]
15542    pub status: ::core::option::Option<i32>,
15543}
15544#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15545pub struct SamsungTracingMarkWriteFtraceEvent {
15546    #[prost(int32, optional, tag = "1")]
15547    pub pid: ::core::option::Option<i32>,
15548    #[prost(string, optional, tag = "2")]
15549    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15550    #[prost(uint32, optional, tag = "3")]
15551    pub trace_begin: ::core::option::Option<u32>,
15552    #[prost(uint32, optional, tag = "4")]
15553    pub trace_type: ::core::option::Option<u32>,
15554    #[prost(int32, optional, tag = "5")]
15555    pub value: ::core::option::Option<i32>,
15556}
15557#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15558pub struct SchedSwitchFtraceEvent {
15559    #[prost(string, optional, tag = "1")]
15560    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15561    #[prost(int32, optional, tag = "2")]
15562    pub prev_pid: ::core::option::Option<i32>,
15563    #[prost(int32, optional, tag = "3")]
15564    pub prev_prio: ::core::option::Option<i32>,
15565    #[prost(int64, optional, tag = "4")]
15566    pub prev_state: ::core::option::Option<i64>,
15567    #[prost(string, optional, tag = "5")]
15568    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15569    #[prost(int32, optional, tag = "6")]
15570    pub next_pid: ::core::option::Option<i32>,
15571    #[prost(int32, optional, tag = "7")]
15572    pub next_prio: ::core::option::Option<i32>,
15573}
15574#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15575pub struct SchedWakeupFtraceEvent {
15576    #[prost(string, optional, tag = "1")]
15577    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15578    #[prost(int32, optional, tag = "2")]
15579    pub pid: ::core::option::Option<i32>,
15580    #[prost(int32, optional, tag = "3")]
15581    pub prio: ::core::option::Option<i32>,
15582    #[prost(int32, optional, tag = "4")]
15583    pub success: ::core::option::Option<i32>,
15584    #[prost(int32, optional, tag = "5")]
15585    pub target_cpu: ::core::option::Option<i32>,
15586}
15587#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15588pub struct SchedBlockedReasonFtraceEvent {
15589    #[prost(int32, optional, tag = "1")]
15590    pub pid: ::core::option::Option<i32>,
15591    #[prost(uint64, optional, tag = "2")]
15592    pub caller: ::core::option::Option<u64>,
15593    #[prost(uint32, optional, tag = "3")]
15594    pub io_wait: ::core::option::Option<u32>,
15595}
15596#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15597pub struct SchedCpuHotplugFtraceEvent {
15598    #[prost(int32, optional, tag = "1")]
15599    pub affected_cpu: ::core::option::Option<i32>,
15600    #[prost(int32, optional, tag = "2")]
15601    pub error: ::core::option::Option<i32>,
15602    #[prost(int32, optional, tag = "3")]
15603    pub status: ::core::option::Option<i32>,
15604}
15605#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15606pub struct SchedWakingFtraceEvent {
15607    #[prost(string, optional, tag = "1")]
15608    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15609    #[prost(int32, optional, tag = "2")]
15610    pub pid: ::core::option::Option<i32>,
15611    #[prost(int32, optional, tag = "3")]
15612    pub prio: ::core::option::Option<i32>,
15613    #[prost(int32, optional, tag = "4")]
15614    pub success: ::core::option::Option<i32>,
15615    #[prost(int32, optional, tag = "5")]
15616    pub target_cpu: ::core::option::Option<i32>,
15617}
15618#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15619pub struct SchedWakeupNewFtraceEvent {
15620    #[prost(string, optional, tag = "1")]
15621    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15622    #[prost(int32, optional, tag = "2")]
15623    pub pid: ::core::option::Option<i32>,
15624    #[prost(int32, optional, tag = "3")]
15625    pub prio: ::core::option::Option<i32>,
15626    #[prost(int32, optional, tag = "4")]
15627    pub success: ::core::option::Option<i32>,
15628    #[prost(int32, optional, tag = "5")]
15629    pub target_cpu: ::core::option::Option<i32>,
15630}
15631#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15632pub struct SchedProcessExecFtraceEvent {
15633    #[prost(string, optional, tag = "1")]
15634    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15635    #[prost(int32, optional, tag = "2")]
15636    pub pid: ::core::option::Option<i32>,
15637    #[prost(int32, optional, tag = "3")]
15638    pub old_pid: ::core::option::Option<i32>,
15639}
15640#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15641pub struct SchedProcessExitFtraceEvent {
15642    #[prost(string, optional, tag = "1")]
15643    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15644    #[prost(int32, optional, tag = "2")]
15645    pub pid: ::core::option::Option<i32>,
15646    #[prost(int32, optional, tag = "3")]
15647    pub tgid: ::core::option::Option<i32>,
15648    #[prost(int32, optional, tag = "4")]
15649    pub prio: ::core::option::Option<i32>,
15650}
15651#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15652pub struct SchedProcessForkFtraceEvent {
15653    #[prost(string, optional, tag = "1")]
15654    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15655    #[prost(int32, optional, tag = "2")]
15656    pub parent_pid: ::core::option::Option<i32>,
15657    #[prost(string, optional, tag = "3")]
15658    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15659    #[prost(int32, optional, tag = "4")]
15660    pub child_pid: ::core::option::Option<i32>,
15661}
15662#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15663pub struct SchedProcessFreeFtraceEvent {
15664    #[prost(string, optional, tag = "1")]
15665    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15666    #[prost(int32, optional, tag = "2")]
15667    pub pid: ::core::option::Option<i32>,
15668    #[prost(int32, optional, tag = "3")]
15669    pub prio: ::core::option::Option<i32>,
15670}
15671#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15672pub struct SchedProcessHangFtraceEvent {
15673    #[prost(string, optional, tag = "1")]
15674    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15675    #[prost(int32, optional, tag = "2")]
15676    pub pid: ::core::option::Option<i32>,
15677}
15678#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15679pub struct SchedProcessWaitFtraceEvent {
15680    #[prost(string, optional, tag = "1")]
15681    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15682    #[prost(int32, optional, tag = "2")]
15683    pub pid: ::core::option::Option<i32>,
15684    #[prost(int32, optional, tag = "3")]
15685    pub prio: ::core::option::Option<i32>,
15686}
15687#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15688pub struct SchedPiSetprioFtraceEvent {
15689    #[prost(string, optional, tag = "1")]
15690    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15691    #[prost(int32, optional, tag = "2")]
15692    pub newprio: ::core::option::Option<i32>,
15693    #[prost(int32, optional, tag = "3")]
15694    pub oldprio: ::core::option::Option<i32>,
15695    #[prost(int32, optional, tag = "4")]
15696    pub pid: ::core::option::Option<i32>,
15697}
15698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15699pub struct SchedCpuUtilCfsFtraceEvent {
15700    #[prost(int32, optional, tag = "1")]
15701    pub active: ::core::option::Option<i32>,
15702    #[prost(uint64, optional, tag = "2")]
15703    pub capacity: ::core::option::Option<u64>,
15704    #[prost(uint64, optional, tag = "3")]
15705    pub capacity_orig: ::core::option::Option<u64>,
15706    #[prost(uint32, optional, tag = "4")]
15707    pub cpu: ::core::option::Option<u32>,
15708    #[prost(uint64, optional, tag = "5")]
15709    pub cpu_importance: ::core::option::Option<u64>,
15710    #[prost(uint64, optional, tag = "6")]
15711    pub cpu_util: ::core::option::Option<u64>,
15712    #[prost(uint32, optional, tag = "7")]
15713    pub exit_lat: ::core::option::Option<u32>,
15714    #[prost(uint64, optional, tag = "8")]
15715    pub group_capacity: ::core::option::Option<u64>,
15716    #[prost(uint32, optional, tag = "9")]
15717    pub grp_overutilized: ::core::option::Option<u32>,
15718    #[prost(uint32, optional, tag = "10")]
15719    pub idle_cpu: ::core::option::Option<u32>,
15720    #[prost(uint32, optional, tag = "11")]
15721    pub nr_running: ::core::option::Option<u32>,
15722    #[prost(int64, optional, tag = "12")]
15723    pub spare_cap: ::core::option::Option<i64>,
15724    #[prost(uint32, optional, tag = "13")]
15725    pub task_fits: ::core::option::Option<u32>,
15726    #[prost(uint64, optional, tag = "14")]
15727    pub wake_group_util: ::core::option::Option<u64>,
15728    #[prost(uint64, optional, tag = "15")]
15729    pub wake_util: ::core::option::Option<u64>,
15730}
15731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15732pub struct SchedMigrateTaskFtraceEvent {
15733    #[prost(string, optional, tag = "1")]
15734    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15735    #[prost(int32, optional, tag = "2")]
15736    pub pid: ::core::option::Option<i32>,
15737    #[prost(int32, optional, tag = "3")]
15738    pub prio: ::core::option::Option<i32>,
15739    #[prost(int32, optional, tag = "4")]
15740    pub orig_cpu: ::core::option::Option<i32>,
15741    #[prost(int32, optional, tag = "5")]
15742    pub dest_cpu: ::core::option::Option<i32>,
15743    #[prost(int32, optional, tag = "6")]
15744    pub running: ::core::option::Option<i32>,
15745    #[prost(uint32, optional, tag = "7")]
15746    pub load: ::core::option::Option<u32>,
15747}
15748#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15749pub struct SchedWakeupTaskAttrFtraceEvent {
15750    #[prost(int32, optional, tag = "1")]
15751    pub pid: ::core::option::Option<i32>,
15752    #[prost(uint64, optional, tag = "2")]
15753    pub cpu_affinity: ::core::option::Option<u64>,
15754    #[prost(uint64, optional, tag = "3")]
15755    pub task_util: ::core::option::Option<u64>,
15756    #[prost(uint64, optional, tag = "4")]
15757    pub uclamp_min: ::core::option::Option<u64>,
15758    #[prost(uint64, optional, tag = "5")]
15759    pub vruntime: ::core::option::Option<u64>,
15760    #[prost(uint64, optional, tag = "6")]
15761    pub sched_qos_user_defined_flag: ::core::option::Option<u64>,
15762    #[prost(uint32, optional, tag = "7")]
15763    pub rampup_multiplier: ::core::option::Option<u32>,
15764    #[prost(uint32, optional, tag = "8")]
15765    pub effect_rampup_multiplier: ::core::option::Option<u32>,
15766    #[prost(int32, optional, tag = "9")]
15767    pub tag_nice: ::core::option::Option<i32>,
15768}
15769#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15770pub struct SchedGroupTrackerFtraceEvent {
15771    #[prost(string, optional, tag = "1")]
15772    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15773    #[prost(int32, optional, tag = "2")]
15774    pub pid: ::core::option::Option<i32>,
15775    #[prost(string, optional, tag = "3")]
15776    pub group: ::core::option::Option<::prost::alloc::string::String>,
15777    #[prost(int32, optional, tag = "4")]
15778    pub group_num: ::core::option::Option<i32>,
15779}
15780#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15781pub struct ScmCallStartFtraceEvent {
15782    #[prost(uint32, optional, tag = "1")]
15783    pub arginfo: ::core::option::Option<u32>,
15784    #[prost(uint64, optional, tag = "2")]
15785    pub x0: ::core::option::Option<u64>,
15786    #[prost(uint64, optional, tag = "3")]
15787    pub x5: ::core::option::Option<u64>,
15788}
15789#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15790pub struct ScmCallEndFtraceEvent {}
15791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15792pub struct ScsiDispatchCmdErrorFtraceEvent {
15793    #[prost(uint32, optional, tag = "1")]
15794    pub host_no: ::core::option::Option<u32>,
15795    #[prost(uint32, optional, tag = "2")]
15796    pub channel: ::core::option::Option<u32>,
15797    #[prost(uint32, optional, tag = "3")]
15798    pub id: ::core::option::Option<u32>,
15799    #[prost(uint32, optional, tag = "4")]
15800    pub lun: ::core::option::Option<u32>,
15801    #[prost(int32, optional, tag = "5")]
15802    pub rtn: ::core::option::Option<i32>,
15803    #[prost(uint32, optional, tag = "6")]
15804    pub opcode: ::core::option::Option<u32>,
15805    #[prost(uint32, optional, tag = "7")]
15806    pub cmd_len: ::core::option::Option<u32>,
15807    #[prost(uint32, optional, tag = "8")]
15808    pub data_sglen: ::core::option::Option<u32>,
15809    #[prost(uint32, optional, tag = "9")]
15810    pub prot_sglen: ::core::option::Option<u32>,
15811    #[prost(uint32, optional, tag = "10")]
15812    pub prot_op: ::core::option::Option<u32>,
15813    #[prost(int32, optional, tag = "12")]
15814    pub driver_tag: ::core::option::Option<i32>,
15815    #[prost(int32, optional, tag = "13")]
15816    pub scheduler_tag: ::core::option::Option<i32>,
15817    #[prost(bytes = "vec", optional, tag = "14")]
15818    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15819}
15820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15821pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15822    #[prost(uint32, optional, tag = "1")]
15823    pub host_no: ::core::option::Option<u32>,
15824    #[prost(uint32, optional, tag = "2")]
15825    pub channel: ::core::option::Option<u32>,
15826    #[prost(uint32, optional, tag = "3")]
15827    pub id: ::core::option::Option<u32>,
15828    #[prost(uint32, optional, tag = "4")]
15829    pub lun: ::core::option::Option<u32>,
15830    #[prost(int32, optional, tag = "5")]
15831    pub result: ::core::option::Option<i32>,
15832    #[prost(uint32, optional, tag = "6")]
15833    pub opcode: ::core::option::Option<u32>,
15834    #[prost(uint32, optional, tag = "7")]
15835    pub cmd_len: ::core::option::Option<u32>,
15836    #[prost(uint32, optional, tag = "8")]
15837    pub data_sglen: ::core::option::Option<u32>,
15838    #[prost(uint32, optional, tag = "9")]
15839    pub prot_sglen: ::core::option::Option<u32>,
15840    #[prost(uint32, optional, tag = "10")]
15841    pub prot_op: ::core::option::Option<u32>,
15842    #[prost(int32, optional, tag = "12")]
15843    pub driver_tag: ::core::option::Option<i32>,
15844    #[prost(int32, optional, tag = "13")]
15845    pub scheduler_tag: ::core::option::Option<i32>,
15846    #[prost(uint32, optional, tag = "14")]
15847    pub sense_key: ::core::option::Option<u32>,
15848    #[prost(uint32, optional, tag = "15")]
15849    pub asc: ::core::option::Option<u32>,
15850    #[prost(uint32, optional, tag = "16")]
15851    pub ascq: ::core::option::Option<u32>,
15852    #[prost(bytes = "vec", optional, tag = "17")]
15853    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15854}
15855#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15856pub struct ScsiEhWakeupFtraceEvent {
15857    #[prost(uint32, optional, tag = "1")]
15858    pub host_no: ::core::option::Option<u32>,
15859}
15860#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15861pub struct SdeTracingMarkWriteFtraceEvent {
15862    #[prost(int32, optional, tag = "1")]
15863    pub pid: ::core::option::Option<i32>,
15864    #[prost(string, optional, tag = "2")]
15865    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15866    #[prost(uint32, optional, tag = "3")]
15867    pub trace_type: ::core::option::Option<u32>,
15868    #[prost(int32, optional, tag = "4")]
15869    pub value: ::core::option::Option<i32>,
15870    #[prost(uint32, optional, tag = "5")]
15871    pub trace_begin: ::core::option::Option<u32>,
15872}
15873#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15874pub struct SdeSdeEvtlogFtraceEvent {
15875    #[prost(string, optional, tag = "1")]
15876    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15877    #[prost(int32, optional, tag = "2")]
15878    pub pid: ::core::option::Option<i32>,
15879    #[prost(uint32, optional, tag = "3")]
15880    pub tag_id: ::core::option::Option<u32>,
15881    #[prost(uint32, optional, tag = "4")]
15882    pub d00: ::core::option::Option<u32>,
15883    #[prost(uint32, optional, tag = "5")]
15884    pub d01: ::core::option::Option<u32>,
15885    #[prost(uint32, optional, tag = "6")]
15886    pub d02: ::core::option::Option<u32>,
15887    #[prost(uint32, optional, tag = "7")]
15888    pub d03: ::core::option::Option<u32>,
15889    #[prost(uint32, optional, tag = "8")]
15890    pub d04: ::core::option::Option<u32>,
15891    #[prost(uint32, optional, tag = "9")]
15892    pub d05: ::core::option::Option<u32>,
15893    #[prost(uint32, optional, tag = "10")]
15894    pub d06: ::core::option::Option<u32>,
15895    #[prost(uint32, optional, tag = "11")]
15896    pub d07: ::core::option::Option<u32>,
15897    #[prost(uint32, optional, tag = "12")]
15898    pub d08: ::core::option::Option<u32>,
15899    #[prost(uint32, optional, tag = "13")]
15900    pub d09: ::core::option::Option<u32>,
15901    #[prost(uint32, optional, tag = "14")]
15902    pub d10: ::core::option::Option<u32>,
15903    #[prost(uint32, optional, tag = "15")]
15904    pub d11: ::core::option::Option<u32>,
15905    #[prost(uint32, optional, tag = "16")]
15906    pub d12: ::core::option::Option<u32>,
15907    #[prost(uint32, optional, tag = "17")]
15908    pub d13: ::core::option::Option<u32>,
15909    #[prost(uint32, optional, tag = "18")]
15910    pub d14: ::core::option::Option<u32>,
15911}
15912#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15913pub struct SdeSdePerfCalcCrtcFtraceEvent {
15914    #[prost(uint64, optional, tag = "1")]
15915    pub bw_ctl_ebi: ::core::option::Option<u64>,
15916    #[prost(uint64, optional, tag = "2")]
15917    pub bw_ctl_llcc: ::core::option::Option<u64>,
15918    #[prost(uint64, optional, tag = "3")]
15919    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15920    #[prost(uint32, optional, tag = "4")]
15921    pub core_clk_rate: ::core::option::Option<u32>,
15922    #[prost(uint32, optional, tag = "5")]
15923    pub crtc: ::core::option::Option<u32>,
15924    #[prost(uint64, optional, tag = "6")]
15925    pub ib_ebi: ::core::option::Option<u64>,
15926    #[prost(uint64, optional, tag = "7")]
15927    pub ib_llcc: ::core::option::Option<u64>,
15928    #[prost(uint64, optional, tag = "8")]
15929    pub ib_mnoc: ::core::option::Option<u64>,
15930}
15931#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15932pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15933    #[prost(uint64, optional, tag = "1")]
15934    pub bw_ctl_ebi: ::core::option::Option<u64>,
15935    #[prost(uint64, optional, tag = "2")]
15936    pub bw_ctl_llcc: ::core::option::Option<u64>,
15937    #[prost(uint64, optional, tag = "3")]
15938    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15939    #[prost(uint32, optional, tag = "4")]
15940    pub core_clk_rate: ::core::option::Option<u32>,
15941    #[prost(uint32, optional, tag = "5")]
15942    pub crtc: ::core::option::Option<u32>,
15943    #[prost(int32, optional, tag = "6")]
15944    pub params: ::core::option::Option<i32>,
15945    #[prost(uint64, optional, tag = "7")]
15946    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15947    #[prost(uint64, optional, tag = "8")]
15948    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15949    #[prost(uint64, optional, tag = "9")]
15950    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15951    #[prost(uint32, optional, tag = "10")]
15952    pub stop_req: ::core::option::Option<u32>,
15953    #[prost(uint32, optional, tag = "11")]
15954    pub update_bus: ::core::option::Option<u32>,
15955    #[prost(uint32, optional, tag = "12")]
15956    pub update_clk: ::core::option::Option<u32>,
15957}
15958#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15959pub struct SdeSdePerfSetQosLutsFtraceEvent {
15960    #[prost(uint32, optional, tag = "1")]
15961    pub fl: ::core::option::Option<u32>,
15962    #[prost(uint32, optional, tag = "2")]
15963    pub fmt: ::core::option::Option<u32>,
15964    #[prost(uint64, optional, tag = "3")]
15965    pub lut: ::core::option::Option<u64>,
15966    #[prost(uint32, optional, tag = "4")]
15967    pub lut_usage: ::core::option::Option<u32>,
15968    #[prost(uint32, optional, tag = "5")]
15969    pub pnum: ::core::option::Option<u32>,
15970    #[prost(uint32, optional, tag = "6")]
15971    pub rt: ::core::option::Option<u32>,
15972}
15973#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15974pub struct SdeSdePerfUpdateBusFtraceEvent {
15975    #[prost(uint64, optional, tag = "1")]
15976    pub ab_quota: ::core::option::Option<u64>,
15977    #[prost(uint32, optional, tag = "2")]
15978    pub bus_id: ::core::option::Option<u32>,
15979    #[prost(int32, optional, tag = "3")]
15980    pub client: ::core::option::Option<i32>,
15981    #[prost(uint64, optional, tag = "4")]
15982    pub ib_quota: ::core::option::Option<u64>,
15983}
15984#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15985pub struct SignalDeliverFtraceEvent {
15986    #[prost(int32, optional, tag = "1")]
15987    pub code: ::core::option::Option<i32>,
15988    #[prost(uint64, optional, tag = "2")]
15989    pub sa_flags: ::core::option::Option<u64>,
15990    #[prost(int32, optional, tag = "3")]
15991    pub sig: ::core::option::Option<i32>,
15992}
15993#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15994pub struct SignalGenerateFtraceEvent {
15995    #[prost(int32, optional, tag = "1")]
15996    pub code: ::core::option::Option<i32>,
15997    #[prost(string, optional, tag = "2")]
15998    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15999    #[prost(int32, optional, tag = "3")]
16000    pub group: ::core::option::Option<i32>,
16001    #[prost(int32, optional, tag = "4")]
16002    pub pid: ::core::option::Option<i32>,
16003    #[prost(int32, optional, tag = "5")]
16004    pub result: ::core::option::Option<i32>,
16005    #[prost(int32, optional, tag = "6")]
16006    pub sig: ::core::option::Option<i32>,
16007}
16008#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16009pub struct KfreeSkbFtraceEvent {
16010    #[prost(uint64, optional, tag = "1")]
16011    pub location: ::core::option::Option<u64>,
16012    #[prost(uint32, optional, tag = "2")]
16013    pub protocol: ::core::option::Option<u32>,
16014    #[prost(uint64, optional, tag = "3")]
16015    pub skbaddr: ::core::option::Option<u64>,
16016}
16017#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16018pub struct InetSockSetStateFtraceEvent {
16019    #[prost(uint32, optional, tag = "1")]
16020    pub daddr: ::core::option::Option<u32>,
16021    #[prost(uint32, optional, tag = "2")]
16022    pub dport: ::core::option::Option<u32>,
16023    #[prost(uint32, optional, tag = "3")]
16024    pub family: ::core::option::Option<u32>,
16025    #[prost(int32, optional, tag = "4")]
16026    pub newstate: ::core::option::Option<i32>,
16027    #[prost(int32, optional, tag = "5")]
16028    pub oldstate: ::core::option::Option<i32>,
16029    #[prost(uint32, optional, tag = "6")]
16030    pub protocol: ::core::option::Option<u32>,
16031    #[prost(uint32, optional, tag = "7")]
16032    pub saddr: ::core::option::Option<u32>,
16033    #[prost(uint64, optional, tag = "8")]
16034    pub skaddr: ::core::option::Option<u64>,
16035    #[prost(uint32, optional, tag = "9")]
16036    pub sport: ::core::option::Option<u32>,
16037}
16038#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16039pub struct SyncPtFtraceEvent {
16040    #[prost(string, optional, tag = "1")]
16041    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16042    #[prost(string, optional, tag = "2")]
16043    pub value: ::core::option::Option<::prost::alloc::string::String>,
16044}
16045#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16046pub struct SyncTimelineFtraceEvent {
16047    #[prost(string, optional, tag = "1")]
16048    pub name: ::core::option::Option<::prost::alloc::string::String>,
16049    #[prost(string, optional, tag = "2")]
16050    pub value: ::core::option::Option<::prost::alloc::string::String>,
16051}
16052#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16053pub struct SyncWaitFtraceEvent {
16054    #[prost(string, optional, tag = "1")]
16055    pub name: ::core::option::Option<::prost::alloc::string::String>,
16056    #[prost(int32, optional, tag = "2")]
16057    pub status: ::core::option::Option<i32>,
16058    #[prost(uint32, optional, tag = "3")]
16059    pub begin: ::core::option::Option<u32>,
16060}
16061#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16062pub struct RssStatThrottledFtraceEvent {
16063    #[prost(uint32, optional, tag = "1")]
16064    pub curr: ::core::option::Option<u32>,
16065    #[prost(int32, optional, tag = "2")]
16066    pub member: ::core::option::Option<i32>,
16067    #[prost(uint32, optional, tag = "3")]
16068    pub mm_id: ::core::option::Option<u32>,
16069    #[prost(int64, optional, tag = "4")]
16070    pub size: ::core::option::Option<i64>,
16071}
16072#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16073pub struct SuspendResumeMinimalFtraceEvent {
16074    #[prost(uint32, optional, tag = "1")]
16075    pub start: ::core::option::Option<u32>,
16076}
16077#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16078pub struct ZeroFtraceEvent {
16079    #[prost(int32, optional, tag = "1")]
16080    pub flag: ::core::option::Option<i32>,
16081    #[prost(string, optional, tag = "2")]
16082    pub name: ::core::option::Option<::prost::alloc::string::String>,
16083    #[prost(int32, optional, tag = "3")]
16084    pub pid: ::core::option::Option<i32>,
16085    #[prost(int64, optional, tag = "4")]
16086    pub value: ::core::option::Option<i64>,
16087}
16088#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16089pub struct TaskNewtaskFtraceEvent {
16090    #[prost(int32, optional, tag = "1")]
16091    pub pid: ::core::option::Option<i32>,
16092    #[prost(string, optional, tag = "2")]
16093    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16094    #[prost(uint64, optional, tag = "3")]
16095    pub clone_flags: ::core::option::Option<u64>,
16096    #[prost(int32, optional, tag = "4")]
16097    pub oom_score_adj: ::core::option::Option<i32>,
16098}
16099#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16100pub struct TaskRenameFtraceEvent {
16101    #[prost(int32, optional, tag = "1")]
16102    pub pid: ::core::option::Option<i32>,
16103    #[prost(string, optional, tag = "2")]
16104    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16105    #[prost(string, optional, tag = "3")]
16106    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16107    #[prost(int32, optional, tag = "4")]
16108    pub oom_score_adj: ::core::option::Option<i32>,
16109}
16110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16111pub struct TcpRetransmitSkbFtraceEvent {
16112    #[prost(uint32, optional, tag = "1")]
16113    pub daddr: ::core::option::Option<u32>,
16114    #[prost(uint32, optional, tag = "2")]
16115    pub dport: ::core::option::Option<u32>,
16116    #[prost(uint32, optional, tag = "3")]
16117    pub saddr: ::core::option::Option<u32>,
16118    #[prost(uint64, optional, tag = "4")]
16119    pub skaddr: ::core::option::Option<u64>,
16120    #[prost(uint64, optional, tag = "5")]
16121    pub skbaddr: ::core::option::Option<u64>,
16122    #[prost(uint32, optional, tag = "6")]
16123    pub sport: ::core::option::Option<u32>,
16124    #[prost(int32, optional, tag = "7")]
16125    pub state: ::core::option::Option<i32>,
16126}
16127#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16128pub struct ThermalTemperatureFtraceEvent {
16129    #[prost(int32, optional, tag = "1")]
16130    pub id: ::core::option::Option<i32>,
16131    #[prost(int32, optional, tag = "2")]
16132    pub temp: ::core::option::Option<i32>,
16133    #[prost(int32, optional, tag = "3")]
16134    pub temp_prev: ::core::option::Option<i32>,
16135    #[prost(string, optional, tag = "4")]
16136    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16137}
16138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16139pub struct CdevUpdateFtraceEvent {
16140    #[prost(uint64, optional, tag = "1")]
16141    pub target: ::core::option::Option<u64>,
16142    #[prost(string, optional, tag = "2")]
16143    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
16144}
16145#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16146pub struct ThermalExynosAcpmBulkFtraceEvent {
16147    #[prost(uint32, optional, tag = "1")]
16148    pub tz_id: ::core::option::Option<u32>,
16149    #[prost(uint32, optional, tag = "2")]
16150    pub current_temp: ::core::option::Option<u32>,
16151    #[prost(uint32, optional, tag = "3")]
16152    pub ctrl_temp: ::core::option::Option<u32>,
16153    #[prost(uint32, optional, tag = "4")]
16154    pub cdev_state: ::core::option::Option<u32>,
16155    #[prost(int32, optional, tag = "5")]
16156    pub pid_et_p: ::core::option::Option<i32>,
16157    #[prost(int32, optional, tag = "6")]
16158    pub pid_power_range: ::core::option::Option<i32>,
16159    #[prost(int32, optional, tag = "7")]
16160    pub pid_p: ::core::option::Option<i32>,
16161    #[prost(int32, optional, tag = "8")]
16162    pub pid_i: ::core::option::Option<i32>,
16163    #[prost(int32, optional, tag = "9")]
16164    pub k_p: ::core::option::Option<i32>,
16165    #[prost(int32, optional, tag = "10")]
16166    pub k_i: ::core::option::Option<i32>,
16167    #[prost(uint64, optional, tag = "11")]
16168    pub timestamp: ::core::option::Option<u64>,
16169}
16170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16171pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
16172    #[prost(int32, optional, tag = "1")]
16173    pub tz_id: ::core::option::Option<i32>,
16174    #[prost(uint32, optional, tag = "2")]
16175    pub current_temp: ::core::option::Option<u32>,
16176    #[prost(uint32, optional, tag = "3")]
16177    pub ctrl_temp: ::core::option::Option<u32>,
16178    #[prost(uint32, optional, tag = "4")]
16179    pub cdev_state: ::core::option::Option<u32>,
16180    #[prost(int32, optional, tag = "5")]
16181    pub pid_et_p: ::core::option::Option<i32>,
16182    #[prost(int32, optional, tag = "6")]
16183    pub k_p: ::core::option::Option<i32>,
16184    #[prost(int32, optional, tag = "7")]
16185    pub k_i: ::core::option::Option<i32>,
16186}
16187#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16188pub struct HrtimerStartFtraceEvent {
16189    #[prost(uint64, optional, tag = "1")]
16190    pub hrtimer: ::core::option::Option<u64>,
16191    #[prost(uint64, optional, tag = "2")]
16192    pub function: ::core::option::Option<u64>,
16193    #[prost(int64, optional, tag = "3")]
16194    pub expires: ::core::option::Option<i64>,
16195    #[prost(int64, optional, tag = "4")]
16196    pub softexpires: ::core::option::Option<i64>,
16197    #[prost(uint32, optional, tag = "5")]
16198    pub mode: ::core::option::Option<u32>,
16199}
16200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16201pub struct HrtimerCancelFtraceEvent {
16202    #[prost(uint64, optional, tag = "1")]
16203    pub hrtimer: ::core::option::Option<u64>,
16204}
16205#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16206pub struct HrtimerExpireEntryFtraceEvent {
16207    #[prost(uint64, optional, tag = "1")]
16208    pub hrtimer: ::core::option::Option<u64>,
16209    #[prost(int64, optional, tag = "2")]
16210    pub now: ::core::option::Option<i64>,
16211    #[prost(uint64, optional, tag = "3")]
16212    pub function: ::core::option::Option<u64>,
16213}
16214#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16215pub struct HrtimerExpireExitFtraceEvent {
16216    #[prost(uint64, optional, tag = "1")]
16217    pub hrtimer: ::core::option::Option<u64>,
16218}
16219#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16220pub struct TimerStartFtraceEvent {
16221    #[prost(uint64, optional, tag = "1")]
16222    pub timer: ::core::option::Option<u64>,
16223    #[prost(uint64, optional, tag = "2")]
16224    pub function: ::core::option::Option<u64>,
16225    #[prost(uint64, optional, tag = "3")]
16226    pub expires: ::core::option::Option<u64>,
16227    #[prost(uint64, optional, tag = "4")]
16228    pub now: ::core::option::Option<u64>,
16229    #[prost(uint32, optional, tag = "5")]
16230    pub deferrable: ::core::option::Option<u32>,
16231    #[prost(uint32, optional, tag = "6")]
16232    pub flags: ::core::option::Option<u32>,
16233    #[prost(uint64, optional, tag = "7")]
16234    pub bucket_expiry: ::core::option::Option<u64>,
16235}
16236#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16237pub struct TimerCancelFtraceEvent {
16238    #[prost(uint64, optional, tag = "1")]
16239    pub timer: ::core::option::Option<u64>,
16240}
16241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16242pub struct TimerExpireEntryFtraceEvent {
16243    #[prost(uint64, optional, tag = "1")]
16244    pub timer: ::core::option::Option<u64>,
16245    #[prost(uint64, optional, tag = "2")]
16246    pub now: ::core::option::Option<u64>,
16247    #[prost(uint64, optional, tag = "3")]
16248    pub function: ::core::option::Option<u64>,
16249    #[prost(uint64, optional, tag = "4")]
16250    pub baseclk: ::core::option::Option<u64>,
16251}
16252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16253pub struct TimerExpireExitFtraceEvent {
16254    #[prost(uint64, optional, tag = "1")]
16255    pub timer: ::core::option::Option<u64>,
16256}
16257#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16258pub struct TrustySmcFtraceEvent {
16259    #[prost(uint64, optional, tag = "1")]
16260    pub r0: ::core::option::Option<u64>,
16261    #[prost(uint64, optional, tag = "2")]
16262    pub r1: ::core::option::Option<u64>,
16263    #[prost(uint64, optional, tag = "3")]
16264    pub r2: ::core::option::Option<u64>,
16265    #[prost(uint64, optional, tag = "4")]
16266    pub r3: ::core::option::Option<u64>,
16267}
16268#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16269pub struct TrustySmcDoneFtraceEvent {
16270    #[prost(uint64, optional, tag = "1")]
16271    pub ret: ::core::option::Option<u64>,
16272}
16273#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16274pub struct TrustyStdCall32FtraceEvent {
16275    #[prost(uint64, optional, tag = "1")]
16276    pub r0: ::core::option::Option<u64>,
16277    #[prost(uint64, optional, tag = "2")]
16278    pub r1: ::core::option::Option<u64>,
16279    #[prost(uint64, optional, tag = "3")]
16280    pub r2: ::core::option::Option<u64>,
16281    #[prost(uint64, optional, tag = "4")]
16282    pub r3: ::core::option::Option<u64>,
16283}
16284#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16285pub struct TrustyStdCall32DoneFtraceEvent {
16286    #[prost(int64, optional, tag = "1")]
16287    pub ret: ::core::option::Option<i64>,
16288}
16289#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16290pub struct TrustyShareMemoryFtraceEvent {
16291    #[prost(uint64, optional, tag = "1")]
16292    pub len: ::core::option::Option<u64>,
16293    #[prost(uint32, optional, tag = "2")]
16294    pub lend: ::core::option::Option<u32>,
16295    #[prost(uint32, optional, tag = "3")]
16296    pub nents: ::core::option::Option<u32>,
16297}
16298#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16299pub struct TrustyShareMemoryDoneFtraceEvent {
16300    #[prost(uint64, optional, tag = "1")]
16301    pub handle: ::core::option::Option<u64>,
16302    #[prost(uint64, optional, tag = "2")]
16303    pub len: ::core::option::Option<u64>,
16304    #[prost(uint32, optional, tag = "3")]
16305    pub lend: ::core::option::Option<u32>,
16306    #[prost(uint32, optional, tag = "4")]
16307    pub nents: ::core::option::Option<u32>,
16308    #[prost(int32, optional, tag = "5")]
16309    pub ret: ::core::option::Option<i32>,
16310}
16311#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16312pub struct TrustyReclaimMemoryFtraceEvent {
16313    #[prost(uint64, optional, tag = "1")]
16314    pub id: ::core::option::Option<u64>,
16315}
16316#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16317pub struct TrustyReclaimMemoryDoneFtraceEvent {
16318    #[prost(uint64, optional, tag = "1")]
16319    pub id: ::core::option::Option<u64>,
16320    #[prost(int32, optional, tag = "2")]
16321    pub ret: ::core::option::Option<i32>,
16322}
16323#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16324pub struct TrustyIrqFtraceEvent {
16325    #[prost(int32, optional, tag = "1")]
16326    pub irq: ::core::option::Option<i32>,
16327}
16328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16329pub struct TrustyIpcHandleEventFtraceEvent {
16330    #[prost(uint32, optional, tag = "1")]
16331    pub chan: ::core::option::Option<u32>,
16332    #[prost(uint32, optional, tag = "2")]
16333    pub event_id: ::core::option::Option<u32>,
16334    #[prost(string, optional, tag = "3")]
16335    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16336}
16337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16338pub struct TrustyIpcConnectFtraceEvent {
16339    #[prost(uint32, optional, tag = "1")]
16340    pub chan: ::core::option::Option<u32>,
16341    #[prost(string, optional, tag = "2")]
16342    pub port: ::core::option::Option<::prost::alloc::string::String>,
16343    #[prost(int32, optional, tag = "3")]
16344    pub state: ::core::option::Option<i32>,
16345}
16346#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16347pub struct TrustyIpcConnectEndFtraceEvent {
16348    #[prost(uint32, optional, tag = "1")]
16349    pub chan: ::core::option::Option<u32>,
16350    #[prost(int32, optional, tag = "2")]
16351    pub err: ::core::option::Option<i32>,
16352    #[prost(int32, optional, tag = "3")]
16353    pub state: ::core::option::Option<i32>,
16354}
16355#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16356pub struct TrustyIpcWriteFtraceEvent {
16357    #[prost(uint64, optional, tag = "1")]
16358    pub buf_id: ::core::option::Option<u64>,
16359    #[prost(uint32, optional, tag = "2")]
16360    pub chan: ::core::option::Option<u32>,
16361    #[prost(int32, optional, tag = "3")]
16362    pub kind_shm: ::core::option::Option<i32>,
16363    #[prost(int32, optional, tag = "4")]
16364    pub len_or_err: ::core::option::Option<i32>,
16365    #[prost(uint64, optional, tag = "5")]
16366    pub shm_cnt: ::core::option::Option<u64>,
16367    #[prost(string, optional, tag = "6")]
16368    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16369}
16370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16371pub struct TrustyIpcPollFtraceEvent {
16372    #[prost(uint32, optional, tag = "1")]
16373    pub chan: ::core::option::Option<u32>,
16374    #[prost(uint32, optional, tag = "2")]
16375    pub poll_mask: ::core::option::Option<u32>,
16376    #[prost(string, optional, tag = "3")]
16377    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16378}
16379#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16380pub struct TrustyIpcReadFtraceEvent {
16381    #[prost(uint32, optional, tag = "1")]
16382    pub chan: ::core::option::Option<u32>,
16383    #[prost(string, optional, tag = "2")]
16384    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16385}
16386#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16387pub struct TrustyIpcReadEndFtraceEvent {
16388    #[prost(uint64, optional, tag = "1")]
16389    pub buf_id: ::core::option::Option<u64>,
16390    #[prost(uint32, optional, tag = "2")]
16391    pub chan: ::core::option::Option<u32>,
16392    #[prost(int32, optional, tag = "3")]
16393    pub len_or_err: ::core::option::Option<i32>,
16394    #[prost(uint64, optional, tag = "4")]
16395    pub shm_cnt: ::core::option::Option<u64>,
16396    #[prost(string, optional, tag = "5")]
16397    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16398}
16399#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16400pub struct TrustyIpcRxFtraceEvent {
16401    #[prost(uint64, optional, tag = "1")]
16402    pub buf_id: ::core::option::Option<u64>,
16403    #[prost(uint32, optional, tag = "2")]
16404    pub chan: ::core::option::Option<u32>,
16405    #[prost(string, optional, tag = "3")]
16406    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16407}
16408#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16409pub struct TrustyEnqueueNopFtraceEvent {
16410    #[prost(uint32, optional, tag = "1")]
16411    pub arg1: ::core::option::Option<u32>,
16412    #[prost(uint32, optional, tag = "2")]
16413    pub arg2: ::core::option::Option<u32>,
16414    #[prost(uint32, optional, tag = "3")]
16415    pub arg3: ::core::option::Option<u32>,
16416}
16417#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16418pub struct UfshcdCommandFtraceEvent {
16419    #[prost(string, optional, tag = "1")]
16420    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16421    #[prost(uint32, optional, tag = "2")]
16422    pub doorbell: ::core::option::Option<u32>,
16423    #[prost(uint32, optional, tag = "3")]
16424    pub intr: ::core::option::Option<u32>,
16425    #[prost(uint64, optional, tag = "4")]
16426    pub lba: ::core::option::Option<u64>,
16427    #[prost(uint32, optional, tag = "5")]
16428    pub opcode: ::core::option::Option<u32>,
16429    #[prost(string, optional, tag = "6")]
16430    pub str: ::core::option::Option<::prost::alloc::string::String>,
16431    #[prost(uint32, optional, tag = "7")]
16432    pub tag: ::core::option::Option<u32>,
16433    #[prost(int32, optional, tag = "8")]
16434    pub transfer_len: ::core::option::Option<i32>,
16435    #[prost(uint32, optional, tag = "9")]
16436    pub group_id: ::core::option::Option<u32>,
16437    #[prost(uint32, optional, tag = "10")]
16438    pub str_t: ::core::option::Option<u32>,
16439}
16440#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16441pub struct UfshcdClkGatingFtraceEvent {
16442    #[prost(string, optional, tag = "1")]
16443    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16444    #[prost(int32, optional, tag = "2")]
16445    pub state: ::core::option::Option<i32>,
16446}
16447#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16448pub struct V4l2QbufFtraceEvent {
16449    #[prost(uint32, optional, tag = "1")]
16450    pub bytesused: ::core::option::Option<u32>,
16451    #[prost(uint32, optional, tag = "2")]
16452    pub field: ::core::option::Option<u32>,
16453    #[prost(uint32, optional, tag = "3")]
16454    pub flags: ::core::option::Option<u32>,
16455    #[prost(uint32, optional, tag = "4")]
16456    pub index: ::core::option::Option<u32>,
16457    #[prost(int32, optional, tag = "5")]
16458    pub minor: ::core::option::Option<i32>,
16459    #[prost(uint32, optional, tag = "6")]
16460    pub sequence: ::core::option::Option<u32>,
16461    #[prost(uint32, optional, tag = "7")]
16462    pub timecode_flags: ::core::option::Option<u32>,
16463    #[prost(uint32, optional, tag = "8")]
16464    pub timecode_frames: ::core::option::Option<u32>,
16465    #[prost(uint32, optional, tag = "9")]
16466    pub timecode_hours: ::core::option::Option<u32>,
16467    #[prost(uint32, optional, tag = "10")]
16468    pub timecode_minutes: ::core::option::Option<u32>,
16469    #[prost(uint32, optional, tag = "11")]
16470    pub timecode_seconds: ::core::option::Option<u32>,
16471    #[prost(uint32, optional, tag = "12")]
16472    pub timecode_type: ::core::option::Option<u32>,
16473    #[prost(uint32, optional, tag = "13")]
16474    pub timecode_userbits0: ::core::option::Option<u32>,
16475    #[prost(uint32, optional, tag = "14")]
16476    pub timecode_userbits1: ::core::option::Option<u32>,
16477    #[prost(uint32, optional, tag = "15")]
16478    pub timecode_userbits2: ::core::option::Option<u32>,
16479    #[prost(uint32, optional, tag = "16")]
16480    pub timecode_userbits3: ::core::option::Option<u32>,
16481    #[prost(int64, optional, tag = "17")]
16482    pub timestamp: ::core::option::Option<i64>,
16483    #[prost(uint32, optional, tag = "18")]
16484    pub r#type: ::core::option::Option<u32>,
16485}
16486#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16487pub struct V4l2DqbufFtraceEvent {
16488    #[prost(uint32, optional, tag = "1")]
16489    pub bytesused: ::core::option::Option<u32>,
16490    #[prost(uint32, optional, tag = "2")]
16491    pub field: ::core::option::Option<u32>,
16492    #[prost(uint32, optional, tag = "3")]
16493    pub flags: ::core::option::Option<u32>,
16494    #[prost(uint32, optional, tag = "4")]
16495    pub index: ::core::option::Option<u32>,
16496    #[prost(int32, optional, tag = "5")]
16497    pub minor: ::core::option::Option<i32>,
16498    #[prost(uint32, optional, tag = "6")]
16499    pub sequence: ::core::option::Option<u32>,
16500    #[prost(uint32, optional, tag = "7")]
16501    pub timecode_flags: ::core::option::Option<u32>,
16502    #[prost(uint32, optional, tag = "8")]
16503    pub timecode_frames: ::core::option::Option<u32>,
16504    #[prost(uint32, optional, tag = "9")]
16505    pub timecode_hours: ::core::option::Option<u32>,
16506    #[prost(uint32, optional, tag = "10")]
16507    pub timecode_minutes: ::core::option::Option<u32>,
16508    #[prost(uint32, optional, tag = "11")]
16509    pub timecode_seconds: ::core::option::Option<u32>,
16510    #[prost(uint32, optional, tag = "12")]
16511    pub timecode_type: ::core::option::Option<u32>,
16512    #[prost(uint32, optional, tag = "13")]
16513    pub timecode_userbits0: ::core::option::Option<u32>,
16514    #[prost(uint32, optional, tag = "14")]
16515    pub timecode_userbits1: ::core::option::Option<u32>,
16516    #[prost(uint32, optional, tag = "15")]
16517    pub timecode_userbits2: ::core::option::Option<u32>,
16518    #[prost(uint32, optional, tag = "16")]
16519    pub timecode_userbits3: ::core::option::Option<u32>,
16520    #[prost(int64, optional, tag = "17")]
16521    pub timestamp: ::core::option::Option<i64>,
16522    #[prost(uint32, optional, tag = "18")]
16523    pub r#type: ::core::option::Option<u32>,
16524}
16525#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16526pub struct Vb2V4l2BufQueueFtraceEvent {
16527    #[prost(uint32, optional, tag = "1")]
16528    pub field: ::core::option::Option<u32>,
16529    #[prost(uint32, optional, tag = "2")]
16530    pub flags: ::core::option::Option<u32>,
16531    #[prost(int32, optional, tag = "3")]
16532    pub minor: ::core::option::Option<i32>,
16533    #[prost(uint32, optional, tag = "4")]
16534    pub sequence: ::core::option::Option<u32>,
16535    #[prost(uint32, optional, tag = "5")]
16536    pub timecode_flags: ::core::option::Option<u32>,
16537    #[prost(uint32, optional, tag = "6")]
16538    pub timecode_frames: ::core::option::Option<u32>,
16539    #[prost(uint32, optional, tag = "7")]
16540    pub timecode_hours: ::core::option::Option<u32>,
16541    #[prost(uint32, optional, tag = "8")]
16542    pub timecode_minutes: ::core::option::Option<u32>,
16543    #[prost(uint32, optional, tag = "9")]
16544    pub timecode_seconds: ::core::option::Option<u32>,
16545    #[prost(uint32, optional, tag = "10")]
16546    pub timecode_type: ::core::option::Option<u32>,
16547    #[prost(uint32, optional, tag = "11")]
16548    pub timecode_userbits0: ::core::option::Option<u32>,
16549    #[prost(uint32, optional, tag = "12")]
16550    pub timecode_userbits1: ::core::option::Option<u32>,
16551    #[prost(uint32, optional, tag = "13")]
16552    pub timecode_userbits2: ::core::option::Option<u32>,
16553    #[prost(uint32, optional, tag = "14")]
16554    pub timecode_userbits3: ::core::option::Option<u32>,
16555    #[prost(int64, optional, tag = "15")]
16556    pub timestamp: ::core::option::Option<i64>,
16557}
16558#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16559pub struct Vb2V4l2BufDoneFtraceEvent {
16560    #[prost(uint32, optional, tag = "1")]
16561    pub field: ::core::option::Option<u32>,
16562    #[prost(uint32, optional, tag = "2")]
16563    pub flags: ::core::option::Option<u32>,
16564    #[prost(int32, optional, tag = "3")]
16565    pub minor: ::core::option::Option<i32>,
16566    #[prost(uint32, optional, tag = "4")]
16567    pub sequence: ::core::option::Option<u32>,
16568    #[prost(uint32, optional, tag = "5")]
16569    pub timecode_flags: ::core::option::Option<u32>,
16570    #[prost(uint32, optional, tag = "6")]
16571    pub timecode_frames: ::core::option::Option<u32>,
16572    #[prost(uint32, optional, tag = "7")]
16573    pub timecode_hours: ::core::option::Option<u32>,
16574    #[prost(uint32, optional, tag = "8")]
16575    pub timecode_minutes: ::core::option::Option<u32>,
16576    #[prost(uint32, optional, tag = "9")]
16577    pub timecode_seconds: ::core::option::Option<u32>,
16578    #[prost(uint32, optional, tag = "10")]
16579    pub timecode_type: ::core::option::Option<u32>,
16580    #[prost(uint32, optional, tag = "11")]
16581    pub timecode_userbits0: ::core::option::Option<u32>,
16582    #[prost(uint32, optional, tag = "12")]
16583    pub timecode_userbits1: ::core::option::Option<u32>,
16584    #[prost(uint32, optional, tag = "13")]
16585    pub timecode_userbits2: ::core::option::Option<u32>,
16586    #[prost(uint32, optional, tag = "14")]
16587    pub timecode_userbits3: ::core::option::Option<u32>,
16588    #[prost(int64, optional, tag = "15")]
16589    pub timestamp: ::core::option::Option<i64>,
16590}
16591#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16592pub struct Vb2V4l2QbufFtraceEvent {
16593    #[prost(uint32, optional, tag = "1")]
16594    pub field: ::core::option::Option<u32>,
16595    #[prost(uint32, optional, tag = "2")]
16596    pub flags: ::core::option::Option<u32>,
16597    #[prost(int32, optional, tag = "3")]
16598    pub minor: ::core::option::Option<i32>,
16599    #[prost(uint32, optional, tag = "4")]
16600    pub sequence: ::core::option::Option<u32>,
16601    #[prost(uint32, optional, tag = "5")]
16602    pub timecode_flags: ::core::option::Option<u32>,
16603    #[prost(uint32, optional, tag = "6")]
16604    pub timecode_frames: ::core::option::Option<u32>,
16605    #[prost(uint32, optional, tag = "7")]
16606    pub timecode_hours: ::core::option::Option<u32>,
16607    #[prost(uint32, optional, tag = "8")]
16608    pub timecode_minutes: ::core::option::Option<u32>,
16609    #[prost(uint32, optional, tag = "9")]
16610    pub timecode_seconds: ::core::option::Option<u32>,
16611    #[prost(uint32, optional, tag = "10")]
16612    pub timecode_type: ::core::option::Option<u32>,
16613    #[prost(uint32, optional, tag = "11")]
16614    pub timecode_userbits0: ::core::option::Option<u32>,
16615    #[prost(uint32, optional, tag = "12")]
16616    pub timecode_userbits1: ::core::option::Option<u32>,
16617    #[prost(uint32, optional, tag = "13")]
16618    pub timecode_userbits2: ::core::option::Option<u32>,
16619    #[prost(uint32, optional, tag = "14")]
16620    pub timecode_userbits3: ::core::option::Option<u32>,
16621    #[prost(int64, optional, tag = "15")]
16622    pub timestamp: ::core::option::Option<i64>,
16623}
16624#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16625pub struct Vb2V4l2DqbufFtraceEvent {
16626    #[prost(uint32, optional, tag = "1")]
16627    pub field: ::core::option::Option<u32>,
16628    #[prost(uint32, optional, tag = "2")]
16629    pub flags: ::core::option::Option<u32>,
16630    #[prost(int32, optional, tag = "3")]
16631    pub minor: ::core::option::Option<i32>,
16632    #[prost(uint32, optional, tag = "4")]
16633    pub sequence: ::core::option::Option<u32>,
16634    #[prost(uint32, optional, tag = "5")]
16635    pub timecode_flags: ::core::option::Option<u32>,
16636    #[prost(uint32, optional, tag = "6")]
16637    pub timecode_frames: ::core::option::Option<u32>,
16638    #[prost(uint32, optional, tag = "7")]
16639    pub timecode_hours: ::core::option::Option<u32>,
16640    #[prost(uint32, optional, tag = "8")]
16641    pub timecode_minutes: ::core::option::Option<u32>,
16642    #[prost(uint32, optional, tag = "9")]
16643    pub timecode_seconds: ::core::option::Option<u32>,
16644    #[prost(uint32, optional, tag = "10")]
16645    pub timecode_type: ::core::option::Option<u32>,
16646    #[prost(uint32, optional, tag = "11")]
16647    pub timecode_userbits0: ::core::option::Option<u32>,
16648    #[prost(uint32, optional, tag = "12")]
16649    pub timecode_userbits1: ::core::option::Option<u32>,
16650    #[prost(uint32, optional, tag = "13")]
16651    pub timecode_userbits2: ::core::option::Option<u32>,
16652    #[prost(uint32, optional, tag = "14")]
16653    pub timecode_userbits3: ::core::option::Option<u32>,
16654    #[prost(int64, optional, tag = "15")]
16655    pub timestamp: ::core::option::Option<i64>,
16656}
16657#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16658pub struct VirtioGpuCmdQueueFtraceEvent {
16659    #[prost(uint32, optional, tag = "1")]
16660    pub ctx_id: ::core::option::Option<u32>,
16661    #[prost(int32, optional, tag = "2")]
16662    pub dev: ::core::option::Option<i32>,
16663    #[prost(uint64, optional, tag = "3")]
16664    pub fence_id: ::core::option::Option<u64>,
16665    #[prost(uint32, optional, tag = "4")]
16666    pub flags: ::core::option::Option<u32>,
16667    #[prost(string, optional, tag = "5")]
16668    pub name: ::core::option::Option<::prost::alloc::string::String>,
16669    #[prost(uint32, optional, tag = "6")]
16670    pub num_free: ::core::option::Option<u32>,
16671    #[prost(uint32, optional, tag = "7")]
16672    pub seqno: ::core::option::Option<u32>,
16673    #[prost(uint32, optional, tag = "8")]
16674    pub r#type: ::core::option::Option<u32>,
16675    #[prost(uint32, optional, tag = "9")]
16676    pub vq: ::core::option::Option<u32>,
16677}
16678#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16679pub struct VirtioGpuCmdResponseFtraceEvent {
16680    #[prost(uint32, optional, tag = "1")]
16681    pub ctx_id: ::core::option::Option<u32>,
16682    #[prost(int32, optional, tag = "2")]
16683    pub dev: ::core::option::Option<i32>,
16684    #[prost(uint64, optional, tag = "3")]
16685    pub fence_id: ::core::option::Option<u64>,
16686    #[prost(uint32, optional, tag = "4")]
16687    pub flags: ::core::option::Option<u32>,
16688    #[prost(string, optional, tag = "5")]
16689    pub name: ::core::option::Option<::prost::alloc::string::String>,
16690    #[prost(uint32, optional, tag = "6")]
16691    pub num_free: ::core::option::Option<u32>,
16692    #[prost(uint32, optional, tag = "7")]
16693    pub seqno: ::core::option::Option<u32>,
16694    #[prost(uint32, optional, tag = "8")]
16695    pub r#type: ::core::option::Option<u32>,
16696    #[prost(uint32, optional, tag = "9")]
16697    pub vq: ::core::option::Option<u32>,
16698}
16699#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16700pub struct VirtioVideoCmdFtraceEvent {
16701    #[prost(uint32, optional, tag = "1")]
16702    pub stream_id: ::core::option::Option<u32>,
16703    #[prost(uint32, optional, tag = "2")]
16704    pub r#type: ::core::option::Option<u32>,
16705}
16706#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16707pub struct VirtioVideoCmdDoneFtraceEvent {
16708    #[prost(uint32, optional, tag = "1")]
16709    pub stream_id: ::core::option::Option<u32>,
16710    #[prost(uint32, optional, tag = "2")]
16711    pub r#type: ::core::option::Option<u32>,
16712}
16713#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16714pub struct VirtioVideoResourceQueueFtraceEvent {
16715    #[prost(uint32, optional, tag = "1")]
16716    pub data_size0: ::core::option::Option<u32>,
16717    #[prost(uint32, optional, tag = "2")]
16718    pub data_size1: ::core::option::Option<u32>,
16719    #[prost(uint32, optional, tag = "3")]
16720    pub data_size2: ::core::option::Option<u32>,
16721    #[prost(uint32, optional, tag = "4")]
16722    pub data_size3: ::core::option::Option<u32>,
16723    #[prost(uint32, optional, tag = "5")]
16724    pub queue_type: ::core::option::Option<u32>,
16725    #[prost(int32, optional, tag = "6")]
16726    pub resource_id: ::core::option::Option<i32>,
16727    #[prost(int32, optional, tag = "7")]
16728    pub stream_id: ::core::option::Option<i32>,
16729    #[prost(uint64, optional, tag = "8")]
16730    pub timestamp: ::core::option::Option<u64>,
16731}
16732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16733pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16734    #[prost(uint32, optional, tag = "1")]
16735    pub data_size0: ::core::option::Option<u32>,
16736    #[prost(uint32, optional, tag = "2")]
16737    pub data_size1: ::core::option::Option<u32>,
16738    #[prost(uint32, optional, tag = "3")]
16739    pub data_size2: ::core::option::Option<u32>,
16740    #[prost(uint32, optional, tag = "4")]
16741    pub data_size3: ::core::option::Option<u32>,
16742    #[prost(uint32, optional, tag = "5")]
16743    pub queue_type: ::core::option::Option<u32>,
16744    #[prost(int32, optional, tag = "6")]
16745    pub resource_id: ::core::option::Option<i32>,
16746    #[prost(int32, optional, tag = "7")]
16747    pub stream_id: ::core::option::Option<i32>,
16748    #[prost(uint64, optional, tag = "8")]
16749    pub timestamp: ::core::option::Option<u64>,
16750}
16751#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16752pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16753    #[prost(int32, optional, tag = "1")]
16754    pub order: ::core::option::Option<i32>,
16755    #[prost(int32, optional, tag = "2")]
16756    pub may_writepage: ::core::option::Option<i32>,
16757    #[prost(uint32, optional, tag = "3")]
16758    pub gfp_flags: ::core::option::Option<u32>,
16759}
16760#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16761pub struct MmVmscanDirectReclaimEndFtraceEvent {
16762    #[prost(uint64, optional, tag = "1")]
16763    pub nr_reclaimed: ::core::option::Option<u64>,
16764}
16765#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16766pub struct MmVmscanKswapdWakeFtraceEvent {
16767    #[prost(int32, optional, tag = "1")]
16768    pub nid: ::core::option::Option<i32>,
16769    #[prost(int32, optional, tag = "2")]
16770    pub order: ::core::option::Option<i32>,
16771    #[prost(int32, optional, tag = "3")]
16772    pub zid: ::core::option::Option<i32>,
16773}
16774#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16775pub struct MmVmscanKswapdSleepFtraceEvent {
16776    #[prost(int32, optional, tag = "1")]
16777    pub nid: ::core::option::Option<i32>,
16778}
16779#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16780pub struct MmShrinkSlabStartFtraceEvent {
16781    #[prost(uint64, optional, tag = "1")]
16782    pub cache_items: ::core::option::Option<u64>,
16783    #[prost(uint64, optional, tag = "2")]
16784    pub delta: ::core::option::Option<u64>,
16785    #[prost(uint32, optional, tag = "3")]
16786    pub gfp_flags: ::core::option::Option<u32>,
16787    #[prost(uint64, optional, tag = "4")]
16788    pub lru_pgs: ::core::option::Option<u64>,
16789    #[prost(int64, optional, tag = "5")]
16790    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16791    #[prost(uint64, optional, tag = "6")]
16792    pub pgs_scanned: ::core::option::Option<u64>,
16793    #[prost(uint64, optional, tag = "7")]
16794    pub shr: ::core::option::Option<u64>,
16795    #[prost(uint64, optional, tag = "8")]
16796    pub shrink: ::core::option::Option<u64>,
16797    #[prost(uint64, optional, tag = "9")]
16798    pub total_scan: ::core::option::Option<u64>,
16799    #[prost(int32, optional, tag = "10")]
16800    pub nid: ::core::option::Option<i32>,
16801    #[prost(int32, optional, tag = "11")]
16802    pub priority: ::core::option::Option<i32>,
16803}
16804#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16805pub struct MmShrinkSlabEndFtraceEvent {
16806    #[prost(int64, optional, tag = "1")]
16807    pub new_scan: ::core::option::Option<i64>,
16808    #[prost(int32, optional, tag = "2")]
16809    pub retval: ::core::option::Option<i32>,
16810    #[prost(uint64, optional, tag = "3")]
16811    pub shr: ::core::option::Option<u64>,
16812    #[prost(uint64, optional, tag = "4")]
16813    pub shrink: ::core::option::Option<u64>,
16814    #[prost(int64, optional, tag = "5")]
16815    pub total_scan: ::core::option::Option<i64>,
16816    #[prost(int64, optional, tag = "6")]
16817    pub unused_scan: ::core::option::Option<i64>,
16818    #[prost(int32, optional, tag = "7")]
16819    pub nid: ::core::option::Option<i32>,
16820}
16821#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16822pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
16823    #[prost(int32, optional, tag = "1")]
16824    pub order: ::core::option::Option<i32>,
16825    #[prost(int32, optional, tag = "2")]
16826    pub may_writepage: ::core::option::Option<i32>,
16827    #[prost(uint64, optional, tag = "3")]
16828    pub gfp_flags: ::core::option::Option<u64>,
16829}
16830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16831pub struct MmVmscanMemcgReclaimEndFtraceEvent {
16832    #[prost(uint64, optional, tag = "1")]
16833    pub nr_reclaimed: ::core::option::Option<u64>,
16834}
16835#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16836pub struct WorkqueueActivateWorkFtraceEvent {
16837    #[prost(uint64, optional, tag = "1")]
16838    pub work: ::core::option::Option<u64>,
16839    #[prost(uint64, optional, tag = "2")]
16840    pub function: ::core::option::Option<u64>,
16841}
16842#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16843pub struct WorkqueueExecuteEndFtraceEvent {
16844    #[prost(uint64, optional, tag = "1")]
16845    pub work: ::core::option::Option<u64>,
16846    #[prost(uint64, optional, tag = "2")]
16847    pub function: ::core::option::Option<u64>,
16848}
16849#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16850pub struct WorkqueueExecuteStartFtraceEvent {
16851    #[prost(uint64, optional, tag = "1")]
16852    pub work: ::core::option::Option<u64>,
16853    #[prost(uint64, optional, tag = "2")]
16854    pub function: ::core::option::Option<u64>,
16855}
16856#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16857pub struct WorkqueueQueueWorkFtraceEvent {
16858    #[prost(uint64, optional, tag = "1")]
16859    pub work: ::core::option::Option<u64>,
16860    #[prost(uint64, optional, tag = "2")]
16861    pub function: ::core::option::Option<u64>,
16862    #[prost(int32, optional, tag = "4")]
16863    pub req_cpu: ::core::option::Option<i32>,
16864    #[prost(int32, optional, tag = "5")]
16865    pub cpu: ::core::option::Option<i32>,
16866    #[prost(string, optional, tag = "6")]
16867    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16868}
16869#[derive(Clone, PartialEq, ::prost::Message)]
16870pub struct FtraceEvent {
16871    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16872    #[prost(uint64, optional, tag = "1")]
16873    pub timestamp: ::core::option::Option<u64>,
16874    /// Kernel pid (do not confuse with userspace pid aka tgid).
16875    #[prost(uint32, optional, tag = "2")]
16876    pub pid: ::core::option::Option<u32>,
16877    /// Not populated in actual traces. Wire format might change.
16878    /// Placeholder declaration so that the ftrace parsing code accepts the
16879    /// existence of this common field. If this becomes needed for all events:
16880    /// consider merging with common_preempt_count to avoid extra proto tags.
16881    #[prost(uint32, optional, tag = "5")]
16882    pub common_flags: ::core::option::Option<u32>,
16883    #[prost(
16884        oneof = "ftrace_event::Event",
16885        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"
16886    )]
16887    pub event: ::core::option::Option<ftrace_event::Event>,
16888}
16889/// Nested message and enum types in `FtraceEvent`.
16890pub mod ftrace_event {
16891    #[derive(Clone, PartialEq, ::prost::Oneof)]
16892    pub enum Event {
16893        #[prost(message, tag = "3")]
16894        Print(super::PrintFtraceEvent),
16895        #[prost(message, tag = "4")]
16896        SchedSwitch(super::SchedSwitchFtraceEvent),
16897        /// removed field with id 5;
16898        /// removed field with id 6;
16899        /// removed field with id 7;
16900        /// removed field with id 8;
16901        /// removed field with id 9;
16902        /// removed field with id 10;
16903        #[prost(message, tag = "11")]
16904        CpuFrequency(super::CpuFrequencyFtraceEvent),
16905        #[prost(message, tag = "12")]
16906        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16907        #[prost(message, tag = "13")]
16908        CpuIdle(super::CpuIdleFtraceEvent),
16909        #[prost(message, tag = "14")]
16910        ClockEnable(super::ClockEnableFtraceEvent),
16911        #[prost(message, tag = "15")]
16912        ClockDisable(super::ClockDisableFtraceEvent),
16913        #[prost(message, tag = "16")]
16914        ClockSetRate(super::ClockSetRateFtraceEvent),
16915        #[prost(message, tag = "17")]
16916        SchedWakeup(super::SchedWakeupFtraceEvent),
16917        #[prost(message, tag = "18")]
16918        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16919        #[prost(message, tag = "19")]
16920        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16921        #[prost(message, tag = "20")]
16922        SchedWaking(super::SchedWakingFtraceEvent),
16923        #[prost(message, tag = "21")]
16924        IpiEntry(super::IpiEntryFtraceEvent),
16925        #[prost(message, tag = "22")]
16926        IpiExit(super::IpiExitFtraceEvent),
16927        #[prost(message, tag = "23")]
16928        IpiRaise(super::IpiRaiseFtraceEvent),
16929        #[prost(message, tag = "24")]
16930        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16931        #[prost(message, tag = "25")]
16932        SoftirqExit(super::SoftirqExitFtraceEvent),
16933        #[prost(message, tag = "26")]
16934        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16935        #[prost(message, tag = "27")]
16936        I2cRead(super::I2cReadFtraceEvent),
16937        #[prost(message, tag = "28")]
16938        I2cWrite(super::I2cWriteFtraceEvent),
16939        #[prost(message, tag = "29")]
16940        I2cResult(super::I2cResultFtraceEvent),
16941        #[prost(message, tag = "30")]
16942        I2cReply(super::I2cReplyFtraceEvent),
16943        #[prost(message, tag = "31")]
16944        SmbusRead(super::SmbusReadFtraceEvent),
16945        #[prost(message, tag = "32")]
16946        SmbusWrite(super::SmbusWriteFtraceEvent),
16947        #[prost(message, tag = "33")]
16948        SmbusResult(super::SmbusResultFtraceEvent),
16949        #[prost(message, tag = "34")]
16950        SmbusReply(super::SmbusReplyFtraceEvent),
16951        #[prost(message, tag = "35")]
16952        LowmemoryKill(super::LowmemoryKillFtraceEvent),
16953        #[prost(message, tag = "36")]
16954        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
16955        #[prost(message, tag = "37")]
16956        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
16957        #[prost(message, tag = "38")]
16958        SyncPt(super::SyncPtFtraceEvent),
16959        #[prost(message, tag = "39")]
16960        SyncTimeline(super::SyncTimelineFtraceEvent),
16961        #[prost(message, tag = "40")]
16962        SyncWait(super::SyncWaitFtraceEvent),
16963        #[prost(message, tag = "41")]
16964        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
16965        #[prost(message, tag = "42")]
16966        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
16967        #[prost(message, tag = "43")]
16968        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
16969        #[prost(message, tag = "44")]
16970        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
16971        #[prost(message, tag = "45")]
16972        BlockRqIssue(super::BlockRqIssueFtraceEvent),
16973        #[prost(message, tag = "46")]
16974        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
16975        #[prost(message, tag = "47")]
16976        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
16977        #[prost(message, tag = "48")]
16978        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
16979        #[prost(message, tag = "49")]
16980        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
16981        #[prost(message, tag = "50")]
16982        BinderTransaction(super::BinderTransactionFtraceEvent),
16983        #[prost(message, tag = "51")]
16984        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
16985        #[prost(message, tag = "52")]
16986        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
16987        #[prost(message, tag = "53")]
16988        BinderLock(super::BinderLockFtraceEvent),
16989        #[prost(message, tag = "54")]
16990        BinderLocked(super::BinderLockedFtraceEvent),
16991        #[prost(message, tag = "55")]
16992        BinderUnlock(super::BinderUnlockFtraceEvent),
16993        #[prost(message, tag = "56")]
16994        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
16995        #[prost(message, tag = "57")]
16996        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
16997        #[prost(message, tag = "58")]
16998        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
16999        #[prost(message, tag = "59")]
17000        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17001        #[prost(message, tag = "60")]
17002        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17003        #[prost(message, tag = "61")]
17004        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17005        #[prost(message, tag = "62")]
17006        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17007        #[prost(message, tag = "63")]
17008        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17009        #[prost(message, tag = "64")]
17010        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17011        #[prost(message, tag = "65")]
17012        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17013        #[prost(message, tag = "66")]
17014        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17015        #[prost(message, tag = "67")]
17016        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17017        #[prost(message, tag = "68")]
17018        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17019        #[prost(message, tag = "69")]
17020        CgroupRemount(super::CgroupRemountFtraceEvent),
17021        #[prost(message, tag = "70")]
17022        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17023        #[prost(message, tag = "71")]
17024        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17025        #[prost(message, tag = "72")]
17026        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17027        #[prost(message, tag = "73")]
17028        CgroupRelease(super::CgroupReleaseFtraceEvent),
17029        #[prost(message, tag = "74")]
17030        CgroupRename(super::CgroupRenameFtraceEvent),
17031        #[prost(message, tag = "75")]
17032        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17033        #[prost(message, tag = "76")]
17034        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17035        #[prost(message, tag = "77")]
17036        MdpCommit(super::MdpCommitFtraceEvent),
17037        #[prost(message, tag = "78")]
17038        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17039        #[prost(message, tag = "79")]
17040        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17041        #[prost(message, tag = "80")]
17042        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17043        #[prost(message, tag = "81")]
17044        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17045        #[prost(message, tag = "82")]
17046        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17047        #[prost(message, tag = "83")]
17048        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17049        #[prost(message, tag = "84")]
17050        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17051        #[prost(message, tag = "85")]
17052        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17053        #[prost(message, tag = "86")]
17054        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17055        #[prost(message, tag = "87")]
17056        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17057        #[prost(message, tag = "88")]
17058        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17059        #[prost(message, tag = "89")]
17060        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17061        #[prost(message, tag = "90")]
17062        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17063        #[prost(message, tag = "91")]
17064        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17065        #[prost(message, tag = "92")]
17066        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17067        #[prost(message, tag = "93")]
17068        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17069        #[prost(message, tag = "94")]
17070        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17071        #[prost(message, tag = "95")]
17072        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17073        #[prost(message, tag = "96")]
17074        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17075        #[prost(message, tag = "97")]
17076        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17077        #[prost(message, tag = "98")]
17078        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17079        #[prost(message, tag = "99")]
17080        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17081        #[prost(message, tag = "100")]
17082        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17083        #[prost(message, tag = "101")]
17084        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17085        #[prost(message, tag = "102")]
17086        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17087        #[prost(message, tag = "103")]
17088        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17089        #[prost(message, tag = "104")]
17090        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17091        #[prost(message, tag = "105")]
17092        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17093        #[prost(message, tag = "106")]
17094        MmCompactionIsolateMigratepages(
17095            super::MmCompactionIsolateMigratepagesFtraceEvent,
17096        ),
17097        #[prost(message, tag = "107")]
17098        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17099        #[prost(message, tag = "108")]
17100        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17101        #[prost(message, tag = "109")]
17102        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17103        #[prost(message, tag = "110")]
17104        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17105        #[prost(message, tag = "111")]
17106        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17107        #[prost(message, tag = "112")]
17108        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17109        #[prost(message, tag = "113")]
17110        SuspendResume(super::SuspendResumeFtraceEvent),
17111        #[prost(message, tag = "114")]
17112        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17113        #[prost(message, tag = "115")]
17114        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17115        #[prost(message, tag = "116")]
17116        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17117        #[prost(message, tag = "117")]
17118        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17119        #[prost(message, tag = "118")]
17120        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17121        #[prost(message, tag = "119")]
17122        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17123        #[prost(message, tag = "120")]
17124        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17125        #[prost(message, tag = "121")]
17126        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17127        #[prost(message, tag = "122")]
17128        BlockGetrq(super::BlockGetrqFtraceEvent),
17129        #[prost(message, tag = "123")]
17130        BlockPlug(super::BlockPlugFtraceEvent),
17131        #[prost(message, tag = "124")]
17132        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17133        #[prost(message, tag = "125")]
17134        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17135        #[prost(message, tag = "126")]
17136        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17137        /// removed field with id 127;
17138        #[prost(message, tag = "128")]
17139        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17140        #[prost(message, tag = "129")]
17141        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17142        #[prost(message, tag = "130")]
17143        BlockSleeprq(super::BlockSleeprqFtraceEvent),
17144        #[prost(message, tag = "131")]
17145        BlockSplit(super::BlockSplitFtraceEvent),
17146        #[prost(message, tag = "132")]
17147        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
17148        #[prost(message, tag = "133")]
17149        BlockUnplug(super::BlockUnplugFtraceEvent),
17150        #[prost(message, tag = "134")]
17151        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
17152        #[prost(message, tag = "135")]
17153        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
17154        #[prost(message, tag = "136")]
17155        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
17156        #[prost(message, tag = "137")]
17157        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
17158        #[prost(message, tag = "138")]
17159        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
17160        #[prost(message, tag = "139")]
17161        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
17162        #[prost(message, tag = "140")]
17163        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
17164        #[prost(message, tag = "141")]
17165        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
17166        #[prost(message, tag = "142")]
17167        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
17168        #[prost(message, tag = "143")]
17169        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
17170        #[prost(message, tag = "144")]
17171        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
17172        #[prost(message, tag = "145")]
17173        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
17174        #[prost(message, tag = "146")]
17175        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
17176        #[prost(message, tag = "147")]
17177        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
17178        #[prost(message, tag = "148")]
17179        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
17180        #[prost(message, tag = "149")]
17181        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
17182        #[prost(message, tag = "150")]
17183        Ext4EsFindDelayedExtentRangeEnter(
17184            super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent,
17185        ),
17186        #[prost(message, tag = "151")]
17187        Ext4EsFindDelayedExtentRangeExit(
17188            super::Ext4EsFindDelayedExtentRangeExitFtraceEvent,
17189        ),
17190        #[prost(message, tag = "152")]
17191        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
17192        #[prost(message, tag = "153")]
17193        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
17194        #[prost(message, tag = "154")]
17195        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
17196        #[prost(message, tag = "155")]
17197        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
17198        #[prost(message, tag = "156")]
17199        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
17200        #[prost(message, tag = "157")]
17201        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17202        #[prost(message, tag = "158")]
17203        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17204        #[prost(message, tag = "159")]
17205        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17206        #[prost(message, tag = "160")]
17207        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17208        #[prost(message, tag = "161")]
17209        Ext4ExtConvertToInitializedEnter(
17210            super::Ext4ExtConvertToInitializedEnterFtraceEvent,
17211        ),
17212        #[prost(message, tag = "162")]
17213        Ext4ExtConvertToInitializedFastpath(
17214            super::Ext4ExtConvertToInitializedFastpathFtraceEvent,
17215        ),
17216        #[prost(message, tag = "163")]
17217        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17218        #[prost(message, tag = "164")]
17219        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17220        #[prost(message, tag = "165")]
17221        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17222        #[prost(message, tag = "166")]
17223        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17224        #[prost(message, tag = "167")]
17225        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17226        #[prost(message, tag = "168")]
17227        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17228        #[prost(message, tag = "169")]
17229        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17230        #[prost(message, tag = "170")]
17231        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17232        #[prost(message, tag = "171")]
17233        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17234        #[prost(message, tag = "172")]
17235        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17236        #[prost(message, tag = "173")]
17237        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17238        #[prost(message, tag = "174")]
17239        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17240        #[prost(message, tag = "175")]
17241        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17242        #[prost(message, tag = "176")]
17243        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17244        #[prost(message, tag = "177")]
17245        Ext4Forget(super::Ext4ForgetFtraceEvent),
17246        #[prost(message, tag = "178")]
17247        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17248        #[prost(message, tag = "179")]
17249        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17250        #[prost(message, tag = "180")]
17251        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17252        #[prost(message, tag = "181")]
17253        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17254        #[prost(message, tag = "182")]
17255        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17256        #[prost(message, tag = "183")]
17257        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17258        #[prost(message, tag = "184")]
17259        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17260        #[prost(message, tag = "185")]
17261        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17262        #[prost(message, tag = "186")]
17263        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17264        #[prost(message, tag = "187")]
17265        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17266        #[prost(message, tag = "188")]
17267        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17268        #[prost(message, tag = "189")]
17269        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17270        #[prost(message, tag = "190")]
17271        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17272        #[prost(message, tag = "191")]
17273        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17274        #[prost(message, tag = "192")]
17275        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17276        #[prost(message, tag = "193")]
17277        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17278        #[prost(message, tag = "194")]
17279        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17280        #[prost(message, tag = "195")]
17281        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17282        #[prost(message, tag = "196")]
17283        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17284        #[prost(message, tag = "197")]
17285        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17286        #[prost(message, tag = "198")]
17287        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17288        #[prost(message, tag = "199")]
17289        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17290        #[prost(message, tag = "200")]
17291        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17292        #[prost(message, tag = "201")]
17293        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17294        #[prost(message, tag = "202")]
17295        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17296        #[prost(message, tag = "203")]
17297        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17298        #[prost(message, tag = "204")]
17299        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17300        #[prost(message, tag = "205")]
17301        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17302        #[prost(message, tag = "206")]
17303        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17304        #[prost(message, tag = "207")]
17305        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17306        #[prost(message, tag = "208")]
17307        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17308        #[prost(message, tag = "209")]
17309        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17310        #[prost(message, tag = "210")]
17311        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17312        #[prost(message, tag = "211")]
17313        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
17314        #[prost(message, tag = "212")]
17315        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
17316        #[prost(message, tag = "213")]
17317        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
17318        #[prost(message, tag = "214")]
17319        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
17320        #[prost(message, tag = "215")]
17321        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
17322        #[prost(message, tag = "216")]
17323        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
17324        #[prost(message, tag = "217")]
17325        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
17326        #[prost(message, tag = "218")]
17327        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
17328        #[prost(message, tag = "219")]
17329        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
17330        /// removed field with id 220;
17331        /// removed field with id 221;
17332        /// removed field with id 222;
17333        /// removed field with id 223;
17334        /// removed field with id 224;
17335        /// removed field with id 225;
17336        /// removed field with id 226;
17337        /// removed field with id 227;
17338        /// removed field with id 228;
17339        /// removed field with id 229;
17340        #[prost(message, tag = "230")]
17341        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
17342        #[prost(message, tag = "231")]
17343        Ext4Writepage(super::Ext4WritepageFtraceEvent),
17344        #[prost(message, tag = "232")]
17345        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
17346        #[prost(message, tag = "233")]
17347        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
17348        #[prost(message, tag = "234")]
17349        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
17350        #[prost(message, tag = "235")]
17351        TaskNewtask(super::TaskNewtaskFtraceEvent),
17352        #[prost(message, tag = "236")]
17353        TaskRename(super::TaskRenameFtraceEvent),
17354        #[prost(message, tag = "237")]
17355        SchedProcessExec(super::SchedProcessExecFtraceEvent),
17356        #[prost(message, tag = "238")]
17357        SchedProcessExit(super::SchedProcessExitFtraceEvent),
17358        #[prost(message, tag = "239")]
17359        SchedProcessFork(super::SchedProcessForkFtraceEvent),
17360        #[prost(message, tag = "240")]
17361        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
17362        #[prost(message, tag = "241")]
17363        SchedProcessHang(super::SchedProcessHangFtraceEvent),
17364        #[prost(message, tag = "242")]
17365        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
17366        #[prost(message, tag = "243")]
17367        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
17368        #[prost(message, tag = "244")]
17369        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
17370        #[prost(message, tag = "245")]
17371        F2fsFallocate(super::F2fsFallocateFtraceEvent),
17372        #[prost(message, tag = "246")]
17373        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
17374        #[prost(message, tag = "247")]
17375        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17376        #[prost(message, tag = "248")]
17377        F2fsIget(super::F2fsIgetFtraceEvent),
17378        #[prost(message, tag = "249")]
17379        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17380        #[prost(message, tag = "250")]
17381        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17382        #[prost(message, tag = "251")]
17383        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17384        #[prost(message, tag = "252")]
17385        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17386        #[prost(message, tag = "253")]
17387        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17388        #[prost(message, tag = "254")]
17389        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17390        #[prost(message, tag = "255")]
17391        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17392        #[prost(message, tag = "256")]
17393        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17394        #[prost(message, tag = "257")]
17395        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17396        #[prost(message, tag = "258")]
17397        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17398        #[prost(message, tag = "259")]
17399        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17400        #[prost(message, tag = "260")]
17401        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17402        #[prost(message, tag = "261")]
17403        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17404        #[prost(message, tag = "262")]
17405        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17406        #[prost(message, tag = "263")]
17407        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17408        #[prost(message, tag = "264")]
17409        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17410        #[prost(message, tag = "265")]
17411        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17412        #[prost(message, tag = "266")]
17413        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17414        #[prost(message, tag = "267")]
17415        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17416        #[prost(message, tag = "268")]
17417        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17418        #[prost(message, tag = "269")]
17419        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17420        #[prost(message, tag = "270")]
17421        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17422        #[prost(message, tag = "271")]
17423        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17424        #[prost(message, tag = "272")]
17425        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17426        #[prost(message, tag = "273")]
17427        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17428        #[prost(message, tag = "274")]
17429        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17430        #[prost(message, tag = "275")]
17431        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17432        #[prost(message, tag = "276")]
17433        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17434        #[prost(message, tag = "277")]
17435        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17436        #[prost(message, tag = "278")]
17437        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17438        #[prost(message, tag = "279")]
17439        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17440        #[prost(message, tag = "280")]
17441        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17442        #[prost(message, tag = "281")]
17443        IommuMapRange(super::IommuMapRangeFtraceEvent),
17444        #[prost(message, tag = "282")]
17445        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17446        #[prost(message, tag = "283")]
17447        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17448        #[prost(message, tag = "284")]
17449        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17450        #[prost(message, tag = "285")]
17451        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17452        #[prost(message, tag = "286")]
17453        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17454        #[prost(message, tag = "287")]
17455        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17456        #[prost(message, tag = "288")]
17457        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17458        #[prost(message, tag = "289")]
17459        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17460        #[prost(message, tag = "290")]
17461        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17462        #[prost(message, tag = "291")]
17463        IonPrefetching(super::IonPrefetchingFtraceEvent),
17464        #[prost(message, tag = "292")]
17465        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17466        #[prost(message, tag = "293")]
17467        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17468        #[prost(message, tag = "294")]
17469        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17470        #[prost(message, tag = "295")]
17471        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17472        #[prost(message, tag = "296")]
17473        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17474        #[prost(message, tag = "297")]
17475        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17476        #[prost(message, tag = "298")]
17477        Kfree(super::KfreeFtraceEvent),
17478        #[prost(message, tag = "299")]
17479        Kmalloc(super::KmallocFtraceEvent),
17480        #[prost(message, tag = "300")]
17481        KmallocNode(super::KmallocNodeFtraceEvent),
17482        #[prost(message, tag = "301")]
17483        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17484        #[prost(message, tag = "302")]
17485        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17486        #[prost(message, tag = "303")]
17487        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17488        #[prost(message, tag = "304")]
17489        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17490        #[prost(message, tag = "305")]
17491        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17492        #[prost(message, tag = "306")]
17493        MigrateRetry(super::MigrateRetryFtraceEvent),
17494        #[prost(message, tag = "307")]
17495        MmPageAlloc(super::MmPageAllocFtraceEvent),
17496        #[prost(message, tag = "308")]
17497        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17498        #[prost(message, tag = "309")]
17499        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17500        #[prost(message, tag = "310")]
17501        MmPageFree(super::MmPageFreeFtraceEvent),
17502        #[prost(message, tag = "311")]
17503        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17504        #[prost(message, tag = "312")]
17505        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17506        #[prost(message, tag = "313")]
17507        RssStat(super::RssStatFtraceEvent),
17508        #[prost(message, tag = "314")]
17509        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17510        #[prost(message, tag = "315")]
17511        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17512        #[prost(message, tag = "316")]
17513        FenceInit(super::FenceInitFtraceEvent),
17514        #[prost(message, tag = "317")]
17515        FenceDestroy(super::FenceDestroyFtraceEvent),
17516        #[prost(message, tag = "318")]
17517        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17518        #[prost(message, tag = "319")]
17519        FenceSignaled(super::FenceSignaledFtraceEvent),
17520        #[prost(message, tag = "320")]
17521        ClkEnable(super::ClkEnableFtraceEvent),
17522        #[prost(message, tag = "321")]
17523        ClkDisable(super::ClkDisableFtraceEvent),
17524        #[prost(message, tag = "322")]
17525        ClkSetRate(super::ClkSetRateFtraceEvent),
17526        #[prost(message, tag = "323")]
17527        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17528        #[prost(message, tag = "324")]
17529        SignalDeliver(super::SignalDeliverFtraceEvent),
17530        #[prost(message, tag = "325")]
17531        SignalGenerate(super::SignalGenerateFtraceEvent),
17532        #[prost(message, tag = "326")]
17533        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17534        #[prost(message, tag = "327")]
17535        Generic(super::GenericFtraceEvent),
17536        #[prost(message, tag = "328")]
17537        MmEventRecord(super::MmEventRecordFtraceEvent),
17538        #[prost(message, tag = "329")]
17539        SysEnter(super::SysEnterFtraceEvent),
17540        #[prost(message, tag = "330")]
17541        SysExit(super::SysExitFtraceEvent),
17542        #[prost(message, tag = "331")]
17543        Zero(super::ZeroFtraceEvent),
17544        #[prost(message, tag = "332")]
17545        GpuFrequency(super::GpuFrequencyFtraceEvent),
17546        #[prost(message, tag = "333")]
17547        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17548        #[prost(message, tag = "334")]
17549        MarkVictim(super::MarkVictimFtraceEvent),
17550        #[prost(message, tag = "335")]
17551        IonStat(super::IonStatFtraceEvent),
17552        #[prost(message, tag = "336")]
17553        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17554        #[prost(message, tag = "337")]
17555        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17556        #[prost(message, tag = "338")]
17557        ScmCallStart(super::ScmCallStartFtraceEvent),
17558        #[prost(message, tag = "339")]
17559        ScmCallEnd(super::ScmCallEndFtraceEvent),
17560        #[prost(message, tag = "340")]
17561        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17562        #[prost(message, tag = "341")]
17563        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17564        #[prost(message, tag = "342")]
17565        CdevUpdate(super::CdevUpdateFtraceEvent),
17566        #[prost(message, tag = "343")]
17567        CpuhpExit(super::CpuhpExitFtraceEvent),
17568        #[prost(message, tag = "344")]
17569        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17570        #[prost(message, tag = "345")]
17571        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17572        #[prost(message, tag = "346")]
17573        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17574        #[prost(message, tag = "347")]
17575        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17576        #[prost(message, tag = "348")]
17577        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17578        #[prost(message, tag = "349")]
17579        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17580        #[prost(message, tag = "350")]
17581        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17582        #[prost(message, tag = "351")]
17583        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17584        #[prost(message, tag = "352")]
17585        CpuhpPause(super::CpuhpPauseFtraceEvent),
17586        #[prost(message, tag = "353")]
17587        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17588        #[prost(message, tag = "354")]
17589        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17590        #[prost(message, tag = "355")]
17591        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17592        #[prost(message, tag = "356")]
17593        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17594        #[prost(message, tag = "357")]
17595        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17596        #[prost(message, tag = "358")]
17597        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17598        #[prost(message, tag = "359")]
17599        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17600        #[prost(message, tag = "360")]
17601        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17602        #[prost(message, tag = "361")]
17603        NetDevXmit(super::NetDevXmitFtraceEvent),
17604        #[prost(message, tag = "362")]
17605        InetSockSetState(super::InetSockSetStateFtraceEvent),
17606        #[prost(message, tag = "363")]
17607        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17608        #[prost(message, tag = "364")]
17609        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17610        #[prost(message, tag = "365")]
17611        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17612        #[prost(message, tag = "366")]
17613        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17614        #[prost(message, tag = "367")]
17615        KfreeSkb(super::KfreeSkbFtraceEvent),
17616        #[prost(message, tag = "368")]
17617        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17618        #[prost(message, tag = "369")]
17619        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17620        #[prost(message, tag = "370")]
17621        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17622        #[prost(message, tag = "371")]
17623        KvmAgePage(super::KvmAgePageFtraceEvent),
17624        #[prost(message, tag = "372")]
17625        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17626        #[prost(message, tag = "373")]
17627        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17628        #[prost(message, tag = "374")]
17629        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17630        #[prost(message, tag = "375")]
17631        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17632        #[prost(message, tag = "376")]
17633        KvmEntry(super::KvmEntryFtraceEvent),
17634        #[prost(message, tag = "377")]
17635        KvmExit(super::KvmExitFtraceEvent),
17636        #[prost(message, tag = "378")]
17637        KvmFpu(super::KvmFpuFtraceEvent),
17638        #[prost(message, tag = "379")]
17639        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17640        #[prost(message, tag = "380")]
17641        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17642        #[prost(message, tag = "381")]
17643        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17644        #[prost(message, tag = "382")]
17645        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17646        #[prost(message, tag = "383")]
17647        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17648        #[prost(message, tag = "384")]
17649        KvmMmio(super::KvmMmioFtraceEvent),
17650        #[prost(message, tag = "385")]
17651        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17652        #[prost(message, tag = "386")]
17653        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17654        #[prost(message, tag = "387")]
17655        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17656        #[prost(message, tag = "388")]
17657        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17658        #[prost(message, tag = "389")]
17659        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17660        #[prost(message, tag = "390")]
17661        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17662        #[prost(message, tag = "391")]
17663        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17664        #[prost(message, tag = "392")]
17665        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17666        #[prost(message, tag = "393")]
17667        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17668        #[prost(message, tag = "394")]
17669        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17670        #[prost(message, tag = "395")]
17671        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17672        #[prost(message, tag = "396")]
17673        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17674        #[prost(message, tag = "397")]
17675        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17676        #[prost(message, tag = "398")]
17677        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17678        #[prost(message, tag = "399")]
17679        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17680        #[prost(message, tag = "400")]
17681        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17682        #[prost(message, tag = "401")]
17683        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17684        #[prost(message, tag = "402")]
17685        TrapReg(super::TrapRegFtraceEvent),
17686        #[prost(message, tag = "403")]
17687        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17688        #[prost(message, tag = "404")]
17689        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17690        #[prost(message, tag = "405")]
17691        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17692        #[prost(message, tag = "406")]
17693        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17694        #[prost(message, tag = "407")]
17695        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17696        #[prost(message, tag = "408")]
17697        Console(super::ConsoleFtraceEvent),
17698        #[prost(message, tag = "409")]
17699        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17700        #[prost(message, tag = "410")]
17701        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17702        #[prost(message, tag = "411")]
17703        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17704        #[prost(message, tag = "412")]
17705        DrmRunJob(super::DrmRunJobFtraceEvent),
17706        #[prost(message, tag = "413")]
17707        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17708        #[prost(message, tag = "414")]
17709        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17710        #[prost(message, tag = "415")]
17711        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17712        #[prost(message, tag = "416")]
17713        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17714        #[prost(message, tag = "417")]
17715        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17716        #[prost(message, tag = "418")]
17717        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17718        #[prost(message, tag = "419")]
17719        F2fsIostat(super::F2fsIostatFtraceEvent),
17720        #[prost(message, tag = "420")]
17721        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17722        #[prost(message, tag = "421")]
17723        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17724        #[prost(message, tag = "422")]
17725        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17726        #[prost(message, tag = "423")]
17727        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17728        #[prost(message, tag = "424")]
17729        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17730        #[prost(message, tag = "425")]
17731        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17732        #[prost(message, tag = "426")]
17733        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17734        #[prost(message, tag = "427")]
17735        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17736        #[prost(message, tag = "428")]
17737        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17738        #[prost(message, tag = "429")]
17739        DsiRx(super::DsiRxFtraceEvent),
17740        #[prost(message, tag = "430")]
17741        DsiTx(super::DsiTxFtraceEvent),
17742        #[prost(message, tag = "431")]
17743        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17744        #[prost(message, tag = "432")]
17745        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17746        #[prost(message, tag = "433")]
17747        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17748        #[prost(message, tag = "434")]
17749        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17750        #[prost(message, tag = "435")]
17751        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17752        #[prost(message, tag = "436")]
17753        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17754        #[prost(message, tag = "437")]
17755        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17756        #[prost(message, tag = "438")]
17757        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17758        #[prost(message, tag = "439")]
17759        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17760        #[prost(message, tag = "440")]
17761        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17762        #[prost(message, tag = "441")]
17763        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17764        #[prost(message, tag = "442")]
17765        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17766        #[prost(message, tag = "443")]
17767        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17768        #[prost(message, tag = "444")]
17769        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17770        #[prost(message, tag = "445")]
17771        TrustySmc(super::TrustySmcFtraceEvent),
17772        #[prost(message, tag = "446")]
17773        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17774        #[prost(message, tag = "447")]
17775        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17776        #[prost(message, tag = "448")]
17777        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17778        #[prost(message, tag = "449")]
17779        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17780        #[prost(message, tag = "450")]
17781        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17782        #[prost(message, tag = "451")]
17783        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17784        #[prost(message, tag = "452")]
17785        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17786        #[prost(message, tag = "453")]
17787        TrustyIrq(super::TrustyIrqFtraceEvent),
17788        #[prost(message, tag = "454")]
17789        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17790        #[prost(message, tag = "455")]
17791        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17792        #[prost(message, tag = "456")]
17793        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17794        #[prost(message, tag = "457")]
17795        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17796        #[prost(message, tag = "458")]
17797        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17798        /// removed field with id 459;
17799        #[prost(message, tag = "460")]
17800        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17801        #[prost(message, tag = "461")]
17802        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17803        #[prost(message, tag = "462")]
17804        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17805        /// removed field with id 463;
17806        #[prost(message, tag = "464")]
17807        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17808        #[prost(message, tag = "465")]
17809        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17810        #[prost(message, tag = "466")]
17811        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17812        #[prost(message, tag = "467")]
17813        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17814        #[prost(message, tag = "468")]
17815        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17816        #[prost(message, tag = "469")]
17817        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17818        #[prost(message, tag = "470")]
17819        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17820        #[prost(message, tag = "471")]
17821        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17822        #[prost(message, tag = "472")]
17823        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17824        #[prost(message, tag = "473")]
17825        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17826        #[prost(message, tag = "474")]
17827        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17828        #[prost(message, tag = "475")]
17829        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17830        #[prost(message, tag = "476")]
17831        HypEnter(super::HypEnterFtraceEvent),
17832        #[prost(message, tag = "477")]
17833        HypExit(super::HypExitFtraceEvent),
17834        #[prost(message, tag = "478")]
17835        HostHcall(super::HostHcallFtraceEvent),
17836        #[prost(message, tag = "479")]
17837        HostSmc(super::HostSmcFtraceEvent),
17838        #[prost(message, tag = "480")]
17839        HostMemAbort(super::HostMemAbortFtraceEvent),
17840        #[prost(message, tag = "481")]
17841        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17842        #[prost(message, tag = "482")]
17843        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17844        #[prost(message, tag = "483")]
17845        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17846        #[prost(message, tag = "484")]
17847        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17848        #[prost(message, tag = "485")]
17849        BinderCommand(super::BinderCommandFtraceEvent),
17850        #[prost(message, tag = "486")]
17851        BinderReturn(super::BinderReturnFtraceEvent),
17852        #[prost(message, tag = "487")]
17853        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17854        #[prost(message, tag = "488")]
17855        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17856        #[prost(message, tag = "489")]
17857        RpmStatus(super::RpmStatusFtraceEvent),
17858        #[prost(message, tag = "490")]
17859        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17860        #[prost(message, tag = "491")]
17861        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17862        #[prost(message, tag = "492")]
17863        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17864        #[prost(message, tag = "493")]
17865        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17866        #[prost(message, tag = "494")]
17867        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17868        #[prost(message, tag = "495")]
17869        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17870        #[prost(message, tag = "496")]
17871        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17872        #[prost(message, tag = "497")]
17873        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17874        #[prost(message, tag = "498")]
17875        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17876        #[prost(message, tag = "499")]
17877        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17878        #[prost(message, tag = "500")]
17879        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17880        #[prost(message, tag = "501")]
17881        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17882        #[prost(message, tag = "502")]
17883        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17884        #[prost(message, tag = "503")]
17885        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17886        #[prost(message, tag = "504")]
17887        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17888        #[prost(message, tag = "505")]
17889        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17890        #[prost(message, tag = "506")]
17891        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17892        #[prost(message, tag = "507")]
17893        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17894        #[prost(message, tag = "508")]
17895        DcvshFreq(super::DcvshFreqFtraceEvent),
17896        #[prost(message, tag = "509")]
17897        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17898        #[prost(message, tag = "510")]
17899        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(
17900            super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent,
17901        ),
17902        #[prost(message, tag = "511")]
17903        MaliMaliPmMcuHctlCoresNotifyPend(
17904            super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent,
17905        ),
17906        #[prost(message, tag = "512")]
17907        MaliMaliPmMcuHctlCoreInactivePend(
17908            super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent,
17909        ),
17910        #[prost(message, tag = "513")]
17911        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17912        #[prost(message, tag = "514")]
17913        MaliMaliPmMcuHctlShadersCoreOffPend(
17914            super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent,
17915        ),
17916        #[prost(message, tag = "515")]
17917        MaliMaliPmMcuHctlShadersPendOff(
17918            super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent,
17919        ),
17920        #[prost(message, tag = "516")]
17921        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17922        #[prost(message, tag = "517")]
17923        MaliMaliPmMcuHctlShadersReadyOff(
17924            super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent,
17925        ),
17926        #[prost(message, tag = "518")]
17927        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17928        #[prost(message, tag = "519")]
17929        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17930        #[prost(message, tag = "520")]
17931        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17932        #[prost(message, tag = "521")]
17933        MaliMaliPmMcuOnCoreAttrUpdatePend(
17934            super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent,
17935        ),
17936        #[prost(message, tag = "522")]
17937        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17938        #[prost(message, tag = "523")]
17939        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17940        #[prost(message, tag = "524")]
17941        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17942        #[prost(message, tag = "525")]
17943        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17944        #[prost(message, tag = "526")]
17945        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17946        #[prost(message, tag = "527")]
17947        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17948        #[prost(message, tag = "528")]
17949        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17950        #[prost(message, tag = "529")]
17951        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17952        #[prost(message, tag = "530")]
17953        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17954        #[prost(message, tag = "531")]
17955        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17956        #[prost(message, tag = "532")]
17957        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17958        #[prost(message, tag = "533")]
17959        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17960        #[prost(message, tag = "534")]
17961        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
17962        #[prost(message, tag = "535")]
17963        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
17964        #[prost(message, tag = "536")]
17965        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
17966        #[prost(message, tag = "537")]
17967        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
17968        #[prost(message, tag = "538")]
17969        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
17970        #[prost(message, tag = "539")]
17971        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
17972        #[prost(message, tag = "540")]
17973        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
17974        #[prost(message, tag = "541")]
17975        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
17976        #[prost(message, tag = "542")]
17977        KprobeEvent(super::KprobeEvent),
17978        #[prost(message, tag = "543")]
17979        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
17980        #[prost(message, tag = "544")]
17981        DoSysOpen(super::DoSysOpenFtraceEvent),
17982        #[prost(message, tag = "545")]
17983        OpenExec(super::OpenExecFtraceEvent),
17984        #[prost(message, tag = "546")]
17985        BlockIoStart(super::BlockIoStartFtraceEvent),
17986        #[prost(message, tag = "547")]
17987        BlockIoDone(super::BlockIoDoneFtraceEvent),
17988        #[prost(message, tag = "548")]
17989        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
17990        #[prost(message, tag = "549")]
17991        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
17992        #[prost(message, tag = "550")]
17993        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
17994        #[prost(message, tag = "551")]
17995        HrtimerStart(super::HrtimerStartFtraceEvent),
17996        #[prost(message, tag = "552")]
17997        HrtimerCancel(super::HrtimerCancelFtraceEvent),
17998        #[prost(message, tag = "553")]
17999        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18000        #[prost(message, tag = "554")]
18001        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18002        #[prost(message, tag = "555")]
18003        TimerStart(super::TimerStartFtraceEvent),
18004        #[prost(message, tag = "556")]
18005        TimerCancel(super::TimerCancelFtraceEvent),
18006        #[prost(message, tag = "557")]
18007        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18008        #[prost(message, tag = "558")]
18009        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18010        #[prost(message, tag = "559")]
18011        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18012        #[prost(message, tag = "560")]
18013        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18014        #[prost(message, tag = "561")]
18015        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18016        #[prost(message, tag = "562")]
18017        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18018        #[prost(message, tag = "563")]
18019        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18020        #[prost(message, tag = "564")]
18021        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18022        #[prost(message, tag = "565")]
18023        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18024        #[prost(message, tag = "566")]
18025        Dwc3Event(super::Dwc3EventFtraceEvent),
18026        #[prost(message, tag = "567")]
18027        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18028        #[prost(message, tag = "568")]
18029        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18030        #[prost(message, tag = "569")]
18031        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18032        #[prost(message, tag = "570")]
18033        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18034        #[prost(message, tag = "571")]
18035        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18036        #[prost(message, tag = "572")]
18037        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18038        #[prost(message, tag = "573")]
18039        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18040        #[prost(message, tag = "574")]
18041        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18042        #[prost(message, tag = "575")]
18043        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18044        #[prost(message, tag = "576")]
18045        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18046        #[prost(message, tag = "577")]
18047        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18048        #[prost(message, tag = "578")]
18049        HostFfaCall(super::HostFfaCallFtraceEvent),
18050        #[prost(message, tag = "579")]
18051        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18052        #[prost(message, tag = "580")]
18053        IommuIdmap(super::IommuIdmapFtraceEvent),
18054        #[prost(message, tag = "581")]
18055        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18056        #[prost(message, tag = "582")]
18057        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18058        #[prost(message, tag = "583")]
18059        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18060        #[prost(message, tag = "584")]
18061        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18062        #[prost(message, tag = "585")]
18063        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18064        #[prost(message, tag = "586")]
18065        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18066        #[prost(message, tag = "587")]
18067        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18068        #[prost(message, tag = "588")]
18069        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18070        #[prost(message, tag = "589")]
18071        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18072        #[prost(message, tag = "590")]
18073        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18074        #[prost(message, tag = "591")]
18075        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18076        #[prost(message, tag = "592")]
18077        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18078        #[prost(message, tag = "593")]
18079        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18080        #[prost(message, tag = "594")]
18081        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18082        #[prost(message, tag = "595")]
18083        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18084        #[prost(message, tag = "596")]
18085        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18086        #[prost(message, tag = "597")]
18087        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18088        #[prost(message, tag = "598")]
18089        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18090        #[prost(message, tag = "599")]
18091        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18092        #[prost(message, tag = "600")]
18093        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18094        #[prost(message, tag = "601")]
18095        GpuPowerState(super::GpuPowerStateFtraceEvent),
18096        #[prost(message, tag = "602")]
18097        GramCollision(super::GramCollisionFtraceEvent),
18098        #[prost(message, tag = "603")]
18099        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
18100        #[prost(message, tag = "604")]
18101        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
18102        #[prost(message, tag = "605")]
18103        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
18104        #[prost(message, tag = "606")]
18105        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
18106        #[prost(message, tag = "607")]
18107        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
18108        #[prost(message, tag = "608")]
18109        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
18110        #[prost(message, tag = "609")]
18111        DpuDispFrameDoneMissing(super::DpuDispFrameDoneMissingFtraceEvent),
18112        #[prost(message, tag = "610")]
18113        DpuDispFrameStartMissing(super::DpuDispFrameStartMissingFtraceEvent),
18114        #[prost(message, tag = "611")]
18115        PanelSettingsFull(super::PanelSettingsFullFtraceEvent),
18116        #[prost(message, tag = "612")]
18117        PanelSettingsLite(super::PanelSettingsLiteFtraceEvent),
18118        #[prost(message, tag = "613")]
18119        DpuDispDpuLineUnderrun(super::DpuDispDpuLineUnderrunFtraceEvent),
18120        #[prost(message, tag = "614")]
18121        PsciDomainIdleExit(super::PsciDomainIdleExitFtraceEvent),
18122        #[prost(message, tag = "615")]
18123        PsciDomainIdleEnter(super::PsciDomainIdleEnterFtraceEvent),
18124        #[prost(message, tag = "616")]
18125        LongIrq(super::LongIrqFtraceEvent),
18126        #[prost(message, tag = "617")]
18127        LongSoftirq(super::LongSoftirqFtraceEvent),
18128    }
18129}
18130/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18131/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18132#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18133pub struct FtraceCpuStats {
18134    /// CPU index.
18135    #[prost(uint64, optional, tag = "1")]
18136    pub cpu: ::core::option::Option<u64>,
18137    /// Number of entries currently in the kernel buffer.
18138    #[prost(uint64, optional, tag = "2")]
18139    pub entries: ::core::option::Option<u64>,
18140    /// Number of events lost in kernel buffers due to overwriting of old events
18141    /// before userspace had a chance to drain them. Valid if the buffer is in
18142    /// "overwrite" mode, otherwise see |dropped_events|.
18143    #[prost(uint64, optional, tag = "3")]
18144    pub overrun: ::core::option::Option<u64>,
18145    /// This should always be zero. If not the buffer size is way too small or
18146    /// something went wrong with the tracer. Quoting the kernel: "number of
18147    /// commits failing due to the buffer wrapping around while there are
18148    /// uncommitted events, such as during an interrupt storm".
18149    #[prost(uint64, optional, tag = "4")]
18150    pub commit_overrun: ::core::option::Option<u64>,
18151    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
18152    /// The field should be named "bytes", but is misnamed for historical reasons.
18153    /// This value has known inaccuracies before Linux v6.6:
18154    /// <https://github.com/torvalds/linux/commit/45d99ea>
18155    #[prost(uint64, optional, tag = "5")]
18156    pub bytes_read: ::core::option::Option<u64>,
18157    /// The timestamp for the oldest event still in the ring buffer.
18158    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18159    #[prost(double, optional, tag = "6")]
18160    pub oldest_event_ts: ::core::option::Option<f64>,
18161    /// The current timestamp.
18162    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
18163    #[prost(double, optional, tag = "7")]
18164    pub now_ts: ::core::option::Option<f64>,
18165    /// If the kernel buffer has overwrite mode disabled, this will show the number
18166    /// of new events that were lost because the buffer was full. This is similar
18167    /// to |overrun| but only for the overwrite=false case.
18168    #[prost(uint64, optional, tag = "8")]
18169    pub dropped_events: ::core::option::Option<u64>,
18170    /// The number of events read (consumed) from the buffer by userspace.
18171    #[prost(uint64, optional, tag = "9")]
18172    pub read_events: ::core::option::Option<u64>,
18173}
18174/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
18175#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18176pub struct FtraceKprobeStats {
18177    /// Cumulative number of kprobe events generated for this function
18178    #[prost(int64, optional, tag = "1")]
18179    pub hits: ::core::option::Option<i64>,
18180    /// Cumulative number of kprobe events that could not be generated for this
18181    /// function and were missed.  This happens when too much nesting
18182    /// happens between a kprobe and its kretprobe, overflowing the
18183    /// maxactives buffer.
18184    #[prost(int64, optional, tag = "2")]
18185    pub misses: ::core::option::Option<i64>,
18186}
18187/// Errors and kernel buffer stats for the ftrace data source.
18188#[derive(Clone, PartialEq, ::prost::Message)]
18189pub struct FtraceStats {
18190    /// A pair of FtraceStats is written on every trace flush:
18191    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
18192    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
18193    ///                   before this packet was written. For simple traces this
18194    ///                   will be once at the end of the trace.
18195    #[prost(enumeration = "ftrace_stats::Phase", optional, tag = "1")]
18196    pub phase: ::core::option::Option<i32>,
18197    /// Per-CPU stats (one entry for each CPU).
18198    #[prost(message, repeated, tag = "2")]
18199    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
18200    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
18201    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
18202    /// trace or not. It can be used to debug kptr_restrict or security-related
18203    /// errors.
18204    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18205    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18206    #[prost(uint32, optional, tag = "3")]
18207    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18208    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18209    #[prost(uint32, optional, tag = "4")]
18210    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18211    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18212    /// one or more atrace categories not available on the device.
18213    #[prost(string, optional, tag = "5")]
18214    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18215    /// Error message due to exclusivity violation of a single-tenant feature.
18216    #[prost(string, optional, tag = "13")]
18217    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18218    /// Ftrace events requested by the config but not present on device.
18219    #[prost(string, repeated, tag = "6")]
18220    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18221    /// Ftrace events requested by the config and present on device, but which we
18222    /// failed to enable due to permissions, or due to a conflicting option
18223    /// (currently FtraceConfig.disable_generic_events).
18224    #[prost(string, repeated, tag = "7")]
18225    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18226    /// The data source was configured to preserve existing events in the ftrace
18227    /// buffer before the start of the trace.
18228    #[prost(bool, optional, tag = "8")]
18229    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18230    /// Unique errors encountered during reading and parsing of the raw ftrace
18231    /// data. Ring buffer ABI related errors will also be recorded in the
18232    /// affected FtraceEventBundles with a timestamp.
18233    /// Any traces with entries in this field should be investigated, as they
18234    /// indicate a bug in perfetto or the kernel.
18235    #[prost(enumeration = "FtraceParseStatus", repeated, packed = "false", tag = "9")]
18236    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18237    /// Kprobe profile stats for functions hits and misses
18238    #[prost(message, optional, tag = "10")]
18239    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18240    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18241    /// Added in: perfetto v52.
18242    #[prost(uint32, optional, tag = "11")]
18243    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18244    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18245    /// on the value we're writing into the tracefs control file. Might not be
18246    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18247    /// scratch pages (and/or other factors). Added in: perfetto v52.
18248    #[prost(uint32, optional, tag = "12")]
18249    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18250}
18251/// Nested message and enum types in `FtraceStats`.
18252pub mod ftrace_stats {
18253    #[derive(
18254        Clone,
18255        Copy,
18256        Debug,
18257        PartialEq,
18258        Eq,
18259        Hash,
18260        PartialOrd,
18261        Ord,
18262        ::prost::Enumeration
18263    )]
18264    #[repr(i32)]
18265    pub enum Phase {
18266        Unspecified = 0,
18267        StartOfTrace = 1,
18268        EndOfTrace = 2,
18269    }
18270    impl Phase {
18271        /// String value of the enum field names used in the ProtoBuf definition.
18272        ///
18273        /// The values are not transformed in any way and thus are considered stable
18274        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18275        pub fn as_str_name(&self) -> &'static str {
18276            match self {
18277                Self::Unspecified => "UNSPECIFIED",
18278                Self::StartOfTrace => "START_OF_TRACE",
18279                Self::EndOfTrace => "END_OF_TRACE",
18280            }
18281        }
18282        /// Creates an enum from field names used in the ProtoBuf definition.
18283        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18284            match value {
18285                "UNSPECIFIED" => Some(Self::Unspecified),
18286                "START_OF_TRACE" => Some(Self::StartOfTrace),
18287                "END_OF_TRACE" => Some(Self::EndOfTrace),
18288                _ => None,
18289            }
18290        }
18291    }
18292}
18293/// The result of tracing one or more ftrace data pages from a single per-cpu
18294/// kernel ring buffer. If collating multiple pages' worth of events, all of
18295/// them come from contiguous pages, with no kernel data loss in between.
18296#[derive(Clone, PartialEq, ::prost::Message)]
18297pub struct FtraceEventBundle {
18298    #[prost(uint32, optional, tag = "1")]
18299    pub cpu: ::core::option::Option<u32>,
18300    #[prost(message, repeated, tag = "2")]
18301    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18302    /// Set to true if there was data loss between the last time we've read from
18303    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18304    /// in this bundle.
18305    #[prost(bool, optional, tag = "3")]
18306    pub lost_events: ::core::option::Option<bool>,
18307    #[prost(message, optional, tag = "4")]
18308    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18309    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18310    /// timestamps as that counts during suspend, is available to userspace, and
18311    /// is coherent across cpus.
18312    ///
18313    /// If this field is set, it means that a different clock was used during
18314    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18315    /// before 3.x), or the trace config has set an incompatible option
18316    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18317    /// trace_processor will do best-effort clock alignment using timestamp pairs
18318    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18319    /// when the ftrace clock is "boot", as that is the default assumption.
18320    ///
18321    /// Some clocks (local/global) are technically per-cpu, but we make a
18322    /// simplifying assumption that they are global, as their inter-cpu skew
18323    /// should be reasonably bounded on modern systems.
18324    ///
18325    /// Added in: perfetto v19. Android T (13).
18326    #[prost(enumeration = "FtraceClock", optional, tag = "5")]
18327    pub ftrace_clock: ::core::option::Option<i32>,
18328    /// The timestamp according to the ftrace clock, taken at the same instant as
18329    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18330    /// will be in the future relative to the data covered by this bundle.
18331    /// Implementation note: Populated by reading the 'now ts:' field in
18332    /// tracefs/per_cpu/cpu0/stat.
18333    ///
18334    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18335    #[prost(int64, optional, tag = "6")]
18336    pub ftrace_timestamp: ::core::option::Option<i64>,
18337    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18338    /// |ftrace_timestamp|.
18339    ///
18340    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18341    #[prost(int64, optional, tag = "7")]
18342    pub boot_timestamp: ::core::option::Option<i64>,
18343    #[prost(message, repeated, tag = "8")]
18344    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18345    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18346    /// primary difference is that this field tracked the last timestamp read from
18347    /// the per-cpu buffer, while the newer field tracks events that get
18348    /// serialised into the trace.
18349    /// Added in: perfetto v44.
18350    #[prost(uint64, optional, tag = "9")]
18351    pub last_read_event_timestamp: ::core::option::Option<u64>,
18352    /// The timestamp (using ftrace clock) of the last event written into this
18353    /// data source on this cpu. In other words: the last event in the previous
18354    /// bundle.
18355    /// Lets the trace processing find an initial timestamp after which ftrace
18356    /// data is known to be valid across all cpus. Of particular importance when
18357    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
18358    /// oldest bundles can skew the first valid timestamp per cpu significantly.
18359    /// Added in: perfetto v47.
18360    #[prost(uint64, optional, tag = "10")]
18361    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
18362    #[prost(message, repeated, tag = "11")]
18363    pub generic_event_descriptors: ::prost::alloc::vec::Vec<
18364        ftrace_event_bundle::GenericEventDescriptor,
18365    >,
18366    /// Written only on android builds if the config sets |debug_ftrace_abi|.
18367    /// Contains the raw ring buffer tracing page that the implementation could
18368    /// not parse.
18369    /// Addded in: perfetto v50.
18370    #[prost(bytes = "vec", optional, tag = "512")]
18371    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18372}
18373/// Nested message and enum types in `FtraceEventBundle`.
18374pub mod ftrace_event_bundle {
18375    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
18376    /// a subset of events & their fields is recorded.
18377    /// All fields (except comms) are stored in a structure-of-arrays form, one
18378    /// entry in each repeated field per event.
18379    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18380    pub struct CompactSched {
18381        /// Interned table of unique strings for this bundle.
18382        #[prost(string, repeated, tag = "5")]
18383        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18384        /// Delta-encoded timestamps across all sched_switch events within this
18385        /// bundle. The first is absolute, each next one is relative to its
18386        /// predecessor.
18387        #[prost(uint64, repeated, tag = "1")]
18388        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
18389        #[prost(int64, repeated, tag = "2")]
18390        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
18391        #[prost(int32, repeated, tag = "3")]
18392        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
18393        #[prost(int32, repeated, tag = "4")]
18394        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
18395        /// One per event, index into |intern_table| corresponding to the
18396        /// next_comm field of the event.
18397        #[prost(uint32, repeated, tag = "6")]
18398        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
18399        /// Delta-encoded timestamps across all sched_waking events within this
18400        /// bundle. The first is absolute, each next one is relative to its
18401        /// predecessor.
18402        #[prost(uint64, repeated, tag = "7")]
18403        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
18404        #[prost(int32, repeated, tag = "8")]
18405        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
18406        #[prost(int32, repeated, tag = "9")]
18407        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
18408        #[prost(int32, repeated, tag = "10")]
18409        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
18410        /// One per event, index into |intern_table| corresponding to the
18411        /// comm field of the event.
18412        #[prost(uint32, repeated, tag = "11")]
18413        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
18414        #[prost(uint32, repeated, tag = "12")]
18415        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
18416    }
18417    /// Errors encountered during parsing of the raw ftrace data. In case of ring
18418    /// buffer layout errors, the parser skips the rest of the offending kernel
18419    /// buffer page and continues from the next page.
18420    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
18421    /// seen within the duration of the trace (even if the affected bundles get
18422    /// overwritten in ring buffer mode).
18423    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18424    pub struct FtraceError {
18425        /// Timestamp of the data that we're unable to parse, in the ftrace clock
18426        /// domain. Currently, we use the base timestamp of the tracing page
18427        /// containing the bad record rather than the time of the record itself.
18428        #[prost(uint64, optional, tag = "1")]
18429        pub timestamp: ::core::option::Option<u64>,
18430        #[prost(enumeration = "super::FtraceParseStatus", optional, tag = "2")]
18431        pub status: ::core::option::Option<i32>,
18432    }
18433    /// Describes the serialised |FtraceEvent| protos for events not known at
18434    /// compile time, when using the |denser_generic_event_encoding| option.
18435    /// Addded in: perfetto v50.
18436    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18437    pub struct GenericEventDescriptor {
18438        /// submessage id within FtraceEvent described by |event_descriptor|.
18439        #[prost(int32, optional, tag = "1")]
18440        pub field_id: ::core::option::Option<i32>,
18441        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18442        /// The event name itself is in |event_descriptor.name|.
18443        #[prost(string, optional, tag = "3")]
18444        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18445        /// serialised DescriptorProto.
18446        #[prost(bytes = "vec", optional, tag = "2")]
18447        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18448    }
18449}
18450/// GenericGpuFrequencyEvent is the standard proto to capture GPU
18451/// frequency change events in a generic kernel implementation.
18452#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18453pub struct GenericGpuFrequencyEvent {
18454    /// GPU on which the frequency change occurred.
18455    #[prost(uint32, optional, tag = "1")]
18456    pub gpu_id: ::core::option::Option<u32>,
18457    /// Frequency (kHz) of the GPU.
18458    #[prost(uint32, optional, tag = "2")]
18459    pub frequency_khz: ::core::option::Option<u32>,
18460}
18461/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18462/// frequency change events in a generic kernel implementation.
18463#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18464pub struct GenericKernelCpuFrequencyEvent {
18465    /// CPU in which the event occurred.
18466    #[prost(int32, optional, tag = "1")]
18467    pub cpu: ::core::option::Option<i32>,
18468    /// Frequency (Hz) of the CPU.
18469    #[prost(int64, optional, tag = "2")]
18470    pub freq_hz: ::core::option::Option<i64>,
18471}
18472/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18473/// change events in a generic kernel implementation. This is mainly for the
18474/// case where scheduler events are not directly supported in the kernel's
18475/// tracing mechanism.
18476///
18477/// By capturing these task state events Perfetto is able to infer higher-level
18478/// events such as context switches and task waking events, providing as much
18479/// parity as possible with established tracing frameworks such as
18480/// Linux's ftrace.
18481#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18482pub struct GenericKernelTaskStateEvent {
18483    /// CPU in which the event occurred.
18484    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18485    /// no specific meaning to the cpu field in a non-running state event.
18486    #[prost(int32, optional, tag = "1")]
18487    pub cpu: ::core::option::Option<i32>,
18488    /// Command name for the thread.
18489    #[prost(string, optional, tag = "2")]
18490    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18491    /// Thread id.
18492    #[prost(int64, optional, tag = "3")]
18493    pub tid: ::core::option::Option<i64>,
18494    /// New state of the thread.
18495    #[prost(
18496        enumeration = "generic_kernel_task_state_event::TaskStateEnum",
18497        optional,
18498        tag = "4"
18499    )]
18500    pub state: ::core::option::Option<i32>,
18501    /// Priority of the thread.
18502    /// This value is OS agnostic and should only be interpreted based on the
18503    /// kernel who emitted the message.
18504    #[prost(int32, optional, tag = "5")]
18505    pub prio: ::core::option::Option<i32>,
18506}
18507/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18508pub mod generic_kernel_task_state_event {
18509    /// TaskStateEnum represents the valid states of a thread.
18510    /// These states are a generic representation of the actual thread state and
18511    /// don't necessarily map one-to-one to the states the actual OS kernel
18512    /// tracks internally.
18513    ///
18514    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18515    /// an error resulting in potential data loss.
18516    #[derive(
18517        Clone,
18518        Copy,
18519        Debug,
18520        PartialEq,
18521        Eq,
18522        Hash,
18523        PartialOrd,
18524        Ord,
18525        ::prost::Enumeration
18526    )]
18527    #[repr(i32)]
18528    pub enum TaskStateEnum {
18529        TaskStateUnknown = 0,
18530        TaskStateCreated = 1,
18531        TaskStateRunnable = 2,
18532        TaskStateRunning = 3,
18533        TaskStateInterruptibleSleep = 4,
18534        TaskStateUninterruptibleSleep = 5,
18535        TaskStateStopped = 6,
18536        TaskStateDead = 7,
18537        TaskStateDestroyed = 8,
18538    }
18539    impl TaskStateEnum {
18540        /// String value of the enum field names used in the ProtoBuf definition.
18541        ///
18542        /// The values are not transformed in any way and thus are considered stable
18543        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18544        pub fn as_str_name(&self) -> &'static str {
18545            match self {
18546                Self::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18547                Self::TaskStateCreated => "TASK_STATE_CREATED",
18548                Self::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18549                Self::TaskStateRunning => "TASK_STATE_RUNNING",
18550                Self::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18551                Self::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18552                Self::TaskStateStopped => "TASK_STATE_STOPPED",
18553                Self::TaskStateDead => "TASK_STATE_DEAD",
18554                Self::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18555            }
18556        }
18557        /// Creates an enum from field names used in the ProtoBuf definition.
18558        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18559            match value {
18560                "TASK_STATE_UNKNOWN" => Some(Self::TaskStateUnknown),
18561                "TASK_STATE_CREATED" => Some(Self::TaskStateCreated),
18562                "TASK_STATE_RUNNABLE" => Some(Self::TaskStateRunnable),
18563                "TASK_STATE_RUNNING" => Some(Self::TaskStateRunning),
18564                "TASK_STATE_INTERRUPTIBLE_SLEEP" => {
18565                    Some(Self::TaskStateInterruptibleSleep)
18566                }
18567                "TASK_STATE_UNINTERRUPTIBLE_SLEEP" => {
18568                    Some(Self::TaskStateUninterruptibleSleep)
18569                }
18570                "TASK_STATE_STOPPED" => Some(Self::TaskStateStopped),
18571                "TASK_STATE_DEAD" => Some(Self::TaskStateDead),
18572                "TASK_STATE_DESTROYED" => Some(Self::TaskStateDestroyed),
18573                _ => None,
18574            }
18575        }
18576    }
18577}
18578/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18579/// of a thread.
18580#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18581pub struct GenericKernelTaskRenameEvent {
18582    /// Thread id.
18583    #[prost(int64, optional, tag = "1")]
18584    pub tid: ::core::option::Option<i64>,
18585    /// New command name for the thread.
18586    #[prost(string, optional, tag = "2")]
18587    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18588}
18589/// Metadata about the processes and threads in the trace.
18590/// The main goal of this proto is to provide a generic kernel
18591/// implementation a mechanism to outline its process structure.
18592#[derive(Clone, PartialEq, ::prost::Message)]
18593pub struct GenericKernelProcessTree {
18594    /// List of processes and threads in the kernel. These lists are incremental
18595    /// and not exhaustive. A process and its threads might show up separately in
18596    /// different ProcessTree messages. A thread might not show up at all, if
18597    /// no sched switch activity was detected, for instance:
18598    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{tid: 11, pid: 10}\] }
18599    /// #1 { threads: \[{tid: 12, pid: 10}\] }
18600    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{tid: 13, pid: 10}\] }
18601    #[prost(message, repeated, tag = "1")]
18602    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18603    #[prost(message, repeated, tag = "2")]
18604    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18605}
18606/// Nested message and enum types in `GenericKernelProcessTree`.
18607pub mod generic_kernel_process_tree {
18608    /// Representation of a thread.
18609    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18610    pub struct Thread {
18611        /// Thread id.
18612        #[prost(int64, optional, tag = "1")]
18613        pub tid: ::core::option::Option<i64>,
18614        /// Id of the parent process.
18615        #[prost(int64, optional, tag = "2")]
18616        pub pid: ::core::option::Option<i64>,
18617        /// The command name of the thread.
18618        #[prost(string, optional, tag = "3")]
18619        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18620        /// True if thread is the main thread.
18621        #[prost(bool, optional, tag = "4")]
18622        pub is_main_thread: ::core::option::Option<bool>,
18623        /// True if thread is an idle thread.
18624        #[prost(bool, optional, tag = "5")]
18625        pub is_idle: ::core::option::Option<bool>,
18626    }
18627    /// Representation of a process.
18628    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18629    pub struct Process {
18630        /// Process id.
18631        #[prost(int64, optional, tag = "1")]
18632        pub pid: ::core::option::Option<i64>,
18633        /// Parent process id.
18634        #[prost(int64, optional, tag = "2")]
18635        pub ppid: ::core::option::Option<i64>,
18636        /// The command line of the process.
18637        /// If the cmdline has spaces in it, then we use the characters from
18638        /// position 0 to the first instance of the space char (' ') as the name
18639        /// of the process. If no spaces are present, then the entire cmdline is
18640        /// used as the name.
18641        #[prost(string, optional, tag = "3")]
18642        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18643    }
18644}
18645/// Events for emitting information about GPU counters.
18646///
18647/// There are two "modes" to use these protos:
18648///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
18649///       but has the limitation that counter ids are*global* so must only be
18650///       emitted by a single producer or requires coordination between different
18651///       producers. This is the mechanism which *must* be used by Android OEMS
18652///       to be complaint with CDD/CTS tests.
18653///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
18654///       more complex use-cases involving multiple producers, multiple GPUs etc.
18655#[derive(Clone, PartialEq, ::prost::Message)]
18656pub struct GpuCounterEvent {
18657    #[prost(message, repeated, tag = "2")]
18658    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18659    /// Identifier for GPU in a multi-gpu device.
18660    ///
18661    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
18662    /// `InternedGpuCounterDescriptor` takes precedence over this field.
18663    #[prost(int32, optional, tag = "3")]
18664    pub gpu_id: ::core::option::Option<i32>,
18665    /// The specification for the GPU counters. Gives them information like the
18666    /// name of the counter, unit etc.
18667    #[prost(oneof = "gpu_counter_event::Desc", tags = "1, 4")]
18668    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
18669}
18670/// Nested message and enum types in `GpuCounterEvent`.
18671pub mod gpu_counter_event {
18672    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
18673    pub struct GpuCounter {
18674        /// required. Identifier for counter.
18675        #[prost(uint32, optional, tag = "1")]
18676        pub counter_id: ::core::option::Option<u32>,
18677        /// required. Value of the counter.
18678        #[prost(oneof = "gpu_counter::Value", tags = "2, 3")]
18679        pub value: ::core::option::Option<gpu_counter::Value>,
18680    }
18681    /// Nested message and enum types in `GpuCounter`.
18682    pub mod gpu_counter {
18683        /// required. Value of the counter.
18684        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
18685        pub enum Value {
18686            #[prost(int64, tag = "2")]
18687            IntValue(i64),
18688            #[prost(double, tag = "3")]
18689            DoubleValue(f64),
18690        }
18691    }
18692    /// The specification for the GPU counters. Gives them information like the
18693    /// name of the counter, unit etc.
18694    #[derive(Clone, PartialEq, ::prost::Oneof)]
18695    pub enum Desc {
18696        /// Must be specified on first trace packet of each session if using mode 1.
18697        /// (e.g. if you're an Android GPU vendor).
18698        #[prost(message, tag = "1")]
18699        CounterDescriptor(super::GpuCounterDescriptor),
18700        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
18701        /// on first trace packet of the trusted sequence if using mode 2.
18702        #[prost(uint64, tag = "4")]
18703        CounterDescriptorIid(u64),
18704    }
18705}
18706/// Interned GPU counter descriptor for sequence-scoped counter specs.
18707#[derive(Clone, PartialEq, ::prost::Message)]
18708pub struct InternedGpuCounterDescriptor {
18709    #[prost(uint64, optional, tag = "1")]
18710    pub iid: ::core::option::Option<u64>,
18711    #[prost(message, optional, tag = "2")]
18712    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18713    /// optional. Identifier for GPU in a multi-gpu device.
18714    #[prost(int32, optional, tag = "3")]
18715    pub gpu_id: ::core::option::Option<i32>,
18716}
18717/// Message for logging events GPU data producer.
18718#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18719pub struct GpuLog {
18720    #[prost(enumeration = "gpu_log::Severity", optional, tag = "1")]
18721    pub severity: ::core::option::Option<i32>,
18722    #[prost(string, optional, tag = "2")]
18723    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18724    #[prost(string, optional, tag = "3")]
18725    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18726}
18727/// Nested message and enum types in `GpuLog`.
18728pub mod gpu_log {
18729    #[derive(
18730        Clone,
18731        Copy,
18732        Debug,
18733        PartialEq,
18734        Eq,
18735        Hash,
18736        PartialOrd,
18737        Ord,
18738        ::prost::Enumeration
18739    )]
18740    #[repr(i32)]
18741    pub enum Severity {
18742        LogSeverityUnspecified = 0,
18743        LogSeverityVerbose = 1,
18744        LogSeverityDebug = 2,
18745        LogSeverityInfo = 3,
18746        LogSeverityWarning = 4,
18747        LogSeverityError = 5,
18748    }
18749    impl Severity {
18750        /// String value of the enum field names used in the ProtoBuf definition.
18751        ///
18752        /// The values are not transformed in any way and thus are considered stable
18753        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18754        pub fn as_str_name(&self) -> &'static str {
18755            match self {
18756                Self::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18757                Self::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18758                Self::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18759                Self::LogSeverityInfo => "LOG_SEVERITY_INFO",
18760                Self::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18761                Self::LogSeverityError => "LOG_SEVERITY_ERROR",
18762            }
18763        }
18764        /// Creates an enum from field names used in the ProtoBuf definition.
18765        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18766            match value {
18767                "LOG_SEVERITY_UNSPECIFIED" => Some(Self::LogSeverityUnspecified),
18768                "LOG_SEVERITY_VERBOSE" => Some(Self::LogSeverityVerbose),
18769                "LOG_SEVERITY_DEBUG" => Some(Self::LogSeverityDebug),
18770                "LOG_SEVERITY_INFO" => Some(Self::LogSeverityInfo),
18771                "LOG_SEVERITY_WARNING" => Some(Self::LogSeverityWarning),
18772                "LOG_SEVERITY_ERROR" => Some(Self::LogSeverityError),
18773                _ => None,
18774            }
18775        }
18776    }
18777}
18778/// Generated by Android's GpuService.
18779#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18780pub struct GpuMemTotalEvent {
18781    #[prost(uint32, optional, tag = "1")]
18782    pub gpu_id: ::core::option::Option<u32>,
18783    #[prost(uint32, optional, tag = "2")]
18784    pub pid: ::core::option::Option<u32>,
18785    #[prost(uint64, optional, tag = "3")]
18786    pub size: ::core::option::Option<u64>,
18787}
18788/// next id: 22
18789#[derive(Clone, PartialEq, ::prost::Message)]
18790pub struct GpuRenderStageEvent {
18791    /// required. Unique ID for the event.
18792    #[prost(uint64, optional, tag = "1")]
18793    pub event_id: ::core::option::Option<u64>,
18794    /// optional. Duration of the event in nanoseconds. If unset, this is a
18795    /// single time point event.
18796    #[prost(uint64, optional, tag = "2")]
18797    pub duration: ::core::option::Option<u64>,
18798    /// required. ID to a hardware queue description in the specifications.
18799    /// InternedGpuRenderStageSpecification
18800    #[prost(uint64, optional, tag = "13")]
18801    pub hw_queue_iid: ::core::option::Option<u64>,
18802    /// required. ID to a render stage description in the specifications.
18803    /// InternedGpuRenderStageSpecification
18804    #[prost(uint64, optional, tag = "14")]
18805    pub stage_iid: ::core::option::Option<u64>,
18806    /// optional. Identifier for GPU in a multi-gpu device.
18807    #[prost(int32, optional, tag = "11")]
18808    pub gpu_id: ::core::option::Option<i32>,
18809    /// required. Graphics context for the event.
18810    /// For OpenGL, this is the GL context.
18811    /// For Vulkan, this is the VkDevice.
18812    #[prost(uint64, optional, tag = "5")]
18813    pub context: ::core::option::Option<u64>,
18814    /// optional. The render target for this event.
18815    /// For OpenGL, this is the GL frame buffer handle.
18816    /// For Vulkan, this is the VkFrameBuffer handle.
18817    #[prost(uint64, optional, tag = "8")]
18818    pub render_target_handle: ::core::option::Option<u64>,
18819    /// optional. Submission ID generated by the UMD.
18820    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18821    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18822    /// to a single API submission should share the same ID.
18823    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18824    #[prost(uint32, optional, tag = "10")]
18825    pub submission_id: ::core::option::Option<u32>,
18826    #[prost(message, repeated, tag = "6")]
18827    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18828    /// optional. The Vulkan render pass handle.
18829    #[prost(uint64, optional, tag = "9")]
18830    pub render_pass_handle: ::core::option::Option<u64>,
18831    /// optional. An ID for the render pass instance. This is used to correlate
18832    /// different events on different queues produced by the same Vulkan render
18833    /// pass instance.
18834    #[prost(uint64, optional, tag = "16")]
18835    pub render_pass_instance_id: ::core::option::Option<u64>,
18836    /// optional. A bit mask representing which render subpasses contributed to
18837    /// this render stage event.  Subpass index 0 is represented by setting the
18838    /// LSB of the mask.  Additional mask can be added for subpass index greater
18839    /// than 63.
18840    #[prost(uint64, repeated, packed = "false", tag = "15")]
18841    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18842    /// optional. The Vulkan command buffer handle.
18843    #[prost(uint64, optional, tag = "12")]
18844    pub command_buffer_handle: ::core::option::Option<u64>,
18845    /// Event IDs of other GpuRenderStageEvents that this event
18846    /// had to wait on before it could run.
18847    #[prost(uint64, repeated, packed = "false", tag = "18")]
18848    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
18849    /// optional. ID to a compute kernel description in the interned data.
18850    /// InternedComputeKernel
18851    #[prost(uint64, optional, tag = "19")]
18852    pub kernel_iid: ::core::option::Option<u64>,
18853    /// optional. Compute kernel launch parameters for this event.
18854    #[prost(message, optional, tag = "21")]
18855    pub launch: ::core::option::Option<gpu_render_stage_event::ComputeKernelLaunch>,
18856    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18857    /// InternedGpuRenderStageSpecification instead.
18858    #[deprecated]
18859    #[prost(message, optional, tag = "7")]
18860    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18861    /// Deprecated. Use hw_queue_iid instead;
18862    #[deprecated]
18863    #[prost(int32, optional, tag = "3")]
18864    pub hw_queue_id: ::core::option::Option<i32>,
18865    /// Deprecated. Use stage_iid instead;
18866    #[deprecated]
18867    #[prost(int32, optional, tag = "4")]
18868    pub stage_id: ::core::option::Option<i32>,
18869    /// optional. Custom name for this render stage event. When set, this
18870    /// provides a name for the stage instead of using the name from the stage
18871    /// specification.
18872    #[prost(oneof = "gpu_render_stage_event::NameField", tags = "17, 20")]
18873    pub name_field: ::core::option::Option<gpu_render_stage_event::NameField>,
18874}
18875/// Nested message and enum types in `GpuRenderStageEvent`.
18876pub mod gpu_render_stage_event {
18877    /// optional. Additional data for the user. This may include attributes for
18878    /// the event like resource ids, shaders, etc.
18879    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18880    pub struct ExtraData {
18881        #[prost(string, optional, tag = "1")]
18882        pub name: ::core::option::Option<::prost::alloc::string::String>,
18883        #[prost(string, optional, tag = "2")]
18884        pub value: ::core::option::Option<::prost::alloc::string::String>,
18885    }
18886    /// 3D unsigned integer vector for grid and workgroup dimensions.
18887    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18888    pub struct Dim3 {
18889        #[prost(uint32, optional, tag = "1")]
18890        pub x: ::core::option::Option<u32>,
18891        #[prost(uint32, optional, tag = "2")]
18892        pub y: ::core::option::Option<u32>,
18893        #[prost(uint32, optional, tag = "3")]
18894        pub z: ::core::option::Option<u32>,
18895    }
18896    /// Typed key/value argument for extending compute kernel descriptions
18897    /// and launch parameters with custom data.
18898    #[derive(Clone, PartialEq, ::prost::Message)]
18899    pub struct ExtraComputeArg {
18900        #[prost(oneof = "extra_compute_arg::NameField", tags = "1, 2")]
18901        pub name_field: ::core::option::Option<extra_compute_arg::NameField>,
18902        #[prost(oneof = "extra_compute_arg::Value", tags = "3, 4, 5, 6, 7")]
18903        pub value: ::core::option::Option<extra_compute_arg::Value>,
18904    }
18905    /// Nested message and enum types in `ExtraComputeArg`.
18906    pub mod extra_compute_arg {
18907        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
18908        pub enum NameField {
18909            /// Interned InternedComputeArgName.
18910            #[prost(uint64, tag = "1")]
18911            NameIid(u64),
18912            /// Non-interned variant.
18913            #[prost(string, tag = "2")]
18914            Name(::prost::alloc::string::String),
18915        }
18916        #[derive(Clone, PartialEq, ::prost::Oneof)]
18917        pub enum Value {
18918            #[prost(int64, tag = "3")]
18919            IntValue(i64),
18920            #[prost(uint64, tag = "4")]
18921            UintValue(u64),
18922            #[prost(double, tag = "5")]
18923            DoubleValue(f64),
18924            #[prost(string, tag = "6")]
18925            StringValue(::prost::alloc::string::String),
18926            /// Interned InternedString via debug_annotation_string_values.
18927            #[prost(uint64, tag = "7")]
18928            StringValueIid(u64),
18929        }
18930    }
18931    /// Compute kernel launch parameters for a single dispatch.
18932    #[derive(Clone, PartialEq, ::prost::Message)]
18933    pub struct ComputeKernelLaunch {
18934        /// Grid dimensions (number of workgroups in each dimension).
18935        #[prost(message, optional, tag = "1")]
18936        pub grid_size: ::core::option::Option<Dim3>,
18937        /// Workgroup dimensions (number of threads per workgroup in each dimension).
18938        #[prost(message, optional, tag = "2")]
18939        pub workgroup_size: ::core::option::Option<Dim3>,
18940        /// Additional typed launch parameters (e.g. registers_per_thread,
18941        /// shared_mem_dynamic, shared_mem_static).
18942        #[prost(message, repeated, tag = "3")]
18943        pub args: ::prost::alloc::vec::Vec<ExtraComputeArg>,
18944    }
18945    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18946    /// The first trace packet of each session should include a Specifications
18947    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18948    /// must be earlier than all other packets. Only one packet with Specifications
18949    /// is expected.
18950    #[derive(Clone, PartialEq, ::prost::Message)]
18951    pub struct Specifications {
18952        #[prost(message, optional, tag = "1")]
18953        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18954        /// Labels to categorize the hw Queue this event goes on.
18955        #[prost(message, repeated, tag = "2")]
18956        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18957        /// Labels to categorize render stage(binning, render, compute etc).
18958        #[prost(message, repeated, tag = "3")]
18959        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18960    }
18961    /// Nested message and enum types in `Specifications`.
18962    pub mod specifications {
18963        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18964        pub struct ContextSpec {
18965            #[prost(uint64, optional, tag = "1")]
18966            pub context: ::core::option::Option<u64>,
18967            #[prost(int32, optional, tag = "2")]
18968            pub pid: ::core::option::Option<i32>,
18969        }
18970        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18971        pub struct Description {
18972            #[prost(string, optional, tag = "1")]
18973            pub name: ::core::option::Option<::prost::alloc::string::String>,
18974            #[prost(string, optional, tag = "2")]
18975            pub description: ::core::option::Option<::prost::alloc::string::String>,
18976        }
18977    }
18978    /// optional. Custom name for this render stage event. When set, this
18979    /// provides a name for the stage instead of using the name from the stage
18980    /// specification.
18981    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
18982    pub enum NameField {
18983        #[prost(string, tag = "17")]
18984        Name(::prost::alloc::string::String),
18985        /// Interned event name. Refers to EventName in InternedData.
18986        #[prost(uint64, tag = "20")]
18987        NameIid(u64),
18988    }
18989}
18990/// The iid is the numeric value of either the GL Context or the VkDevice
18991/// handle.
18992#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18993pub struct InternedGraphicsContext {
18994    #[prost(uint64, optional, tag = "1")]
18995    pub iid: ::core::option::Option<u64>,
18996    #[prost(int32, optional, tag = "2")]
18997    pub pid: ::core::option::Option<i32>,
18998    #[prost(enumeration = "interned_graphics_context::Api", optional, tag = "3")]
18999    pub api: ::core::option::Option<i32>,
19000}
19001/// Nested message and enum types in `InternedGraphicsContext`.
19002pub mod interned_graphics_context {
19003    #[derive(
19004        Clone,
19005        Copy,
19006        Debug,
19007        PartialEq,
19008        Eq,
19009        Hash,
19010        PartialOrd,
19011        Ord,
19012        ::prost::Enumeration
19013    )]
19014    #[repr(i32)]
19015    pub enum Api {
19016        Undefined = 0,
19017        OpenGl = 1,
19018        Vulkan = 2,
19019        OpenCl = 3,
19020        Cuda = 4,
19021        Hip = 5,
19022    }
19023    impl Api {
19024        /// String value of the enum field names used in the ProtoBuf definition.
19025        ///
19026        /// The values are not transformed in any way and thus are considered stable
19027        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19028        pub fn as_str_name(&self) -> &'static str {
19029            match self {
19030                Self::Undefined => "UNDEFINED",
19031                Self::OpenGl => "OPEN_GL",
19032                Self::Vulkan => "VULKAN",
19033                Self::OpenCl => "OPEN_CL",
19034                Self::Cuda => "CUDA",
19035                Self::Hip => "HIP",
19036            }
19037        }
19038        /// Creates an enum from field names used in the ProtoBuf definition.
19039        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19040            match value {
19041                "UNDEFINED" => Some(Self::Undefined),
19042                "OPEN_GL" => Some(Self::OpenGl),
19043                "VULKAN" => Some(Self::Vulkan),
19044                "OPEN_CL" => Some(Self::OpenCl),
19045                "CUDA" => Some(Self::Cuda),
19046                "HIP" => Some(Self::Hip),
19047                _ => None,
19048            }
19049        }
19050    }
19051}
19052#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19053pub struct InternedGpuRenderStageSpecification {
19054    #[prost(uint64, optional, tag = "1")]
19055    pub iid: ::core::option::Option<u64>,
19056    #[prost(string, optional, tag = "2")]
19057    pub name: ::core::option::Option<::prost::alloc::string::String>,
19058    #[prost(string, optional, tag = "3")]
19059    pub description: ::core::option::Option<::prost::alloc::string::String>,
19060    #[prost(
19061        enumeration = "interned_gpu_render_stage_specification::RenderStageCategory",
19062        optional,
19063        tag = "4"
19064    )]
19065    pub category: ::core::option::Option<i32>,
19066}
19067/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
19068pub mod interned_gpu_render_stage_specification {
19069    #[derive(
19070        Clone,
19071        Copy,
19072        Debug,
19073        PartialEq,
19074        Eq,
19075        Hash,
19076        PartialOrd,
19077        Ord,
19078        ::prost::Enumeration
19079    )]
19080    #[repr(i32)]
19081    pub enum RenderStageCategory {
19082        Other = 0,
19083        Graphics = 1,
19084        Compute = 2,
19085    }
19086    impl RenderStageCategory {
19087        /// String value of the enum field names used in the ProtoBuf definition.
19088        ///
19089        /// The values are not transformed in any way and thus are considered stable
19090        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19091        pub fn as_str_name(&self) -> &'static str {
19092            match self {
19093                Self::Other => "OTHER",
19094                Self::Graphics => "GRAPHICS",
19095                Self::Compute => "COMPUTE",
19096            }
19097        }
19098        /// Creates an enum from field names used in the ProtoBuf definition.
19099        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19100            match value {
19101                "OTHER" => Some(Self::Other),
19102                "GRAPHICS" => Some(Self::Graphics),
19103                "COMPUTE" => Some(Self::Compute),
19104                _ => None,
19105            }
19106        }
19107    }
19108}
19109#[derive(Clone, PartialEq, ::prost::Message)]
19110pub struct InternedComputeKernel {
19111    #[prost(uint64, optional, tag = "1")]
19112    pub iid: ::core::option::Option<u64>,
19113    #[prost(string, optional, tag = "2")]
19114    pub name: ::core::option::Option<::prost::alloc::string::String>,
19115    #[prost(string, optional, tag = "3")]
19116    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
19117    #[prost(string, optional, tag = "4")]
19118    pub arch: ::core::option::Option<::prost::alloc::string::String>,
19119    /// Additional typed kernel attributes (e.g. static resource limits).
19120    #[prost(message, repeated, tag = "5")]
19121    pub args: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraComputeArg>,
19122}
19123#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19124pub struct InternedComputeArgName {
19125    #[prost(uint64, optional, tag = "1")]
19126    pub iid: ::core::option::Option<u64>,
19127    #[prost(string, optional, tag = "2")]
19128    pub name: ::core::option::Option<::prost::alloc::string::String>,
19129}
19130/// Message for recording the Vulkan call.
19131#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19132pub struct VulkanApiEvent {
19133    #[prost(oneof = "vulkan_api_event::Event", tags = "1, 2")]
19134    pub event: ::core::option::Option<vulkan_api_event::Event>,
19135}
19136/// Nested message and enum types in `VulkanApiEvent`.
19137pub mod vulkan_api_event {
19138    /// For recording vkSetDebugUtilsObjectNameEXT and
19139    /// vkDebugMarkerSetObjectNameEXT
19140    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19141    pub struct VkDebugUtilsObjectName {
19142        #[prost(uint32, optional, tag = "1")]
19143        pub pid: ::core::option::Option<u32>,
19144        #[prost(uint64, optional, tag = "2")]
19145        pub vk_device: ::core::option::Option<u64>,
19146        /// VkObjectType.  Value must match
19147        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
19148        #[prost(int32, optional, tag = "3")]
19149        pub object_type: ::core::option::Option<i32>,
19150        #[prost(uint64, optional, tag = "4")]
19151        pub object: ::core::option::Option<u64>,
19152        #[prost(string, optional, tag = "5")]
19153        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
19154    }
19155    /// For recording vkQueueSubmit call.
19156    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19157    pub struct VkQueueSubmit {
19158        #[prost(uint64, optional, tag = "1")]
19159        pub duration_ns: ::core::option::Option<u64>,
19160        #[prost(uint32, optional, tag = "2")]
19161        pub pid: ::core::option::Option<u32>,
19162        #[prost(uint32, optional, tag = "3")]
19163        pub tid: ::core::option::Option<u32>,
19164        #[prost(uint64, optional, tag = "4")]
19165        pub vk_queue: ::core::option::Option<u64>,
19166        #[prost(uint64, repeated, packed = "false", tag = "5")]
19167        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
19168        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
19169        /// submission_id must match GpuRenderStageEvent.submission_id if the
19170        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
19171        #[prost(uint32, optional, tag = "6")]
19172        pub submission_id: ::core::option::Option<u32>,
19173    }
19174    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19175    pub enum Event {
19176        #[prost(message, tag = "1")]
19177        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
19178        #[prost(message, tag = "2")]
19179        VkQueueSubmit(VkQueueSubmit),
19180    }
19181}
19182/// All the information that cannot be sent within a VulkanMemoryEvent message,
19183/// are sent as annotations to the main memory event. One example is the
19184/// properties of the object that consumes the allocated memory, for example, a
19185/// buffer or an image.
19186/// key_iid and string_iid are both interned strings. Original string value is
19187/// stored in vulkan_memory_keys from
19188/// protos/perfetto/trace/interned_data/interned_data.proto.
19189#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19190pub struct VulkanMemoryEventAnnotation {
19191    #[prost(uint64, optional, tag = "1")]
19192    pub key_iid: ::core::option::Option<u64>,
19193    #[prost(oneof = "vulkan_memory_event_annotation::Value", tags = "2, 3, 4")]
19194    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
19195}
19196/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
19197pub mod vulkan_memory_event_annotation {
19198    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
19199    pub enum Value {
19200        #[prost(int64, tag = "2")]
19201        IntValue(i64),
19202        #[prost(double, tag = "3")]
19203        DoubleValue(f64),
19204        #[prost(uint64, tag = "4")]
19205        StringIid(u64),
19206    }
19207}
19208/// Each VulkanMemoryEvent encompasses information regarding one single function
19209/// call that results in reserving, binding or freeing host or GPU memory. There
19210/// is a special message type, ANNOTATIONS, which is used to communicate
19211/// information that are not directly related to a memory event, nonetheless are
19212/// essential to understand the memory usage. An example is the size and memory
19213/// types of the memory heaps.
19214///
19215/// Next reserved id: 10 (up to 15).
19216/// Next id: 21.
19217#[derive(Clone, PartialEq, ::prost::Message)]
19218pub struct VulkanMemoryEvent {
19219    #[prost(enumeration = "vulkan_memory_event::Source", optional, tag = "1")]
19220    pub source: ::core::option::Option<i32>,
19221    #[prost(enumeration = "vulkan_memory_event::Operation", optional, tag = "2")]
19222    pub operation: ::core::option::Option<i32>,
19223    #[prost(int64, optional, tag = "3")]
19224    pub timestamp: ::core::option::Option<i64>,
19225    #[prost(uint32, optional, tag = "4")]
19226    pub pid: ::core::option::Option<u32>,
19227    #[prost(fixed64, optional, tag = "5")]
19228    pub memory_address: ::core::option::Option<u64>,
19229    #[prost(uint64, optional, tag = "6")]
19230    pub memory_size: ::core::option::Option<u64>,
19231    /// Interned string. Original string value is stored in function_names from
19232    /// protos/perfetto/trace/interned_data/interned_data.proto.
19233    #[prost(uint64, optional, tag = "7")]
19234    pub caller_iid: ::core::option::Option<u64>,
19235    #[prost(enumeration = "vulkan_memory_event::AllocationScope", optional, tag = "8")]
19236    pub allocation_scope: ::core::option::Option<i32>,
19237    /// Extra related information, e.g., create configs, etc.
19238    #[prost(message, repeated, tag = "9")]
19239    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19240    /// Field IDs used for device memory (low sampling rate)
19241    #[prost(fixed64, optional, tag = "16")]
19242    pub device: ::core::option::Option<u64>,
19243    #[prost(fixed64, optional, tag = "17")]
19244    pub device_memory: ::core::option::Option<u64>,
19245    #[prost(uint32, optional, tag = "18")]
19246    pub memory_type: ::core::option::Option<u32>,
19247    #[prost(uint32, optional, tag = "19")]
19248    pub heap: ::core::option::Option<u32>,
19249    #[prost(fixed64, optional, tag = "20")]
19250    pub object_handle: ::core::option::Option<u64>,
19251}
19252/// Nested message and enum types in `VulkanMemoryEvent`.
19253pub mod vulkan_memory_event {
19254    #[derive(
19255        Clone,
19256        Copy,
19257        Debug,
19258        PartialEq,
19259        Eq,
19260        Hash,
19261        PartialOrd,
19262        Ord,
19263        ::prost::Enumeration
19264    )]
19265    #[repr(i32)]
19266    pub enum Source {
19267        Unspecified = 0,
19268        Driver = 1,
19269        Device = 2,
19270        DeviceMemory = 3,
19271        Buffer = 4,
19272        Image = 5,
19273    }
19274    impl Source {
19275        /// String value of the enum field names used in the ProtoBuf definition.
19276        ///
19277        /// The values are not transformed in any way and thus are considered stable
19278        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19279        pub fn as_str_name(&self) -> &'static str {
19280            match self {
19281                Self::Unspecified => "SOURCE_UNSPECIFIED",
19282                Self::Driver => "SOURCE_DRIVER",
19283                Self::Device => "SOURCE_DEVICE",
19284                Self::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19285                Self::Buffer => "SOURCE_BUFFER",
19286                Self::Image => "SOURCE_IMAGE",
19287            }
19288        }
19289        /// Creates an enum from field names used in the ProtoBuf definition.
19290        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19291            match value {
19292                "SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
19293                "SOURCE_DRIVER" => Some(Self::Driver),
19294                "SOURCE_DEVICE" => Some(Self::Device),
19295                "SOURCE_DEVICE_MEMORY" => Some(Self::DeviceMemory),
19296                "SOURCE_BUFFER" => Some(Self::Buffer),
19297                "SOURCE_IMAGE" => Some(Self::Image),
19298                _ => None,
19299            }
19300        }
19301    }
19302    #[derive(
19303        Clone,
19304        Copy,
19305        Debug,
19306        PartialEq,
19307        Eq,
19308        Hash,
19309        PartialOrd,
19310        Ord,
19311        ::prost::Enumeration
19312    )]
19313    #[repr(i32)]
19314    pub enum Operation {
19315        OpUnspecified = 0,
19316        /// alloc, create
19317        OpCreate = 1,
19318        /// free, destroy(non-bound)
19319        OpDestroy = 2,
19320        /// bind buffer and image
19321        OpBind = 3,
19322        /// destroy (bound)
19323        OpDestroyBound = 4,
19324        /// only annotations
19325        OpAnnotations = 5,
19326    }
19327    impl Operation {
19328        /// String value of the enum field names used in the ProtoBuf definition.
19329        ///
19330        /// The values are not transformed in any way and thus are considered stable
19331        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19332        pub fn as_str_name(&self) -> &'static str {
19333            match self {
19334                Self::OpUnspecified => "OP_UNSPECIFIED",
19335                Self::OpCreate => "OP_CREATE",
19336                Self::OpDestroy => "OP_DESTROY",
19337                Self::OpBind => "OP_BIND",
19338                Self::OpDestroyBound => "OP_DESTROY_BOUND",
19339                Self::OpAnnotations => "OP_ANNOTATIONS",
19340            }
19341        }
19342        /// Creates an enum from field names used in the ProtoBuf definition.
19343        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19344            match value {
19345                "OP_UNSPECIFIED" => Some(Self::OpUnspecified),
19346                "OP_CREATE" => Some(Self::OpCreate),
19347                "OP_DESTROY" => Some(Self::OpDestroy),
19348                "OP_BIND" => Some(Self::OpBind),
19349                "OP_DESTROY_BOUND" => Some(Self::OpDestroyBound),
19350                "OP_ANNOTATIONS" => Some(Self::OpAnnotations),
19351                _ => None,
19352            }
19353        }
19354    }
19355    #[derive(
19356        Clone,
19357        Copy,
19358        Debug,
19359        PartialEq,
19360        Eq,
19361        Hash,
19362        PartialOrd,
19363        Ord,
19364        ::prost::Enumeration
19365    )]
19366    #[repr(i32)]
19367    pub enum AllocationScope {
19368        ScopeUnspecified = 0,
19369        ScopeCommand = 1,
19370        ScopeObject = 2,
19371        ScopeCache = 3,
19372        ScopeDevice = 4,
19373        ScopeInstance = 5,
19374    }
19375    impl AllocationScope {
19376        /// String value of the enum field names used in the ProtoBuf definition.
19377        ///
19378        /// The values are not transformed in any way and thus are considered stable
19379        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19380        pub fn as_str_name(&self) -> &'static str {
19381            match self {
19382                Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19383                Self::ScopeCommand => "SCOPE_COMMAND",
19384                Self::ScopeObject => "SCOPE_OBJECT",
19385                Self::ScopeCache => "SCOPE_CACHE",
19386                Self::ScopeDevice => "SCOPE_DEVICE",
19387                Self::ScopeInstance => "SCOPE_INSTANCE",
19388            }
19389        }
19390        /// Creates an enum from field names used in the ProtoBuf definition.
19391        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19392            match value {
19393                "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
19394                "SCOPE_COMMAND" => Some(Self::ScopeCommand),
19395                "SCOPE_OBJECT" => Some(Self::ScopeObject),
19396                "SCOPE_CACHE" => Some(Self::ScopeCache),
19397                "SCOPE_DEVICE" => Some(Self::ScopeDevice),
19398                "SCOPE_INSTANCE" => Some(Self::ScopeInstance),
19399                _ => None,
19400            }
19401        }
19402    }
19403}
19404/// The interning fields in this file can refer to 2 different intern tables,
19405/// depending on the message they are used in. If the interned fields are present
19406/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19407/// should be used. If the intered fields are present in the
19408/// StreamingProfilePacket proto, then the intern tables included in all of the
19409/// previous InternedData message with same sequence ID should be used.
19410/// TODO(fmayer): Move to the intern tables to a common location.
19411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19412pub struct InternedString {
19413    /// Interning key. Starts from 1, 0 is the same as "not set".
19414    #[prost(uint64, optional, tag = "1")]
19415    pub iid: ::core::option::Option<u64>,
19416    /// The actual string.
19417    #[prost(bytes = "vec", optional, tag = "2")]
19418    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19419}
19420/// Source line info.
19421#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19422pub struct Line {
19423    #[prost(string, optional, tag = "1")]
19424    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19425    #[prost(string, optional, tag = "2")]
19426    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19427    #[prost(uint32, optional, tag = "3")]
19428    pub line_number: ::core::option::Option<u32>,
19429}
19430/// Symbols for a given address in a module.
19431#[derive(Clone, PartialEq, ::prost::Message)]
19432pub struct AddressSymbols {
19433    #[prost(uint64, optional, tag = "1")]
19434    pub address: ::core::option::Option<u64>,
19435    /// Source lines that correspond to this address.
19436    ///
19437    /// These are repeated because when inlining happens, multiple functions'
19438    /// frames can be at a single address. Imagine function Foo calling the
19439    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19440    /// both Foo and the std::vector<int> constructor when we symbolize the
19441    /// address.
19442    #[prost(message, repeated, tag = "2")]
19443    pub lines: ::prost::alloc::vec::Vec<Line>,
19444}
19445/// Symbols for addresses seen in a module.
19446/// Used in re-symbolisation of complete traces.
19447#[derive(Clone, PartialEq, ::prost::Message)]
19448pub struct ModuleSymbols {
19449    /// Fully qualified path to the mapping.
19450    /// E.g. /system/lib64/libc.so.
19451    #[prost(string, optional, tag = "1")]
19452    pub path: ::core::option::Option<::prost::alloc::string::String>,
19453    /// .note.gnu.build-id on Linux (not hex encoded).
19454    /// uuid on MacOS.
19455    /// Module GUID on Windows.
19456    #[prost(string, optional, tag = "2")]
19457    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19458    #[prost(message, repeated, tag = "3")]
19459    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19460}
19461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19462pub struct Mapping {
19463    /// Interning key.
19464    /// Starts from 1, 0 is the same as "not set".
19465    #[prost(uint64, optional, tag = "1")]
19466    pub iid: ::core::option::Option<u64>,
19467    /// Interning key.
19468    /// Starts from 1, 0 is the same as "not set".
19469    #[prost(uint64, optional, tag = "2")]
19470    pub build_id: ::core::option::Option<u64>,
19471    /// This is not set on Android 10.
19472    #[prost(uint64, optional, tag = "8")]
19473    pub exact_offset: ::core::option::Option<u64>,
19474    #[prost(uint64, optional, tag = "3")]
19475    pub start_offset: ::core::option::Option<u64>,
19476    #[prost(uint64, optional, tag = "4")]
19477    pub start: ::core::option::Option<u64>,
19478    #[prost(uint64, optional, tag = "5")]
19479    pub end: ::core::option::Option<u64>,
19480    /// Libunwindstack-specific concept, not to be confused with bionic linker's
19481    /// notion of load_bias. Needed to correct relative pc addresses (as produced
19482    /// by libunwindstack) when doing offline resymbolisation.
19483    ///
19484    /// For an executable ELF PT_LOAD segment, this is:
19485    ///    p_vaddr - p_offset
19486    ///
19487    /// Where p_offset means that the code is at that offset into the ELF file on
19488    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
19489    /// to where the linker loads the ELF into the address space. For most ELFs,
19490    /// the two values are identical and therefore load_bias is zero.
19491    #[prost(uint64, optional, tag = "6")]
19492    pub load_bias: ::core::option::Option<u64>,
19493    /// E.g. \["system", "lib64", "libc.so"\]
19494    /// id of string.
19495    #[prost(uint64, repeated, packed = "false", tag = "7")]
19496    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
19497}
19498#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19499pub struct Frame {
19500    /// Interning key. Starts from 1, 0 is the same as "not set".
19501    #[prost(uint64, optional, tag = "1")]
19502    pub iid: ::core::option::Option<u64>,
19503    /// E.g. "fopen"
19504    /// id of string.
19505    #[prost(uint64, optional, tag = "2")]
19506    pub function_name_id: ::core::option::Option<u64>,
19507    /// The mapping in which this frame's instruction pointer resides.
19508    /// iid of Mapping.iid.
19509    ///
19510    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
19511    /// this frame has no associated memory mapping (e.g., symbolized frames
19512    /// without address information).
19513    ///
19514    /// Starts from 1, 0 is the same as "not set".
19515    #[prost(uint64, optional, tag = "3")]
19516    pub mapping_id: ::core::option::Option<u64>,
19517    /// Instruction pointer relative to the start of the mapping.
19518    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
19519    #[prost(uint64, optional, tag = "4")]
19520    pub rel_pc: ::core::option::Option<u64>,
19521    /// Source file path for this frame.
19522    /// This is typically set during online symbolization when symbol information
19523    /// is available at trace collection time. If not set, source file paths may be
19524    /// added later via offline symbolization (see ModuleSymbols).
19525    ///
19526    /// Starts from 1, 0 is the same as "not set".
19527    ///
19528    /// iid of InternedData.source_paths.
19529    #[prost(uint64, optional, tag = "5")]
19530    pub source_path_iid: ::core::option::Option<u64>,
19531    /// Line number in the source file for this frame.
19532    /// This is typically set during online symbolization when symbol information
19533    /// is available at trace collection time. If not set, line numbers may be
19534    /// added later via offline symbolization (see ModuleSymbols).
19535    #[prost(uint32, optional, tag = "6")]
19536    pub line_number: ::core::option::Option<u32>,
19537    #[prost(oneof = "frame::KindField", tags = "7, 8")]
19538    pub kind_field: ::core::option::Option<frame::KindField>,
19539}
19540/// Nested message and enum types in `Frame`.
19541pub mod frame {
19542    /// The kind of code this frame represents, for categorization (e.g. coloring
19543    /// a flamegraph, or telling interpreted Python frames apart from native and
19544    /// GC frames in one mixed stack). Set the well-known `kind` when one fits,
19545    /// otherwise set `kind_str` to a custom label. The well-known enum is
19546    /// append-only and language-neutral; language-specific labels go in kind_str.
19547    #[derive(
19548        Clone,
19549        Copy,
19550        Debug,
19551        PartialEq,
19552        Eq,
19553        Hash,
19554        PartialOrd,
19555        Ord,
19556        ::prost::Enumeration
19557    )]
19558    #[repr(i32)]
19559    pub enum Kind {
19560        Unknown = 0,
19561        Native = 1,
19562        Kernel = 2,
19563        Interpreted = 3,
19564        Jit = 4,
19565        Gc = 5,
19566        Runtime = 6,
19567    }
19568    impl Kind {
19569        /// String value of the enum field names used in the ProtoBuf definition.
19570        ///
19571        /// The values are not transformed in any way and thus are considered stable
19572        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19573        pub fn as_str_name(&self) -> &'static str {
19574            match self {
19575                Self::Unknown => "KIND_UNKNOWN",
19576                Self::Native => "KIND_NATIVE",
19577                Self::Kernel => "KIND_KERNEL",
19578                Self::Interpreted => "KIND_INTERPRETED",
19579                Self::Jit => "KIND_JIT",
19580                Self::Gc => "KIND_GC",
19581                Self::Runtime => "KIND_RUNTIME",
19582            }
19583        }
19584        /// Creates an enum from field names used in the ProtoBuf definition.
19585        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19586            match value {
19587                "KIND_UNKNOWN" => Some(Self::Unknown),
19588                "KIND_NATIVE" => Some(Self::Native),
19589                "KIND_KERNEL" => Some(Self::Kernel),
19590                "KIND_INTERPRETED" => Some(Self::Interpreted),
19591                "KIND_JIT" => Some(Self::Jit),
19592                "KIND_GC" => Some(Self::Gc),
19593                "KIND_RUNTIME" => Some(Self::Runtime),
19594                _ => None,
19595            }
19596        }
19597    }
19598    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19599    pub enum KindField {
19600        #[prost(enumeration = "Kind", tag = "7")]
19601        Kind(i32),
19602        #[prost(string, tag = "8")]
19603        KindStr(::prost::alloc::string::String),
19604    }
19605}
19606#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19607pub struct Callstack {
19608    /// Interning key. Starts from 1, 0 is the same as "not set".
19609    #[prost(uint64, optional, tag = "1")]
19610    pub iid: ::core::option::Option<u64>,
19611    /// Frames of this callstack. Bottom frame first.
19612    #[prost(uint64, repeated, packed = "false", tag = "2")]
19613    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
19614}
19615/// A fully-inline, self-contained callstack: each frame carries its function
19616/// name and source location directly, with no interning. This is the simple
19617/// alternative to Callstack (whose frames are interned Frame/Mapping
19618/// references): use it when trace size is not a concern or callstacks are
19619/// unique. For binary/library information (mappings, build ids, relative pcs)
19620/// or efficient repetition, use interned Callstacks instead.
19621///
19622/// Used by StackSample as the inline (non-interned) variant of its callstack
19623/// field.
19624#[derive(Clone, PartialEq, ::prost::Message)]
19625pub struct InlineCallstack {
19626    /// Frames of this callstack, ordered from bottom (outermost) to top
19627    /// (innermost). For example, if main() calls foo() which calls bar(), the
19628    /// frames are: \[main, foo, bar\].
19629    #[prost(message, repeated, tag = "1")]
19630    pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
19631}
19632/// Nested message and enum types in `InlineCallstack`.
19633pub mod inline_callstack {
19634    /// A frame within an inline callstack.
19635    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19636    pub struct Frame {
19637        /// Function name, e.g. "malloc" or "std::vector<int>::push_back".
19638        #[prost(string, optional, tag = "1")]
19639        pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19640        /// Source file path, e.g. "/src/foo.cc".
19641        #[prost(string, optional, tag = "2")]
19642        pub source_file: ::core::option::Option<::prost::alloc::string::String>,
19643        /// Line number in the source file.
19644        #[prost(uint32, optional, tag = "3")]
19645        pub line_number: ::core::option::Option<u32>,
19646    }
19647}
19648/// A single stack sample: a callstack captured for a task, measured against a
19649/// counter timebase. This is transport-neutral and timebase-neutral. The
19650/// timebase can be CPU cycles, wall-clock nanoseconds, allocated bytes, page
19651/// faults, etc.; the primary CounterDescriptor says which. It is not specific to
19652/// CPU profiling.
19653///
19654/// Each context/callstack/descriptor can be given inline or as an `iid`
19655/// referencing an InternedData entry. Producers that reuse a context across
19656/// samples should intern it so the per-sample cost is a single varint.
19657#[derive(Clone, PartialEq, ::prost::Message)]
19658pub struct StackSample {
19659    /// The value attributed to this sample for the primary counter (e.g. the
19660    /// number of cycles or nanoseconds this sample represents).
19661    #[prost(uint64, optional, tag = "11")]
19662    pub primary_weight: ::core::option::Option<u64>,
19663    /// Additional counters read at the same sample (e.g. instructions, cache
19664    /// misses read alongside a cycles timebase). follower_weights is positional
19665    /// with whichever of follower_descriptors / follower_descriptor_iids is set.
19666    #[prost(message, repeated, tag = "12")]
19667    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
19668    #[prost(uint64, repeated, tag = "13")]
19669    pub follower_descriptor_iids: ::prost::alloc::vec::Vec<u64>,
19670    #[prost(uint64, repeated, tag = "14")]
19671    pub follower_weights: ::prost::alloc::vec::Vec<u64>,
19672    /// The task (thread / process / async context) this sample is attributed to.
19673    /// Give it inline via `task_context` or reference an interned TaskContext via
19674    /// `task_context_iid`.
19675    #[prost(oneof = "stack_sample::TaskContextField", tags = "1, 2")]
19676    pub task_context_field: ::core::option::Option<stack_sample::TaskContextField>,
19677    /// The execution state (cpu, privilege mode) at sample time. Absent for
19678    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
19679    /// or reference an interned ExecutionContext via `execution_context_iid`.
19680    #[prost(oneof = "stack_sample::ExecutionContextField", tags = "3, 4")]
19681    pub execution_context_field: ::core::option::Option<
19682        stack_sample::ExecutionContextField,
19683    >,
19684    /// The captured callstack, bottom frame first. Give it fully inline via
19685    /// `callstack` or reference an interned Callstack via `callstack_iid`.
19686    #[prost(oneof = "stack_sample::CallstackField", tags = "5, 6")]
19687    pub callstack_field: ::core::option::Option<stack_sample::CallstackField>,
19688    /// Set if stack unwinding was incomplete; describes the data, not producer
19689    /// internal state. Give it inline via `unwind_error` or reference an interned
19690    /// string via `unwind_error_iid`.
19691    ///
19692    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
19693    /// wire layout; a table column will surface it later.
19694    #[prost(oneof = "stack_sample::UnwindErrorField", tags = "7, 8")]
19695    pub unwind_error_field: ::core::option::Option<stack_sample::UnwindErrorField>,
19696    /// The sampling timebase: the counter this sample's weight is measured
19697    /// against. Set one of the two; may be omitted entirely if declared in
19698    /// StackSampleDefaults.primary_descriptor.
19699    #[prost(oneof = "stack_sample::PrimaryDescriptorField", tags = "9, 10")]
19700    pub primary_descriptor_field: ::core::option::Option<
19701        stack_sample::PrimaryDescriptorField,
19702    >,
19703}
19704/// Nested message and enum types in `StackSample`.
19705pub mod stack_sample {
19706    /// The task an observation is attributed to. At least one of pid / tid /
19707    /// async_id should be set. async_id identifies a stackful async context
19708    /// (goroutine, fiber, ...) described by an AsyncContextDescriptor whose iid
19709    /// equals the async_id.
19710    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19711    pub struct TaskContext {
19712        /// Interning key, used when this context is emitted via
19713        /// InternedData.stack_sample_task_contexts and referenced by
19714        /// StackSample.task_context_iid. Starts from 1; 0 is the same as "not set".
19715        #[prost(uint64, optional, tag = "1")]
19716        pub iid: ::core::option::Option<u64>,
19717        /// OS process id the sample belongs to.
19718        #[prost(uint32, optional, tag = "2")]
19719        pub pid: ::core::option::Option<u32>,
19720        /// OS thread id the sample belongs to. If only tid is set, the process is
19721        /// inferred from thread association elsewhere in the trace.
19722        #[prost(uint32, optional, tag = "3")]
19723        pub tid: ::core::option::Option<u32>,
19724        #[prost(uint64, optional, tag = "4")]
19725        pub async_id: ::core::option::Option<u64>,
19726    }
19727    /// Describes an async context referenced by TaskContext.async_id: a stackful
19728    /// unit of execution that is not an OS thread (goroutine, fiber, coroutine).
19729    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19730    pub struct AsyncContextDescriptor {
19731        /// Interning key, equal to the TaskContext.async_id it describes. Starts
19732        /// from 1, 0 is the same as "not set".
19733        #[prost(uint64, optional, tag = "1")]
19734        pub iid: ::core::option::Option<u64>,
19735        /// A human-readable name for this specific context, e.g. "worker-7".
19736        #[prost(string, optional, tag = "2")]
19737        pub name: ::core::option::Option<::prost::alloc::string::String>,
19738        /// The kind of async context, e.g. "goroutine", "fiber".
19739        #[prost(string, optional, tag = "3")]
19740        pub kind: ::core::option::Option<::prost::alloc::string::String>,
19741        /// iid of the structural parent AsyncContextDescriptor, if any.
19742        #[prost(uint64, optional, tag = "4")]
19743        pub parent_iid: ::core::option::Option<u64>,
19744    }
19745    /// The execution state a sample was taken in. All fields are optional: an
19746    /// off-CPU sample (e.g. a wall-clock sampler catching a sleeping thread) has
19747    /// no meaningful cpu or mode.
19748    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19749    pub struct ExecutionContext {
19750        /// Interning key, used when this context is emitted via
19751        /// InternedData.stack_sample_execution_contexts and referenced by
19752        /// StackSample.execution_context_iid. Starts from 1; 0 is the same as "not
19753        /// set".
19754        #[prost(uint64, optional, tag = "1")]
19755        pub iid: ::core::option::Option<u64>,
19756        /// The cpu the sample was taken on.
19757        #[prost(uint32, optional, tag = "2")]
19758        pub cpu: ::core::option::Option<u32>,
19759        /// The privilege level the sampled code was running at.
19760        #[prost(enumeration = "Mode", optional, tag = "3")]
19761        pub mode: ::core::option::Option<i32>,
19762    }
19763    /// Describes a counter: a named, typed quantity a sample is measured against
19764    /// (the sampling timebase) or observed alongside (a follower). Values live on
19765    /// the sample as weights; this only describes their meaning.
19766    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19767    pub struct CounterDescriptor {
19768        /// Interning key, used when this descriptor is emitted via
19769        /// InternedData.stack_sample_counter_descriptors and referenced by
19770        /// StackSample.primary_descriptor_iid. Starts from 1; 0 is the same as "not
19771        /// set".
19772        #[prost(uint64, optional, tag = "1")]
19773        pub iid: ::core::option::Option<u64>,
19774        /// Human-readable counter name, e.g. "cycles", "wall-time", "cache-misses".
19775        #[prost(string, optional, tag = "2")]
19776        pub name: ::core::option::Option<::prost::alloc::string::String>,
19777        /// Scales raw weights to `unit`. E.g. unit=UNIT_BYTES, unit_multiplier=1024
19778        /// means weights are in KiB. Absent means 1.
19779        #[prost(uint64, optional, tag = "5")]
19780        pub unit_multiplier: ::core::option::Option<u64>,
19781        /// Free-form description of what the counter measures.
19782        #[prost(string, optional, tag = "6")]
19783        pub description: ::core::option::Option<::prost::alloc::string::String>,
19784        /// The scope of this counter's instances. Absent means SCOPE_GLOBAL.
19785        #[prost(enumeration = "counter_descriptor::Scope", optional, tag = "7")]
19786        pub scope: ::core::option::Option<i32>,
19787        /// The unit weights are expressed in. Set the well-known `unit` when one
19788        /// fits, otherwise set `unit_str` to a custom label.
19789        #[prost(oneof = "counter_descriptor::UnitField", tags = "3, 4")]
19790        pub unit_field: ::core::option::Option<counter_descriptor::UnitField>,
19791    }
19792    /// Nested message and enum types in `CounterDescriptor`.
19793    pub mod counter_descriptor {
19794        /// The scope of a counter instance: which stream of values the per-sample
19795        /// weights belong to. Counter instances accumulate independently, so
19796        /// values from different instances must never be merged into one stream.
19797        /// Trace processor keeps sampling streams separate and materializes one
19798        /// counter track per instance within each stream: SCOPE_GLOBAL yields one
19799        /// track per sampling stream and SCOPE_CPU one track per
19800        /// (sampling stream, cpu).
19801        #[derive(
19802            Clone,
19803            Copy,
19804            Debug,
19805            PartialEq,
19806            Eq,
19807            Hash,
19808            PartialOrd,
19809            Ord,
19810            ::prost::Enumeration
19811        )]
19812        #[repr(i32)]
19813        pub enum Scope {
19814            /// Treated as SCOPE_GLOBAL.
19815            Unspecified = 0,
19816            /// A single counter instance, not split by cpu, thread or anything
19817            /// else.
19818            Global = 1,
19819            /// One counter instance per cpu. Each sample's weight belongs to the
19820            /// instance of the cpu in its ExecutionContext; samples without a cpu
19821            /// cannot be attributed and their weights for this counter are dropped.
19822            Cpu = 2,
19823        }
19824        impl Scope {
19825            /// String value of the enum field names used in the ProtoBuf definition.
19826            ///
19827            /// The values are not transformed in any way and thus are considered stable
19828            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19829            pub fn as_str_name(&self) -> &'static str {
19830                match self {
19831                    Self::Unspecified => "SCOPE_UNSPECIFIED",
19832                    Self::Global => "SCOPE_GLOBAL",
19833                    Self::Cpu => "SCOPE_CPU",
19834                }
19835            }
19836            /// Creates an enum from field names used in the ProtoBuf definition.
19837            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19838                match value {
19839                    "SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
19840                    "SCOPE_GLOBAL" => Some(Self::Global),
19841                    "SCOPE_CPU" => Some(Self::Cpu),
19842                    _ => None,
19843                }
19844            }
19845        }
19846        /// The unit weights are expressed in. Set the well-known `unit` when one
19847        /// fits, otherwise set `unit_str` to a custom label.
19848        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19849        pub enum UnitField {
19850            /// A well-known unit from the Unit enum.
19851            #[prost(enumeration = "super::Unit", tag = "3")]
19852            Unit(i32),
19853            /// A custom unit label, used when no Unit enum value fits.
19854            #[prost(string, tag = "4")]
19855            UnitStr(::prost::alloc::string::String),
19856        }
19857    }
19858    /// The privilege level a sample was taken at. Append-only: never renumber or
19859    /// repurpose an existing value.
19860    #[derive(
19861        Clone,
19862        Copy,
19863        Debug,
19864        PartialEq,
19865        Eq,
19866        Hash,
19867        PartialOrd,
19868        Ord,
19869        ::prost::Enumeration
19870    )]
19871    #[repr(i32)]
19872    pub enum Mode {
19873        Unknown = 0,
19874        User = 1,
19875        Kernel = 2,
19876        Hypervisor = 3,
19877        GuestUser = 4,
19878        GuestKernel = 5,
19879    }
19880    impl Mode {
19881        /// String value of the enum field names used in the ProtoBuf definition.
19882        ///
19883        /// The values are not transformed in any way and thus are considered stable
19884        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19885        pub fn as_str_name(&self) -> &'static str {
19886            match self {
19887                Self::Unknown => "MODE_UNKNOWN",
19888                Self::User => "MODE_USER",
19889                Self::Kernel => "MODE_KERNEL",
19890                Self::Hypervisor => "MODE_HYPERVISOR",
19891                Self::GuestUser => "MODE_GUEST_USER",
19892                Self::GuestKernel => "MODE_GUEST_KERNEL",
19893            }
19894        }
19895        /// Creates an enum from field names used in the ProtoBuf definition.
19896        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19897            match value {
19898                "MODE_UNKNOWN" => Some(Self::Unknown),
19899                "MODE_USER" => Some(Self::User),
19900                "MODE_KERNEL" => Some(Self::Kernel),
19901                "MODE_HYPERVISOR" => Some(Self::Hypervisor),
19902                "MODE_GUEST_USER" => Some(Self::GuestUser),
19903                "MODE_GUEST_KERNEL" => Some(Self::GuestKernel),
19904                _ => None,
19905            }
19906        }
19907    }
19908    /// The unit a CounterDescriptor's values are expressed in. Append-only: new
19909    /// units may be added, but existing values are never renumbered or
19910    /// repurposed. If none of these fit, set CounterDescriptor.unit_str instead.
19911    #[derive(
19912        Clone,
19913        Copy,
19914        Debug,
19915        PartialEq,
19916        Eq,
19917        Hash,
19918        PartialOrd,
19919        Ord,
19920        ::prost::Enumeration
19921    )]
19922    #[repr(i32)]
19923    pub enum Unit {
19924        Unspecified = 0,
19925        Nanoseconds = 1,
19926        CpuCycles = 2,
19927        Instructions = 3,
19928        Bytes = 4,
19929        PageFaults = 5,
19930        CacheMisses = 6,
19931        CacheReferences = 7,
19932        BranchMisses = 8,
19933        Count = 9,
19934    }
19935    impl Unit {
19936        /// String value of the enum field names used in the ProtoBuf definition.
19937        ///
19938        /// The values are not transformed in any way and thus are considered stable
19939        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19940        pub fn as_str_name(&self) -> &'static str {
19941            match self {
19942                Self::Unspecified => "UNIT_UNSPECIFIED",
19943                Self::Nanoseconds => "UNIT_NANOSECONDS",
19944                Self::CpuCycles => "UNIT_CPU_CYCLES",
19945                Self::Instructions => "UNIT_INSTRUCTIONS",
19946                Self::Bytes => "UNIT_BYTES",
19947                Self::PageFaults => "UNIT_PAGE_FAULTS",
19948                Self::CacheMisses => "UNIT_CACHE_MISSES",
19949                Self::CacheReferences => "UNIT_CACHE_REFERENCES",
19950                Self::BranchMisses => "UNIT_BRANCH_MISSES",
19951                Self::Count => "UNIT_COUNT",
19952            }
19953        }
19954        /// Creates an enum from field names used in the ProtoBuf definition.
19955        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19956            match value {
19957                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
19958                "UNIT_NANOSECONDS" => Some(Self::Nanoseconds),
19959                "UNIT_CPU_CYCLES" => Some(Self::CpuCycles),
19960                "UNIT_INSTRUCTIONS" => Some(Self::Instructions),
19961                "UNIT_BYTES" => Some(Self::Bytes),
19962                "UNIT_PAGE_FAULTS" => Some(Self::PageFaults),
19963                "UNIT_CACHE_MISSES" => Some(Self::CacheMisses),
19964                "UNIT_CACHE_REFERENCES" => Some(Self::CacheReferences),
19965                "UNIT_BRANCH_MISSES" => Some(Self::BranchMisses),
19966                "UNIT_COUNT" => Some(Self::Count),
19967                _ => None,
19968            }
19969        }
19970    }
19971    /// The task (thread / process / async context) this sample is attributed to.
19972    /// Give it inline via `task_context` or reference an interned TaskContext via
19973    /// `task_context_iid`.
19974    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
19975    pub enum TaskContextField {
19976        /// Inline task context.
19977        #[prost(message, tag = "1")]
19978        TaskContext(TaskContext),
19979        /// Interned task context, referencing
19980        /// InternedData.stack_sample_task_contexts.
19981        #[prost(uint64, tag = "2")]
19982        TaskContextIid(u64),
19983    }
19984    /// The execution state (cpu, privilege mode) at sample time. Absent for
19985    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
19986    /// or reference an interned ExecutionContext via `execution_context_iid`.
19987    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
19988    pub enum ExecutionContextField {
19989        /// Inline execution context.
19990        #[prost(message, tag = "3")]
19991        ExecutionContext(ExecutionContext),
19992        /// Interned execution context, referencing
19993        /// InternedData.stack_sample_execution_contexts.
19994        #[prost(uint64, tag = "4")]
19995        ExecutionContextIid(u64),
19996    }
19997    /// The captured callstack, bottom frame first. Give it fully inline via
19998    /// `callstack` or reference an interned Callstack via `callstack_iid`.
19999    #[derive(Clone, PartialEq, ::prost::Oneof)]
20000    pub enum CallstackField {
20001        /// Fully-inline callstack: each frame carries its function name and source
20002        /// location directly, no interning. Simple but larger; prefer
20003        /// `callstack_iid` when callstacks repeat or frames need binary/library
20004        /// information (mappings, build ids, relative pcs).
20005        #[prost(message, tag = "5")]
20006        Callstack(super::InlineCallstack),
20007        /// Interned callstack, referencing InternedData.callstacks.
20008        #[prost(uint64, tag = "6")]
20009        CallstackIid(u64),
20010    }
20011    /// Set if stack unwinding was incomplete; describes the data, not producer
20012    /// internal state. Give it inline via `unwind_error` or reference an interned
20013    /// string via `unwind_error_iid`.
20014    ///
20015    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
20016    /// wire layout; a table column will surface it later.
20017    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20018    pub enum UnwindErrorField {
20019        /// Inline unwind error string.
20020        #[prost(string, tag = "7")]
20021        UnwindError(::prost::alloc::string::String),
20022        /// Interned unwind error string, referencing an InternedData string entry.
20023        #[prost(uint64, tag = "8")]
20024        UnwindErrorIid(u64),
20025    }
20026    /// The sampling timebase: the counter this sample's weight is measured
20027    /// against. Set one of the two; may be omitted entirely if declared in
20028    /// StackSampleDefaults.primary_descriptor.
20029    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20030    pub enum PrimaryDescriptorField {
20031        /// Inline timebase descriptor.
20032        #[prost(message, tag = "9")]
20033        PrimaryDescriptor(CounterDescriptor),
20034        /// Interned timebase descriptor, referencing
20035        /// InternedData.stack_sample_counter_descriptors.
20036        #[prost(uint64, tag = "10")]
20037        PrimaryDescriptorIid(u64),
20038    }
20039}
20040/// Per-sequence defaults for StackSample. Lets a producer declare the source and
20041/// the common timebase / followers once instead of on every sample.
20042#[derive(Clone, PartialEq, ::prost::Message)]
20043pub struct StackSampleDefaults {
20044    /// Identifies the profiler that produced these samples, e.g. "linux.perf",
20045    /// "python.wall". Recorded once per sampling stream.
20046    #[prost(string, optional, tag = "1")]
20047    pub source: ::core::option::Option<::prost::alloc::string::String>,
20048    /// Default primary timebase for samples that omit their own.
20049    #[prost(message, optional, tag = "2")]
20050    pub primary_descriptor: ::core::option::Option<stack_sample::CounterDescriptor>,
20051    /// Default follower counters, positional with StackSample.follower_weights.
20052    #[prost(message, repeated, tag = "3")]
20053    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
20054}
20055#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20056pub struct HistogramName {
20057    #[prost(uint64, optional, tag = "1")]
20058    pub iid: ::core::option::Option<u64>,
20059    #[prost(string, optional, tag = "2")]
20060    pub name: ::core::option::Option<::prost::alloc::string::String>,
20061}
20062/// An individual histogram sample logged via Chrome's UMA metrics system.
20063#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20064pub struct ChromeHistogramSample {
20065    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
20066    /// both must be present.
20067    #[prost(uint64, optional, tag = "1")]
20068    pub name_hash: ::core::option::Option<u64>,
20069    #[prost(string, optional, tag = "2")]
20070    pub name: ::core::option::Option<::prost::alloc::string::String>,
20071    #[prost(int64, optional, tag = "3")]
20072    pub sample: ::core::option::Option<i64>,
20073    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
20074    #[prost(uint64, optional, tag = "4")]
20075    pub name_iid: ::core::option::Option<u64>,
20076}
20077/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
20078/// macros. Users of the Perfetto SDK should prefer to use the
20079/// perfetto::TracedValue API to fill these protos, rather than filling them
20080/// manually.
20081///
20082/// Debug annotations are intended for debug use and are not considered a stable
20083/// API of the trace contents. Trace-based metrics that use debug annotation
20084/// values are prone to breakage, so please rely on typed TrackEvent fields for
20085/// these instead.
20086///
20087/// DebugAnnotations support nested arrays and dictionaries. Each entry is
20088/// encoded as a single DebugAnnotation message. Only dictionary entries
20089/// set the "name" field. The TrackEvent message forms an implicit root
20090/// dictionary.
20091///
20092/// Example TrackEvent with nested annotations:
20093///    track_event {
20094///      debug_annotations {
20095///        name: "foo"
20096///        dict_entries {
20097///          name: "a"
20098///          bool_value: true
20099///        }
20100///        dict_entries {
20101///          name: "b"
20102///          int_value: 123
20103///        }
20104///      }
20105///      debug_annotations {
20106///        name: "bar"
20107///        array_values {
20108///          string_value: "hello"
20109///        }
20110///        array_values {
20111///          string_value: "world"
20112///        }
20113///      }
20114///    }
20115///
20116/// Next ID: 18.
20117/// Reserved ID: 15
20118#[derive(Clone, PartialEq, ::prost::Message)]
20119pub struct DebugAnnotation {
20120    #[prost(bytes = "vec", optional, tag = "14")]
20121    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20122    #[prost(message, repeated, tag = "11")]
20123    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
20124    #[prost(message, repeated, tag = "12")]
20125    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
20126    /// Name fields are set only for dictionary entries.
20127    #[prost(oneof = "debug_annotation::NameField", tags = "1, 10")]
20128    pub name_field: ::core::option::Option<debug_annotation::NameField>,
20129    #[prost(oneof = "debug_annotation::Value", tags = "2, 3, 4, 5, 7, 8, 9, 6, 17")]
20130    pub value: ::core::option::Option<debug_annotation::Value>,
20131    /// Used to embed arbitrary proto messages (which are also typically used to
20132    /// represent typed TrackEvent arguments). |proto_type_name| or
20133    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20134    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20135    /// proto messages. See |TracedValue::WriteProto| for more details.
20136    #[prost(oneof = "debug_annotation::ProtoTypeDescriptor", tags = "16, 13")]
20137    pub proto_type_descriptor: ::core::option::Option<
20138        debug_annotation::ProtoTypeDescriptor,
20139    >,
20140}
20141/// Nested message and enum types in `DebugAnnotation`.
20142pub mod debug_annotation {
20143    /// Deprecated legacy way to use nested values. Only kept for
20144    /// backwards-compatibility in TraceProcessor. May be removed in the future -
20145    /// code filling protos should use |dict_entries| and |array_values| instead.
20146    #[derive(Clone, PartialEq, ::prost::Message)]
20147    pub struct NestedValue {
20148        #[prost(enumeration = "nested_value::NestedType", optional, tag = "1")]
20149        pub nested_type: ::core::option::Option<i32>,
20150        #[prost(string, repeated, tag = "2")]
20151        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20152        #[prost(message, repeated, tag = "3")]
20153        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
20154        #[prost(message, repeated, tag = "4")]
20155        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
20156        #[prost(int64, optional, tag = "5")]
20157        pub int_value: ::core::option::Option<i64>,
20158        #[prost(double, optional, tag = "6")]
20159        pub double_value: ::core::option::Option<f64>,
20160        #[prost(bool, optional, tag = "7")]
20161        pub bool_value: ::core::option::Option<bool>,
20162        #[prost(string, optional, tag = "8")]
20163        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
20164    }
20165    /// Nested message and enum types in `NestedValue`.
20166    pub mod nested_value {
20167        #[derive(
20168            Clone,
20169            Copy,
20170            Debug,
20171            PartialEq,
20172            Eq,
20173            Hash,
20174            PartialOrd,
20175            Ord,
20176            ::prost::Enumeration
20177        )]
20178        #[repr(i32)]
20179        pub enum NestedType {
20180            /// leaf value.
20181            Unspecified = 0,
20182            Dict = 1,
20183            Array = 2,
20184        }
20185        impl NestedType {
20186            /// String value of the enum field names used in the ProtoBuf definition.
20187            ///
20188            /// The values are not transformed in any way and thus are considered stable
20189            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20190            pub fn as_str_name(&self) -> &'static str {
20191                match self {
20192                    Self::Unspecified => "UNSPECIFIED",
20193                    Self::Dict => "DICT",
20194                    Self::Array => "ARRAY",
20195                }
20196            }
20197            /// Creates an enum from field names used in the ProtoBuf definition.
20198            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20199                match value {
20200                    "UNSPECIFIED" => Some(Self::Unspecified),
20201                    "DICT" => Some(Self::Dict),
20202                    "ARRAY" => Some(Self::Array),
20203                    _ => None,
20204                }
20205            }
20206        }
20207    }
20208    /// Name fields are set only for dictionary entries.
20209    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20210    pub enum NameField {
20211        /// interned DebugAnnotationName.
20212        #[prost(uint64, tag = "1")]
20213        NameIid(u64),
20214        /// non-interned variant.
20215        #[prost(string, tag = "10")]
20216        Name(::prost::alloc::string::String),
20217    }
20218    #[derive(Clone, PartialEq, ::prost::Oneof)]
20219    pub enum Value {
20220        #[prost(bool, tag = "2")]
20221        BoolValue(bool),
20222        #[prost(uint64, tag = "3")]
20223        UintValue(u64),
20224        #[prost(int64, tag = "4")]
20225        IntValue(i64),
20226        #[prost(double, tag = "5")]
20227        DoubleValue(f64),
20228        /// Pointers are stored in a separate type as the JSON output treats them
20229        /// differently from other uint64 values.
20230        #[prost(uint64, tag = "7")]
20231        PointerValue(u64),
20232        /// Deprecated. Use dict_entries / array_values instead.
20233        #[prost(message, tag = "8")]
20234        NestedValue(NestedValue),
20235        /// Legacy instrumentation may not support conversion of nested data to
20236        /// NestedValue yet.
20237        #[prost(string, tag = "9")]
20238        LegacyJsonValue(::prost::alloc::string::String),
20239        /// interned and non-interned variants of strings.
20240        #[prost(string, tag = "6")]
20241        StringValue(::prost::alloc::string::String),
20242        /// Corresponds to |debug_annotation_string_values| field in InternedData.
20243        #[prost(uint64, tag = "17")]
20244        StringValueIid(u64),
20245    }
20246    /// Used to embed arbitrary proto messages (which are also typically used to
20247    /// represent typed TrackEvent arguments). |proto_type_name| or
20248    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20249    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20250    /// proto messages. See |TracedValue::WriteProto| for more details.
20251    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20252    pub enum ProtoTypeDescriptor {
20253        #[prost(string, tag = "16")]
20254        ProtoTypeName(::prost::alloc::string::String),
20255        /// interned DebugAnnotationValueTypeName.
20256        #[prost(uint64, tag = "13")]
20257        ProtoTypeNameIid(u64),
20258    }
20259}
20260#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20261pub struct DebugAnnotationName {
20262    #[prost(uint64, optional, tag = "1")]
20263    pub iid: ::core::option::Option<u64>,
20264    #[prost(string, optional, tag = "2")]
20265    pub name: ::core::option::Option<::prost::alloc::string::String>,
20266}
20267/// See the |proto_type_descriptor| comment.
20268#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20269pub struct DebugAnnotationValueTypeName {
20270    #[prost(uint64, optional, tag = "1")]
20271    pub iid: ::core::option::Option<u64>,
20272    #[prost(string, optional, tag = "2")]
20273    pub name: ::core::option::Option<::prost::alloc::string::String>,
20274}
20275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20276pub struct LogMessage {
20277    /// interned SourceLocation.
20278    #[prost(uint64, optional, tag = "1")]
20279    pub source_location_iid: ::core::option::Option<u64>,
20280    /// interned LogMessageBody.
20281    #[prost(uint64, optional, tag = "2")]
20282    pub body_iid: ::core::option::Option<u64>,
20283    #[prost(enumeration = "log_message::Priority", optional, tag = "3")]
20284    pub prio: ::core::option::Option<i32>,
20285}
20286/// Nested message and enum types in `LogMessage`.
20287pub mod log_message {
20288    #[derive(
20289        Clone,
20290        Copy,
20291        Debug,
20292        PartialEq,
20293        Eq,
20294        Hash,
20295        PartialOrd,
20296        Ord,
20297        ::prost::Enumeration
20298    )]
20299    #[repr(i32)]
20300    pub enum Priority {
20301        PrioUnspecified = 0,
20302        PrioUnused = 1,
20303        PrioVerbose = 2,
20304        PrioDebug = 3,
20305        PrioInfo = 4,
20306        PrioWarn = 5,
20307        PrioError = 6,
20308        PrioFatal = 7,
20309    }
20310    impl Priority {
20311        /// String value of the enum field names used in the ProtoBuf definition.
20312        ///
20313        /// The values are not transformed in any way and thus are considered stable
20314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20315        pub fn as_str_name(&self) -> &'static str {
20316            match self {
20317                Self::PrioUnspecified => "PRIO_UNSPECIFIED",
20318                Self::PrioUnused => "PRIO_UNUSED",
20319                Self::PrioVerbose => "PRIO_VERBOSE",
20320                Self::PrioDebug => "PRIO_DEBUG",
20321                Self::PrioInfo => "PRIO_INFO",
20322                Self::PrioWarn => "PRIO_WARN",
20323                Self::PrioError => "PRIO_ERROR",
20324                Self::PrioFatal => "PRIO_FATAL",
20325            }
20326        }
20327        /// Creates an enum from field names used in the ProtoBuf definition.
20328        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20329            match value {
20330                "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
20331                "PRIO_UNUSED" => Some(Self::PrioUnused),
20332                "PRIO_VERBOSE" => Some(Self::PrioVerbose),
20333                "PRIO_DEBUG" => Some(Self::PrioDebug),
20334                "PRIO_INFO" => Some(Self::PrioInfo),
20335                "PRIO_WARN" => Some(Self::PrioWarn),
20336                "PRIO_ERROR" => Some(Self::PrioError),
20337                "PRIO_FATAL" => Some(Self::PrioFatal),
20338                _ => None,
20339            }
20340        }
20341    }
20342}
20343#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20344pub struct LogMessageBody {
20345    #[prost(uint64, optional, tag = "1")]
20346    pub iid: ::core::option::Option<u64>,
20347    #[prost(string, optional, tag = "2")]
20348    pub body: ::core::option::Option<::prost::alloc::string::String>,
20349}
20350/// A source location, represented as a native symbol.
20351/// This is similar to `message Frame` from
20352/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
20353/// source code locations (for example in track event args), not stack frames.
20354#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20355pub struct UnsymbolizedSourceLocation {
20356    #[prost(uint64, optional, tag = "1")]
20357    pub iid: ::core::option::Option<u64>,
20358    #[prost(uint64, optional, tag = "2")]
20359    pub mapping_id: ::core::option::Option<u64>,
20360    #[prost(uint64, optional, tag = "3")]
20361    pub rel_pc: ::core::option::Option<u64>,
20362}
20363#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20364pub struct SourceLocation {
20365    #[prost(uint64, optional, tag = "1")]
20366    pub iid: ::core::option::Option<u64>,
20367    #[prost(string, optional, tag = "2")]
20368    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20369    #[prost(string, optional, tag = "3")]
20370    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20371    #[prost(uint32, optional, tag = "4")]
20372    pub line_number: ::core::option::Option<u32>,
20373}
20374/// A list of processes connected to the tracing service.
20375#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20376pub struct ChromeActiveProcesses {
20377    #[prost(int32, repeated, packed = "false", tag = "1")]
20378    pub pid: ::prost::alloc::vec::Vec<i32>,
20379}
20380/// Trace event arguments for application state changes.
20381#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20382pub struct ChromeApplicationStateInfo {
20383    #[prost(
20384        enumeration = "chrome_application_state_info::ChromeApplicationState",
20385        optional,
20386        tag = "1"
20387    )]
20388    pub application_state: ::core::option::Option<i32>,
20389}
20390/// Nested message and enum types in `ChromeApplicationStateInfo`.
20391pub mod chrome_application_state_info {
20392    /// Enum definition taken from:
20393    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
20394    #[derive(
20395        Clone,
20396        Copy,
20397        Debug,
20398        PartialEq,
20399        Eq,
20400        Hash,
20401        PartialOrd,
20402        Ord,
20403        ::prost::Enumeration
20404    )]
20405    #[repr(i32)]
20406    pub enum ChromeApplicationState {
20407        ApplicationStateUnknown = 0,
20408        ApplicationStateHasRunningActivities = 1,
20409        ApplicationStateHasPausedActivities = 2,
20410        ApplicationStateHasStoppedActivities = 3,
20411        ApplicationStateHasDestroyedActivities = 4,
20412    }
20413    impl ChromeApplicationState {
20414        /// String value of the enum field names used in the ProtoBuf definition.
20415        ///
20416        /// The values are not transformed in any way and thus are considered stable
20417        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20418        pub fn as_str_name(&self) -> &'static str {
20419            match self {
20420                Self::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
20421                Self::ApplicationStateHasRunningActivities => {
20422                    "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES"
20423                }
20424                Self::ApplicationStateHasPausedActivities => {
20425                    "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES"
20426                }
20427                Self::ApplicationStateHasStoppedActivities => {
20428                    "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES"
20429                }
20430                Self::ApplicationStateHasDestroyedActivities => {
20431                    "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES"
20432                }
20433            }
20434        }
20435        /// Creates an enum from field names used in the ProtoBuf definition.
20436        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20437            match value {
20438                "APPLICATION_STATE_UNKNOWN" => Some(Self::ApplicationStateUnknown),
20439                "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES" => {
20440                    Some(Self::ApplicationStateHasRunningActivities)
20441                }
20442                "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES" => {
20443                    Some(Self::ApplicationStateHasPausedActivities)
20444                }
20445                "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES" => {
20446                    Some(Self::ApplicationStateHasStoppedActivities)
20447                }
20448                "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES" => {
20449                    Some(Self::ApplicationStateHasDestroyedActivities)
20450                }
20451                _ => None,
20452            }
20453        }
20454    }
20455}
20456/// Next id: 18
20457#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20458pub struct ChromeCompositorSchedulerState {
20459    #[prost(message, optional, tag = "1")]
20460    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
20461    #[prost(bool, optional, tag = "2")]
20462    pub observing_begin_frame_source: ::core::option::Option<bool>,
20463    #[prost(bool, optional, tag = "3")]
20464    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
20465    #[prost(bool, optional, tag = "4")]
20466    pub pending_begin_frame_task: ::core::option::Option<bool>,
20467    #[prost(bool, optional, tag = "5")]
20468    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
20469    #[prost(enumeration = "ChromeCompositorSchedulerAction", optional, tag = "7")]
20470    pub inside_action: ::core::option::Option<i32>,
20471    #[prost(
20472        enumeration = "chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode",
20473        optional,
20474        tag = "8"
20475    )]
20476    pub deadline_mode: ::core::option::Option<i32>,
20477    #[prost(int64, optional, tag = "9")]
20478    pub deadline_us: ::core::option::Option<i64>,
20479    #[prost(int64, optional, tag = "10")]
20480    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
20481    #[prost(int64, optional, tag = "11")]
20482    pub now_us: ::core::option::Option<i64>,
20483    #[prost(int64, optional, tag = "12")]
20484    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
20485    #[prost(int64, optional, tag = "13")]
20486    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
20487    #[prost(message, optional, tag = "14")]
20488    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
20489    #[prost(message, optional, tag = "15")]
20490    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
20491    #[prost(message, optional, tag = "16")]
20492    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
20493    #[prost(message, optional, tag = "17")]
20494    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
20495}
20496/// Nested message and enum types in `ChromeCompositorSchedulerState`.
20497pub mod chrome_compositor_scheduler_state {
20498    #[derive(
20499        Clone,
20500        Copy,
20501        Debug,
20502        PartialEq,
20503        Eq,
20504        Hash,
20505        PartialOrd,
20506        Ord,
20507        ::prost::Enumeration
20508    )]
20509    #[repr(i32)]
20510    pub enum BeginImplFrameDeadlineMode {
20511        DeadlineModeUnspecified = 0,
20512        DeadlineModeNone = 1,
20513        DeadlineModeImmediate = 2,
20514        DeadlineModeRegular = 3,
20515        DeadlineModeLate = 4,
20516        DeadlineModeBlocked = 5,
20517    }
20518    impl BeginImplFrameDeadlineMode {
20519        /// String value of the enum field names used in the ProtoBuf definition.
20520        ///
20521        /// The values are not transformed in any way and thus are considered stable
20522        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20523        pub fn as_str_name(&self) -> &'static str {
20524            match self {
20525                Self::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
20526                Self::DeadlineModeNone => "DEADLINE_MODE_NONE",
20527                Self::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
20528                Self::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
20529                Self::DeadlineModeLate => "DEADLINE_MODE_LATE",
20530                Self::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
20531            }
20532        }
20533        /// Creates an enum from field names used in the ProtoBuf definition.
20534        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20535            match value {
20536                "DEADLINE_MODE_UNSPECIFIED" => Some(Self::DeadlineModeUnspecified),
20537                "DEADLINE_MODE_NONE" => Some(Self::DeadlineModeNone),
20538                "DEADLINE_MODE_IMMEDIATE" => Some(Self::DeadlineModeImmediate),
20539                "DEADLINE_MODE_REGULAR" => Some(Self::DeadlineModeRegular),
20540                "DEADLINE_MODE_LATE" => Some(Self::DeadlineModeLate),
20541                "DEADLINE_MODE_BLOCKED" => Some(Self::DeadlineModeBlocked),
20542                _ => None,
20543            }
20544        }
20545    }
20546}
20547/// Describes the current values stored in the Chrome Compositor state machine.
20548/// Next id: 3
20549#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20550pub struct ChromeCompositorStateMachine {
20551    #[prost(message, optional, tag = "1")]
20552    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
20553    #[prost(message, optional, tag = "2")]
20554    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
20555}
20556/// Nested message and enum types in `ChromeCompositorStateMachine`.
20557pub mod chrome_compositor_state_machine {
20558    /// Next id: 6
20559    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20560    pub struct MajorState {
20561        #[prost(
20562            enumeration = "super::ChromeCompositorSchedulerAction",
20563            optional,
20564            tag = "1"
20565        )]
20566        pub next_action: ::core::option::Option<i32>,
20567        #[prost(enumeration = "major_state::BeginImplFrameState", optional, tag = "2")]
20568        pub begin_impl_frame_state: ::core::option::Option<i32>,
20569        #[prost(enumeration = "major_state::BeginMainFrameState", optional, tag = "3")]
20570        pub begin_main_frame_state: ::core::option::Option<i32>,
20571        #[prost(
20572            enumeration = "major_state::LayerTreeFrameSinkState",
20573            optional,
20574            tag = "4"
20575        )]
20576        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
20577        #[prost(
20578            enumeration = "major_state::ForcedRedrawOnTimeoutState",
20579            optional,
20580            tag = "5"
20581        )]
20582        pub forced_redraw_state: ::core::option::Option<i32>,
20583    }
20584    /// Nested message and enum types in `MajorState`.
20585    pub mod major_state {
20586        #[derive(
20587            Clone,
20588            Copy,
20589            Debug,
20590            PartialEq,
20591            Eq,
20592            Hash,
20593            PartialOrd,
20594            Ord,
20595            ::prost::Enumeration
20596        )]
20597        #[repr(i32)]
20598        pub enum BeginImplFrameState {
20599            BeginImplFrameUnspecified = 0,
20600            BeginImplFrameIdle = 1,
20601            BeginImplFrameInsideBeginFrame = 2,
20602            BeginImplFrameInsideDeadline = 3,
20603        }
20604        impl BeginImplFrameState {
20605            /// String value of the enum field names used in the ProtoBuf definition.
20606            ///
20607            /// The values are not transformed in any way and thus are considered stable
20608            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20609            pub fn as_str_name(&self) -> &'static str {
20610                match self {
20611                    Self::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
20612                    Self::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
20613                    Self::BeginImplFrameInsideBeginFrame => {
20614                        "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME"
20615                    }
20616                    Self::BeginImplFrameInsideDeadline => {
20617                        "BEGIN_IMPL_FRAME_INSIDE_DEADLINE"
20618                    }
20619                }
20620            }
20621            /// Creates an enum from field names used in the ProtoBuf definition.
20622            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20623                match value {
20624                    "BEGIN_IMPL_FRAME_UNSPECIFIED" => {
20625                        Some(Self::BeginImplFrameUnspecified)
20626                    }
20627                    "BEGIN_IMPL_FRAME_IDLE" => Some(Self::BeginImplFrameIdle),
20628                    "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME" => {
20629                        Some(Self::BeginImplFrameInsideBeginFrame)
20630                    }
20631                    "BEGIN_IMPL_FRAME_INSIDE_DEADLINE" => {
20632                        Some(Self::BeginImplFrameInsideDeadline)
20633                    }
20634                    _ => None,
20635                }
20636            }
20637        }
20638        #[derive(
20639            Clone,
20640            Copy,
20641            Debug,
20642            PartialEq,
20643            Eq,
20644            Hash,
20645            PartialOrd,
20646            Ord,
20647            ::prost::Enumeration
20648        )]
20649        #[repr(i32)]
20650        pub enum BeginMainFrameState {
20651            BeginMainFrameUnspecified = 0,
20652            BeginMainFrameIdle = 1,
20653            BeginMainFrameSent = 2,
20654            BeginMainFrameReadyToCommit = 3,
20655        }
20656        impl BeginMainFrameState {
20657            /// String value of the enum field names used in the ProtoBuf definition.
20658            ///
20659            /// The values are not transformed in any way and thus are considered stable
20660            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20661            pub fn as_str_name(&self) -> &'static str {
20662                match self {
20663                    Self::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
20664                    Self::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
20665                    Self::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
20666                    Self::BeginMainFrameReadyToCommit => {
20667                        "BEGIN_MAIN_FRAME_READY_TO_COMMIT"
20668                    }
20669                }
20670            }
20671            /// Creates an enum from field names used in the ProtoBuf definition.
20672            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20673                match value {
20674                    "BEGIN_MAIN_FRAME_UNSPECIFIED" => {
20675                        Some(Self::BeginMainFrameUnspecified)
20676                    }
20677                    "BEGIN_MAIN_FRAME_IDLE" => Some(Self::BeginMainFrameIdle),
20678                    "BEGIN_MAIN_FRAME_SENT" => Some(Self::BeginMainFrameSent),
20679                    "BEGIN_MAIN_FRAME_READY_TO_COMMIT" => {
20680                        Some(Self::BeginMainFrameReadyToCommit)
20681                    }
20682                    _ => None,
20683                }
20684            }
20685        }
20686        #[derive(
20687            Clone,
20688            Copy,
20689            Debug,
20690            PartialEq,
20691            Eq,
20692            Hash,
20693            PartialOrd,
20694            Ord,
20695            ::prost::Enumeration
20696        )]
20697        #[repr(i32)]
20698        pub enum LayerTreeFrameSinkState {
20699            LayerTreeFrameUnspecified = 0,
20700            LayerTreeFrameNone = 1,
20701            LayerTreeFrameActive = 2,
20702            LayerTreeFrameCreating = 3,
20703            LayerTreeFrameWaitingForFirstCommit = 4,
20704            LayerTreeFrameWaitingForFirstActivation = 5,
20705        }
20706        impl LayerTreeFrameSinkState {
20707            /// String value of the enum field names used in the ProtoBuf definition.
20708            ///
20709            /// The values are not transformed in any way and thus are considered stable
20710            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20711            pub fn as_str_name(&self) -> &'static str {
20712                match self {
20713                    Self::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
20714                    Self::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
20715                    Self::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
20716                    Self::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
20717                    Self::LayerTreeFrameWaitingForFirstCommit => {
20718                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT"
20719                    }
20720                    Self::LayerTreeFrameWaitingForFirstActivation => {
20721                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION"
20722                    }
20723                }
20724            }
20725            /// Creates an enum from field names used in the ProtoBuf definition.
20726            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20727                match value {
20728                    "LAYER_TREE_FRAME_UNSPECIFIED" => {
20729                        Some(Self::LayerTreeFrameUnspecified)
20730                    }
20731                    "LAYER_TREE_FRAME_NONE" => Some(Self::LayerTreeFrameNone),
20732                    "LAYER_TREE_FRAME_ACTIVE" => Some(Self::LayerTreeFrameActive),
20733                    "LAYER_TREE_FRAME_CREATING" => Some(Self::LayerTreeFrameCreating),
20734                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT" => {
20735                        Some(Self::LayerTreeFrameWaitingForFirstCommit)
20736                    }
20737                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION" => {
20738                        Some(Self::LayerTreeFrameWaitingForFirstActivation)
20739                    }
20740                    _ => None,
20741                }
20742            }
20743        }
20744        #[derive(
20745            Clone,
20746            Copy,
20747            Debug,
20748            PartialEq,
20749            Eq,
20750            Hash,
20751            PartialOrd,
20752            Ord,
20753            ::prost::Enumeration
20754        )]
20755        #[repr(i32)]
20756        pub enum ForcedRedrawOnTimeoutState {
20757            ForcedRedrawUnspecified = 0,
20758            ForcedRedrawIdle = 1,
20759            ForcedRedrawWaitingForCommit = 2,
20760            ForcedRedrawWaitingForActivation = 3,
20761            ForcedRedrawWaitingForDraw = 4,
20762        }
20763        impl ForcedRedrawOnTimeoutState {
20764            /// String value of the enum field names used in the ProtoBuf definition.
20765            ///
20766            /// The values are not transformed in any way and thus are considered stable
20767            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20768            pub fn as_str_name(&self) -> &'static str {
20769                match self {
20770                    Self::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
20771                    Self::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
20772                    Self::ForcedRedrawWaitingForCommit => {
20773                        "FORCED_REDRAW_WAITING_FOR_COMMIT"
20774                    }
20775                    Self::ForcedRedrawWaitingForActivation => {
20776                        "FORCED_REDRAW_WAITING_FOR_ACTIVATION"
20777                    }
20778                    Self::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
20779                }
20780            }
20781            /// Creates an enum from field names used in the ProtoBuf definition.
20782            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20783                match value {
20784                    "FORCED_REDRAW_UNSPECIFIED" => Some(Self::ForcedRedrawUnspecified),
20785                    "FORCED_REDRAW_IDLE" => Some(Self::ForcedRedrawIdle),
20786                    "FORCED_REDRAW_WAITING_FOR_COMMIT" => {
20787                        Some(Self::ForcedRedrawWaitingForCommit)
20788                    }
20789                    "FORCED_REDRAW_WAITING_FOR_ACTIVATION" => {
20790                        Some(Self::ForcedRedrawWaitingForActivation)
20791                    }
20792                    "FORCED_REDRAW_WAITING_FOR_DRAW" => {
20793                        Some(Self::ForcedRedrawWaitingForDraw)
20794                    }
20795                    _ => None,
20796                }
20797            }
20798        }
20799    }
20800    /// Next id: 47
20801    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20802    pub struct MinorState {
20803        #[prost(int32, optional, tag = "1")]
20804        pub commit_count: ::core::option::Option<i32>,
20805        #[prost(int32, optional, tag = "2")]
20806        pub current_frame_number: ::core::option::Option<i32>,
20807        #[prost(int32, optional, tag = "3")]
20808        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
20809        #[prost(int32, optional, tag = "4")]
20810        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
20811        #[prost(int32, optional, tag = "5")]
20812        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
20813        #[prost(bool, optional, tag = "6")]
20814        pub did_draw: ::core::option::Option<bool>,
20815        #[prost(bool, optional, tag = "7")]
20816        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
20817        #[prost(bool, optional, tag = "8")]
20818        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
20819        #[prost(bool, optional, tag = "9")]
20820        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
20821        #[prost(bool, optional, tag = "10")]
20822        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
20823        #[prost(bool, optional, tag = "11")]
20824        pub did_commit_during_frame: ::core::option::Option<bool>,
20825        #[prost(bool, optional, tag = "12")]
20826        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
20827        #[prost(bool, optional, tag = "13")]
20828        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
20829        #[prost(bool, optional, tag = "14")]
20830        pub did_prepare_tiles: ::core::option::Option<bool>,
20831        #[prost(int32, optional, tag = "15")]
20832        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
20833        #[prost(int32, optional, tag = "16")]
20834        pub pending_submit_frames: ::core::option::Option<i32>,
20835        #[prost(int32, optional, tag = "17")]
20836        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<
20837            i32,
20838        >,
20839        #[prost(bool, optional, tag = "18")]
20840        pub needs_redraw: ::core::option::Option<bool>,
20841        #[prost(bool, optional, tag = "19")]
20842        pub needs_prepare_tiles: ::core::option::Option<bool>,
20843        #[prost(bool, optional, tag = "20")]
20844        pub needs_begin_main_frame: ::core::option::Option<bool>,
20845        #[prost(bool, optional, tag = "21")]
20846        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
20847        #[prost(bool, optional, tag = "22")]
20848        pub visible: ::core::option::Option<bool>,
20849        #[prost(bool, optional, tag = "23")]
20850        pub begin_frame_source_paused: ::core::option::Option<bool>,
20851        #[prost(bool, optional, tag = "24")]
20852        pub can_draw: ::core::option::Option<bool>,
20853        #[prost(bool, optional, tag = "25")]
20854        pub resourceless_draw: ::core::option::Option<bool>,
20855        #[prost(bool, optional, tag = "26")]
20856        pub has_pending_tree: ::core::option::Option<bool>,
20857        #[prost(bool, optional, tag = "27")]
20858        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
20859        #[prost(bool, optional, tag = "28")]
20860        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
20861        #[prost(bool, optional, tag = "29")]
20862        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
20863        #[prost(bool, optional, tag = "30")]
20864        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<
20865            bool,
20866        >,
20867        #[prost(enumeration = "minor_state::TreePriority", optional, tag = "31")]
20868        pub tree_priority: ::core::option::Option<i32>,
20869        #[prost(enumeration = "minor_state::ScrollHandlerState", optional, tag = "32")]
20870        pub scroll_handler_state: ::core::option::Option<i32>,
20871        #[prost(bool, optional, tag = "33")]
20872        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
20873        #[prost(bool, optional, tag = "34")]
20874        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
20875        #[prost(bool, optional, tag = "36")]
20876        pub video_needs_begin_frames: ::core::option::Option<bool>,
20877        #[prost(bool, optional, tag = "37")]
20878        pub defer_begin_main_frame: ::core::option::Option<bool>,
20879        #[prost(bool, optional, tag = "38")]
20880        pub last_commit_had_no_updates: ::core::option::Option<bool>,
20881        #[prost(bool, optional, tag = "39")]
20882        pub did_draw_in_last_frame: ::core::option::Option<bool>,
20883        #[prost(bool, optional, tag = "40")]
20884        pub did_submit_in_last_frame: ::core::option::Option<bool>,
20885        #[prost(bool, optional, tag = "41")]
20886        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
20887        #[prost(bool, optional, tag = "42")]
20888        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
20889        #[prost(bool, optional, tag = "43")]
20890        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
20891        #[prost(bool, optional, tag = "44")]
20892        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
20893        #[prost(bool, optional, tag = "45")]
20894        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
20895        #[prost(bool, optional, tag = "46")]
20896        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
20897    }
20898    /// Nested message and enum types in `MinorState`.
20899    pub mod minor_state {
20900        #[derive(
20901            Clone,
20902            Copy,
20903            Debug,
20904            PartialEq,
20905            Eq,
20906            Hash,
20907            PartialOrd,
20908            Ord,
20909            ::prost::Enumeration
20910        )]
20911        #[repr(i32)]
20912        pub enum TreePriority {
20913            Unspecified = 0,
20914            SamePriorityForBothTrees = 1,
20915            SmoothnessTakesPriority = 2,
20916            NewContentTakesPriority = 3,
20917        }
20918        impl TreePriority {
20919            /// String value of the enum field names used in the ProtoBuf definition.
20920            ///
20921            /// The values are not transformed in any way and thus are considered stable
20922            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20923            pub fn as_str_name(&self) -> &'static str {
20924                match self {
20925                    Self::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
20926                    Self::SamePriorityForBothTrees => {
20927                        "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES"
20928                    }
20929                    Self::SmoothnessTakesPriority => {
20930                        "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY"
20931                    }
20932                    Self::NewContentTakesPriority => {
20933                        "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY"
20934                    }
20935                }
20936            }
20937            /// Creates an enum from field names used in the ProtoBuf definition.
20938            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20939                match value {
20940                    "TREE_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
20941                    "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES" => {
20942                        Some(Self::SamePriorityForBothTrees)
20943                    }
20944                    "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY" => {
20945                        Some(Self::SmoothnessTakesPriority)
20946                    }
20947                    "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY" => {
20948                        Some(Self::NewContentTakesPriority)
20949                    }
20950                    _ => None,
20951                }
20952            }
20953        }
20954        #[derive(
20955            Clone,
20956            Copy,
20957            Debug,
20958            PartialEq,
20959            Eq,
20960            Hash,
20961            PartialOrd,
20962            Ord,
20963            ::prost::Enumeration
20964        )]
20965        #[repr(i32)]
20966        pub enum ScrollHandlerState {
20967            ScrollHandlerUnspecified = 0,
20968            ScrollAffectsScrollHandler = 1,
20969            ScrollDoesNotAffectScrollHandler = 2,
20970        }
20971        impl ScrollHandlerState {
20972            /// String value of the enum field names used in the ProtoBuf definition.
20973            ///
20974            /// The values are not transformed in any way and thus are considered stable
20975            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20976            pub fn as_str_name(&self) -> &'static str {
20977                match self {
20978                    Self::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
20979                    Self::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
20980                    Self::ScrollDoesNotAffectScrollHandler => {
20981                        "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER"
20982                    }
20983                }
20984            }
20985            /// Creates an enum from field names used in the ProtoBuf definition.
20986            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20987                match value {
20988                    "SCROLL_HANDLER_UNSPECIFIED" => Some(Self::ScrollHandlerUnspecified),
20989                    "SCROLL_AFFECTS_SCROLL_HANDLER" => {
20990                        Some(Self::ScrollAffectsScrollHandler)
20991                    }
20992                    "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER" => {
20993                        Some(Self::ScrollDoesNotAffectScrollHandler)
20994                    }
20995                    _ => None,
20996                }
20997            }
20998        }
20999    }
21000}
21001/// Next id: 13
21002#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21003pub struct BeginFrameArgs {
21004    #[prost(enumeration = "begin_frame_args::BeginFrameArgsType", optional, tag = "1")]
21005    pub r#type: ::core::option::Option<i32>,
21006    #[prost(uint64, optional, tag = "2")]
21007    pub source_id: ::core::option::Option<u64>,
21008    #[prost(uint64, optional, tag = "3")]
21009    pub sequence_number: ::core::option::Option<u64>,
21010    #[prost(int64, optional, tag = "4")]
21011    pub frame_time_us: ::core::option::Option<i64>,
21012    #[prost(int64, optional, tag = "5")]
21013    pub deadline_us: ::core::option::Option<i64>,
21014    #[prost(int64, optional, tag = "6")]
21015    pub interval_delta_us: ::core::option::Option<i64>,
21016    #[prost(bool, optional, tag = "7")]
21017    pub on_critical_path: ::core::option::Option<bool>,
21018    #[prost(bool, optional, tag = "8")]
21019    pub animate_only: ::core::option::Option<bool>,
21020    #[prost(int64, optional, tag = "12")]
21021    pub frames_throttled_since_last: ::core::option::Option<i64>,
21022    #[prost(oneof = "begin_frame_args::CreatedFrom", tags = "9, 10")]
21023    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
21024}
21025/// Nested message and enum types in `BeginFrameArgs`.
21026pub mod begin_frame_args {
21027    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
21028    /// drop this in the proto representation, and instead make the JSON format
21029    /// "subtype" field become the type field.
21030    #[derive(
21031        Clone,
21032        Copy,
21033        Debug,
21034        PartialEq,
21035        Eq,
21036        Hash,
21037        PartialOrd,
21038        Ord,
21039        ::prost::Enumeration
21040    )]
21041    #[repr(i32)]
21042    pub enum BeginFrameArgsType {
21043        Unspecified = 0,
21044        Invalid = 1,
21045        Normal = 2,
21046        Missed = 3,
21047    }
21048    impl BeginFrameArgsType {
21049        /// String value of the enum field names used in the ProtoBuf definition.
21050        ///
21051        /// The values are not transformed in any way and thus are considered stable
21052        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21053        pub fn as_str_name(&self) -> &'static str {
21054            match self {
21055                Self::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
21056                Self::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
21057                Self::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
21058                Self::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
21059            }
21060        }
21061        /// Creates an enum from field names used in the ProtoBuf definition.
21062        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21063            match value {
21064                "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
21065                "BEGIN_FRAME_ARGS_TYPE_INVALID" => Some(Self::Invalid),
21066                "BEGIN_FRAME_ARGS_TYPE_NORMAL" => Some(Self::Normal),
21067                "BEGIN_FRAME_ARGS_TYPE_MISSED" => Some(Self::Missed),
21068                _ => None,
21069            }
21070        }
21071    }
21072    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21073    pub enum CreatedFrom {
21074        /// The interned SourceLocation.
21075        #[prost(uint64, tag = "9")]
21076        SourceLocationIid(u64),
21077        /// The SourceLocation that this args was created from.
21078        /// TODO(nuskos): Eventually we will support interning inside of
21079        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
21080        /// since we can emit it as part of the InternedData message. When we can
21081        /// remove this |source_location|.
21082        #[prost(message, tag = "10")]
21083        SourceLocation(super::SourceLocation),
21084    }
21085}
21086/// Next id: 7
21087#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21088pub struct BeginImplFrameArgs {
21089    #[prost(int64, optional, tag = "1")]
21090    pub updated_at_us: ::core::option::Option<i64>,
21091    #[prost(int64, optional, tag = "2")]
21092    pub finished_at_us: ::core::option::Option<i64>,
21093    #[prost(enumeration = "begin_impl_frame_args::State", optional, tag = "3")]
21094    pub state: ::core::option::Option<i32>,
21095    #[prost(message, optional, tag = "6")]
21096    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
21097    #[prost(oneof = "begin_impl_frame_args::Args", tags = "4, 5")]
21098    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
21099}
21100/// Nested message and enum types in `BeginImplFrameArgs`.
21101pub mod begin_impl_frame_args {
21102    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21103    pub struct TimestampsInUs {
21104        #[prost(int64, optional, tag = "1")]
21105        pub interval_delta: ::core::option::Option<i64>,
21106        #[prost(int64, optional, tag = "2")]
21107        pub now_to_deadline_delta: ::core::option::Option<i64>,
21108        #[prost(int64, optional, tag = "3")]
21109        pub frame_time_to_now_delta: ::core::option::Option<i64>,
21110        #[prost(int64, optional, tag = "4")]
21111        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
21112        #[prost(int64, optional, tag = "5")]
21113        pub now: ::core::option::Option<i64>,
21114        #[prost(int64, optional, tag = "6")]
21115        pub frame_time: ::core::option::Option<i64>,
21116        #[prost(int64, optional, tag = "7")]
21117        pub deadline: ::core::option::Option<i64>,
21118    }
21119    #[derive(
21120        Clone,
21121        Copy,
21122        Debug,
21123        PartialEq,
21124        Eq,
21125        Hash,
21126        PartialOrd,
21127        Ord,
21128        ::prost::Enumeration
21129    )]
21130    #[repr(i32)]
21131    pub enum State {
21132        BeginFrameFinished = 0,
21133        BeginFrameUsing = 1,
21134    }
21135    impl State {
21136        /// String value of the enum field names used in the ProtoBuf definition.
21137        ///
21138        /// The values are not transformed in any way and thus are considered stable
21139        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21140        pub fn as_str_name(&self) -> &'static str {
21141            match self {
21142                Self::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
21143                Self::BeginFrameUsing => "BEGIN_FRAME_USING",
21144            }
21145        }
21146        /// Creates an enum from field names used in the ProtoBuf definition.
21147        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21148            match value {
21149                "BEGIN_FRAME_FINISHED" => Some(Self::BeginFrameFinished),
21150                "BEGIN_FRAME_USING" => Some(Self::BeginFrameUsing),
21151                _ => None,
21152            }
21153        }
21154    }
21155    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21156    pub enum Args {
21157        /// Only set if |state| is BEGIN_FRAME_FINISHED.
21158        #[prost(message, tag = "4")]
21159        CurrentArgs(super::BeginFrameArgs),
21160        /// Only set if |state| is BEGIN_FRAME_USING.
21161        #[prost(message, tag = "5")]
21162        LastArgs(super::BeginFrameArgs),
21163    }
21164}
21165#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21166pub struct BeginFrameObserverState {
21167    #[prost(int64, optional, tag = "1")]
21168    pub dropped_begin_frame_args: ::core::option::Option<i64>,
21169    #[prost(message, optional, tag = "2")]
21170    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
21171}
21172#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21173pub struct BeginFrameSourceState {
21174    #[prost(uint32, optional, tag = "1")]
21175    pub source_id: ::core::option::Option<u32>,
21176    #[prost(bool, optional, tag = "2")]
21177    pub paused: ::core::option::Option<bool>,
21178    #[prost(uint32, optional, tag = "3")]
21179    pub num_observers: ::core::option::Option<u32>,
21180    #[prost(message, optional, tag = "4")]
21181    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
21182}
21183#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21184pub struct CompositorTimingHistory {
21185    #[prost(int64, optional, tag = "1")]
21186    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
21187    #[prost(int64, optional, tag = "2")]
21188    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<
21189        i64,
21190    >,
21191    #[prost(int64, optional, tag = "3")]
21192    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<
21193        i64,
21194    >,
21195    #[prost(int64, optional, tag = "4")]
21196    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
21197    #[prost(int64, optional, tag = "5")]
21198    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
21199    #[prost(int64, optional, tag = "6")]
21200    pub activate_estimate_delta_us: ::core::option::Option<i64>,
21201    #[prost(int64, optional, tag = "7")]
21202    pub draw_estimate_delta_us: ::core::option::Option<i64>,
21203}
21204/// Details about ContentSettings trace events.
21205#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21206pub struct ChromeContentSettingsEventInfo {
21207    /// The number of user defined hostname patterns for content settings at
21208    /// browser start. Similar to UMA histogram
21209    /// 'ContentSettings.NumberOfExceptions'.
21210    #[prost(uint32, optional, tag = "1")]
21211    pub number_of_exceptions: ::core::option::Option<u32>,
21212}
21213/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
21214/// in
21215/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
21216/// instead.
21217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21218pub struct ChromeFrameReporter {
21219    #[prost(enumeration = "chrome_frame_reporter::State", optional, tag = "1")]
21220    pub state: ::core::option::Option<i32>,
21221    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
21222    #[prost(enumeration = "chrome_frame_reporter::FrameDropReason", optional, tag = "2")]
21223    pub reason: ::core::option::Option<i32>,
21224    #[prost(uint64, optional, tag = "3")]
21225    pub frame_source: ::core::option::Option<u64>,
21226    #[prost(uint64, optional, tag = "4")]
21227    pub frame_sequence: ::core::option::Option<u64>,
21228    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
21229    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
21230    /// smoothness.
21231    #[prost(bool, optional, tag = "5")]
21232    pub affects_smoothness: ::core::option::Option<bool>,
21233    /// The type of active scroll.
21234    #[prost(enumeration = "chrome_frame_reporter::ScrollState", optional, tag = "6")]
21235    pub scroll_state: ::core::option::Option<i32>,
21236    /// If any main thread animation is active during this frame.
21237    #[prost(bool, optional, tag = "7")]
21238    pub has_main_animation: ::core::option::Option<bool>,
21239    /// If any compositor thread animation is active during this frame.
21240    #[prost(bool, optional, tag = "8")]
21241    pub has_compositor_animation: ::core::option::Option<bool>,
21242    /// If any touch-driven UX (not scroll) is active during this frame.
21243    #[prost(bool, optional, tag = "9")]
21244    pub has_smooth_input_main: ::core::option::Option<bool>,
21245    /// Whether the frame contained any missing content (i.e. whether there was
21246    /// checkerboarding in the frame).  If has_missing_content,
21247    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
21248    /// values, has_missing_content should equal checkerboarded_needs_raster ||
21249    /// checkerboarded_needs_record.
21250    #[prost(bool, optional, tag = "10")]
21251    pub has_missing_content: ::core::option::Option<bool>,
21252    /// The id of layer_tree_host that the frame has been produced for.
21253    #[prost(uint64, optional, tag = "11")]
21254    pub layer_tree_host_id: ::core::option::Option<u64>,
21255    /// If total latency of PipelineReporter exceeds a certain limit.
21256    #[prost(bool, optional, tag = "12")]
21257    pub has_high_latency: ::core::option::Option<bool>,
21258    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
21259    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
21260    /// (i.e. dropped frames when there are no partial compositor updates).
21261    #[prost(enumeration = "chrome_frame_reporter::FrameType", optional, tag = "13")]
21262    pub frame_type: ::core::option::Option<i32>,
21263    /// The breakdown stage of PipelineReporter that is most likely accountable for
21264    /// high latency.
21265    #[prost(string, repeated, tag = "14")]
21266    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<
21267        ::prost::alloc::string::String,
21268    >,
21269    /// Whether the frame contained any content that is not fully rastered.
21270    #[prost(bool, optional, tag = "15")]
21271    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
21272    /// Whether the frame contained any content that is not fully recorded.
21273    #[prost(bool, optional, tag = "16")]
21274    pub checkerboarded_needs_record: ::core::option::Option<bool>,
21275    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
21276    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
21277    #[prost(int64, optional, tag = "17")]
21278    pub surface_frame_trace_id: ::core::option::Option<i64>,
21279    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
21280    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
21281    #[prost(int64, optional, tag = "18")]
21282    pub display_trace_id: ::core::option::Option<i64>,
21283}
21284/// Nested message and enum types in `ChromeFrameReporter`.
21285pub mod chrome_frame_reporter {
21286    #[derive(
21287        Clone,
21288        Copy,
21289        Debug,
21290        PartialEq,
21291        Eq,
21292        Hash,
21293        PartialOrd,
21294        Ord,
21295        ::prost::Enumeration
21296    )]
21297    #[repr(i32)]
21298    pub enum State {
21299        /// The frame did not have any updates to present.
21300        NoUpdateDesired = 0,
21301        /// The frame presented all the desired updates (i.e. any updates requested
21302        /// from both the compositor thread and main-threads were handled).
21303        PresentedAll = 1,
21304        /// The frame was presented with some updates, but also missed some updates
21305        /// (e.g. missed updates from the main-thread, but included updates from the
21306        /// compositor thread).
21307        PresentedPartial = 2,
21308        /// The frame was dropped, i.e. some updates were desired for the frame, but
21309        /// was not presented.
21310        Dropped = 3,
21311    }
21312    impl State {
21313        /// String value of the enum field names used in the ProtoBuf definition.
21314        ///
21315        /// The values are not transformed in any way and thus are considered stable
21316        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21317        pub fn as_str_name(&self) -> &'static str {
21318            match self {
21319                Self::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
21320                Self::PresentedAll => "STATE_PRESENTED_ALL",
21321                Self::PresentedPartial => "STATE_PRESENTED_PARTIAL",
21322                Self::Dropped => "STATE_DROPPED",
21323            }
21324        }
21325        /// Creates an enum from field names used in the ProtoBuf definition.
21326        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21327            match value {
21328                "STATE_NO_UPDATE_DESIRED" => Some(Self::NoUpdateDesired),
21329                "STATE_PRESENTED_ALL" => Some(Self::PresentedAll),
21330                "STATE_PRESENTED_PARTIAL" => Some(Self::PresentedPartial),
21331                "STATE_DROPPED" => Some(Self::Dropped),
21332                _ => None,
21333            }
21334        }
21335    }
21336    #[derive(
21337        Clone,
21338        Copy,
21339        Debug,
21340        PartialEq,
21341        Eq,
21342        Hash,
21343        PartialOrd,
21344        Ord,
21345        ::prost::Enumeration
21346    )]
21347    #[repr(i32)]
21348    pub enum FrameDropReason {
21349        ReasonUnspecified = 0,
21350        /// Frame was dropped by the display-compositor.
21351        /// The display-compositor may drop a frame some times (e.g. the frame missed
21352        /// the deadline, or was blocked on surface-sync, etc.)
21353        ReasonDisplayCompositor = 1,
21354        /// Frame was dropped because of the main-thread.
21355        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
21356        /// is running expensive javascript, or doing a lot of layout updates, etc.
21357        ReasonMainThread = 2,
21358        /// Frame was dropped by the client compositor.
21359        /// The client compositor can drop some frames too (e.g. attempting to
21360        /// recover latency, missing the deadline, etc.).
21361        ReasonClientCompositor = 3,
21362    }
21363    impl FrameDropReason {
21364        /// String value of the enum field names used in the ProtoBuf definition.
21365        ///
21366        /// The values are not transformed in any way and thus are considered stable
21367        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21368        pub fn as_str_name(&self) -> &'static str {
21369            match self {
21370                Self::ReasonUnspecified => "REASON_UNSPECIFIED",
21371                Self::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
21372                Self::ReasonMainThread => "REASON_MAIN_THREAD",
21373                Self::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
21374            }
21375        }
21376        /// Creates an enum from field names used in the ProtoBuf definition.
21377        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21378            match value {
21379                "REASON_UNSPECIFIED" => Some(Self::ReasonUnspecified),
21380                "REASON_DISPLAY_COMPOSITOR" => Some(Self::ReasonDisplayCompositor),
21381                "REASON_MAIN_THREAD" => Some(Self::ReasonMainThread),
21382                "REASON_CLIENT_COMPOSITOR" => Some(Self::ReasonClientCompositor),
21383                _ => None,
21384            }
21385        }
21386    }
21387    #[derive(
21388        Clone,
21389        Copy,
21390        Debug,
21391        PartialEq,
21392        Eq,
21393        Hash,
21394        PartialOrd,
21395        Ord,
21396        ::prost::Enumeration
21397    )]
21398    #[repr(i32)]
21399    pub enum ScrollState {
21400        ScrollNone = 0,
21401        ScrollMainThread = 1,
21402        ScrollCompositorThread = 2,
21403        ScrollRaster = 3,
21404        /// Used when it can't be determined whether a scroll is in progress or not.
21405        ScrollUnknown = 4,
21406    }
21407    impl ScrollState {
21408        /// String value of the enum field names used in the ProtoBuf definition.
21409        ///
21410        /// The values are not transformed in any way and thus are considered stable
21411        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21412        pub fn as_str_name(&self) -> &'static str {
21413            match self {
21414                Self::ScrollNone => "SCROLL_NONE",
21415                Self::ScrollMainThread => "SCROLL_MAIN_THREAD",
21416                Self::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
21417                Self::ScrollRaster => "SCROLL_RASTER",
21418                Self::ScrollUnknown => "SCROLL_UNKNOWN",
21419            }
21420        }
21421        /// Creates an enum from field names used in the ProtoBuf definition.
21422        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21423            match value {
21424                "SCROLL_NONE" => Some(Self::ScrollNone),
21425                "SCROLL_MAIN_THREAD" => Some(Self::ScrollMainThread),
21426                "SCROLL_COMPOSITOR_THREAD" => Some(Self::ScrollCompositorThread),
21427                "SCROLL_RASTER" => Some(Self::ScrollRaster),
21428                "SCROLL_UNKNOWN" => Some(Self::ScrollUnknown),
21429                _ => None,
21430            }
21431        }
21432    }
21433    #[derive(
21434        Clone,
21435        Copy,
21436        Debug,
21437        PartialEq,
21438        Eq,
21439        Hash,
21440        PartialOrd,
21441        Ord,
21442        ::prost::Enumeration
21443    )]
21444    #[repr(i32)]
21445    pub enum FrameType {
21446        Forked = 0,
21447        Backfill = 1,
21448    }
21449    impl FrameType {
21450        /// String value of the enum field names used in the ProtoBuf definition.
21451        ///
21452        /// The values are not transformed in any way and thus are considered stable
21453        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21454        pub fn as_str_name(&self) -> &'static str {
21455            match self {
21456                Self::Forked => "FORKED",
21457                Self::Backfill => "BACKFILL",
21458            }
21459        }
21460        /// Creates an enum from field names used in the ProtoBuf definition.
21461        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21462            match value {
21463                "FORKED" => Some(Self::Forked),
21464                "BACKFILL" => Some(Self::Backfill),
21465                _ => None,
21466            }
21467        }
21468    }
21469}
21470/// Details about one of Chrome's keyed services associated with the event.
21471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21472pub struct ChromeKeyedService {
21473    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
21474    /// Chrome, these are static strings known at compile time).
21475    #[prost(string, optional, tag = "1")]
21476    pub name: ::core::option::Option<::prost::alloc::string::String>,
21477}
21478#[derive(Clone, PartialEq, ::prost::Message)]
21479pub struct ChromeLatencyInfo {
21480    #[prost(int64, optional, tag = "1")]
21481    pub trace_id: ::core::option::Option<i64>,
21482    #[prost(enumeration = "chrome_latency_info::Step", optional, tag = "2")]
21483    pub step: ::core::option::Option<i32>,
21484    #[prost(int32, optional, tag = "3")]
21485    pub frame_tree_node_id: ::core::option::Option<i32>,
21486    #[prost(message, repeated, tag = "4")]
21487    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
21488    #[prost(bool, optional, tag = "5")]
21489    pub is_coalesced: ::core::option::Option<bool>,
21490    #[prost(int64, optional, tag = "6")]
21491    pub gesture_scroll_id: ::core::option::Option<i64>,
21492    #[prost(int64, optional, tag = "7")]
21493    pub touch_id: ::core::option::Option<i64>,
21494    /// The type of input corresponding to this `ChromeLatencyInfo`.
21495    #[prost(enumeration = "chrome_latency_info::InputType", optional, tag = "8")]
21496    pub input_type: ::core::option::Option<i32>,
21497}
21498/// Nested message and enum types in `ChromeLatencyInfo`.
21499pub mod chrome_latency_info {
21500    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21501    pub struct ComponentInfo {
21502        #[prost(enumeration = "LatencyComponentType", optional, tag = "1")]
21503        pub component_type: ::core::option::Option<i32>,
21504        /// Microsecond timestamp in CLOCK_MONOTONIC domain
21505        #[prost(uint64, optional, tag = "2")]
21506        pub time_us: ::core::option::Option<u64>,
21507    }
21508    /// NEXT ID: 12
21509    /// All step are optional but the enum is ordered (not by number) below in the
21510    /// order we expect them to appear if they are emitted in trace in a blocking
21511    /// fashion.
21512    #[derive(
21513        Clone,
21514        Copy,
21515        Debug,
21516        PartialEq,
21517        Eq,
21518        Hash,
21519        PartialOrd,
21520        Ord,
21521        ::prost::Enumeration
21522    )]
21523    #[repr(i32)]
21524    pub enum Step {
21525        Unspecified = 0,
21526        /// Emitted on the browser main thread.
21527        SendInputEventUi = 3,
21528        /// Happens on the renderer's compositor.
21529        HandleInputEventImpl = 5,
21530        DidHandleInputAndOverscroll = 8,
21531        /// Occurs on the Renderer's main thread.
21532        HandleInputEventMain = 4,
21533        MainThreadScrollUpdate = 2,
21534        HandleInputEventMainCommit = 1,
21535        /// Could be emitted on both the renderer's main OR compositor.
21536        HandledInputEventMainOrImpl = 9,
21537        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
21538        /// renderer's compositor and this will be emitted.
21539        HandledInputEventImpl = 10,
21540        /// Renderer's compositor.
21541        SwapBuffers = 6,
21542        /// Happens on the VizCompositor in the GPU process.
21543        DrawAndSwap = 7,
21544        /// Happens on the GPU main thread after the swap has completed.
21545        ///
21546        /// See above for NEXT ID, enum steps are not ordered by tag number.
21547        FinishedSwapBuffers = 11,
21548    }
21549    impl Step {
21550        /// String value of the enum field names used in the ProtoBuf definition.
21551        ///
21552        /// The values are not transformed in any way and thus are considered stable
21553        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21554        pub fn as_str_name(&self) -> &'static str {
21555            match self {
21556                Self::Unspecified => "STEP_UNSPECIFIED",
21557                Self::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
21558                Self::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
21559                Self::DidHandleInputAndOverscroll => {
21560                    "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
21561                }
21562                Self::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
21563                Self::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
21564                Self::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
21565                Self::HandledInputEventMainOrImpl => {
21566                    "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL"
21567                }
21568                Self::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
21569                Self::SwapBuffers => "STEP_SWAP_BUFFERS",
21570                Self::DrawAndSwap => "STEP_DRAW_AND_SWAP",
21571                Self::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
21572            }
21573        }
21574        /// Creates an enum from field names used in the ProtoBuf definition.
21575        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21576            match value {
21577                "STEP_UNSPECIFIED" => Some(Self::Unspecified),
21578                "STEP_SEND_INPUT_EVENT_UI" => Some(Self::SendInputEventUi),
21579                "STEP_HANDLE_INPUT_EVENT_IMPL" => Some(Self::HandleInputEventImpl),
21580                "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL" => {
21581                    Some(Self::DidHandleInputAndOverscroll)
21582                }
21583                "STEP_HANDLE_INPUT_EVENT_MAIN" => Some(Self::HandleInputEventMain),
21584                "STEP_MAIN_THREAD_SCROLL_UPDATE" => Some(Self::MainThreadScrollUpdate),
21585                "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT" => {
21586                    Some(Self::HandleInputEventMainCommit)
21587                }
21588                "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL" => {
21589                    Some(Self::HandledInputEventMainOrImpl)
21590                }
21591                "STEP_HANDLED_INPUT_EVENT_IMPL" => Some(Self::HandledInputEventImpl),
21592                "STEP_SWAP_BUFFERS" => Some(Self::SwapBuffers),
21593                "STEP_DRAW_AND_SWAP" => Some(Self::DrawAndSwap),
21594                "STEP_FINISHED_SWAP_BUFFERS" => Some(Self::FinishedSwapBuffers),
21595                _ => None,
21596            }
21597        }
21598    }
21599    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
21600    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
21601    /// practices.
21602    #[derive(
21603        Clone,
21604        Copy,
21605        Debug,
21606        PartialEq,
21607        Eq,
21608        Hash,
21609        PartialOrd,
21610        Ord,
21611        ::prost::Enumeration
21612    )]
21613    #[repr(i32)]
21614    pub enum LatencyComponentType {
21615        ComponentUnspecified = 0,
21616        ComponentInputEventLatencyBeginRwh = 1,
21617        ComponentInputEventLatencyScrollUpdateOriginal = 2,
21618        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
21619        ComponentInputEventLatencyOriginal = 4,
21620        ComponentInputEventLatencyUi = 5,
21621        ComponentInputEventLatencyRendererMain = 6,
21622        ComponentInputEventLatencyRenderingScheduledMain = 7,
21623        ComponentInputEventLatencyRenderingScheduledImpl = 8,
21624        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
21625        ComponentInputEventLatencyAckRwh = 10,
21626        ComponentInputEventLatencyRendererSwap = 11,
21627        ComponentDisplayCompositorReceivedFrame = 12,
21628        ComponentInputEventGpuSwapBuffer = 13,
21629        ComponentInputEventLatencyFrameSwap = 14,
21630    }
21631    impl LatencyComponentType {
21632        /// String value of the enum field names used in the ProtoBuf definition.
21633        ///
21634        /// The values are not transformed in any way and thus are considered stable
21635        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21636        pub fn as_str_name(&self) -> &'static str {
21637            match self {
21638                Self::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
21639                Self::ComponentInputEventLatencyBeginRwh => {
21640                    "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH"
21641                }
21642                Self::ComponentInputEventLatencyScrollUpdateOriginal => {
21643                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL"
21644                }
21645                Self::ComponentInputEventLatencyFirstScrollUpdateOriginal => {
21646                    "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL"
21647                }
21648                Self::ComponentInputEventLatencyOriginal => {
21649                    "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL"
21650                }
21651                Self::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
21652                Self::ComponentInputEventLatencyRendererMain => {
21653                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN"
21654                }
21655                Self::ComponentInputEventLatencyRenderingScheduledMain => {
21656                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN"
21657                }
21658                Self::ComponentInputEventLatencyRenderingScheduledImpl => {
21659                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL"
21660                }
21661                Self::ComponentInputEventLatencyScrollUpdateLastEvent => {
21662                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT"
21663                }
21664                Self::ComponentInputEventLatencyAckRwh => {
21665                    "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH"
21666                }
21667                Self::ComponentInputEventLatencyRendererSwap => {
21668                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP"
21669                }
21670                Self::ComponentDisplayCompositorReceivedFrame => {
21671                    "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME"
21672                }
21673                Self::ComponentInputEventGpuSwapBuffer => {
21674                    "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER"
21675                }
21676                Self::ComponentInputEventLatencyFrameSwap => {
21677                    "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP"
21678                }
21679            }
21680        }
21681        /// Creates an enum from field names used in the ProtoBuf definition.
21682        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21683            match value {
21684                "COMPONENT_UNSPECIFIED" => Some(Self::ComponentUnspecified),
21685                "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH" => {
21686                    Some(Self::ComponentInputEventLatencyBeginRwh)
21687                }
21688                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL" => {
21689                    Some(Self::ComponentInputEventLatencyScrollUpdateOriginal)
21690                }
21691                "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL" => {
21692                    Some(Self::ComponentInputEventLatencyFirstScrollUpdateOriginal)
21693                }
21694                "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL" => {
21695                    Some(Self::ComponentInputEventLatencyOriginal)
21696                }
21697                "COMPONENT_INPUT_EVENT_LATENCY_UI" => {
21698                    Some(Self::ComponentInputEventLatencyUi)
21699                }
21700                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN" => {
21701                    Some(Self::ComponentInputEventLatencyRendererMain)
21702                }
21703                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN" => {
21704                    Some(Self::ComponentInputEventLatencyRenderingScheduledMain)
21705                }
21706                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL" => {
21707                    Some(Self::ComponentInputEventLatencyRenderingScheduledImpl)
21708                }
21709                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT" => {
21710                    Some(Self::ComponentInputEventLatencyScrollUpdateLastEvent)
21711                }
21712                "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH" => {
21713                    Some(Self::ComponentInputEventLatencyAckRwh)
21714                }
21715                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP" => {
21716                    Some(Self::ComponentInputEventLatencyRendererSwap)
21717                }
21718                "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME" => {
21719                    Some(Self::ComponentDisplayCompositorReceivedFrame)
21720                }
21721                "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER" => {
21722                    Some(Self::ComponentInputEventGpuSwapBuffer)
21723                }
21724                "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP" => {
21725                    Some(Self::ComponentInputEventLatencyFrameSwap)
21726                }
21727                _ => None,
21728            }
21729        }
21730    }
21731    #[derive(
21732        Clone,
21733        Copy,
21734        Debug,
21735        PartialEq,
21736        Eq,
21737        Hash,
21738        PartialOrd,
21739        Ord,
21740        ::prost::Enumeration
21741    )]
21742    #[repr(i32)]
21743    pub enum InputType {
21744        UnspecifiedOrOther = 0,
21745        TouchMoved = 1,
21746        GestureScrollBegin = 2,
21747        GestureScrollUpdate = 3,
21748        GestureScrollEnd = 4,
21749        GestureTap = 5,
21750        GestureTapCancel = 6,
21751    }
21752    impl InputType {
21753        /// String value of the enum field names used in the ProtoBuf definition.
21754        ///
21755        /// The values are not transformed in any way and thus are considered stable
21756        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21757        pub fn as_str_name(&self) -> &'static str {
21758            match self {
21759                Self::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
21760                Self::TouchMoved => "TOUCH_MOVED",
21761                Self::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
21762                Self::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
21763                Self::GestureScrollEnd => "GESTURE_SCROLL_END",
21764                Self::GestureTap => "GESTURE_TAP",
21765                Self::GestureTapCancel => "GESTURE_TAP_CANCEL",
21766            }
21767        }
21768        /// Creates an enum from field names used in the ProtoBuf definition.
21769        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21770            match value {
21771                "UNSPECIFIED_OR_OTHER" => Some(Self::UnspecifiedOrOther),
21772                "TOUCH_MOVED" => Some(Self::TouchMoved),
21773                "GESTURE_SCROLL_BEGIN" => Some(Self::GestureScrollBegin),
21774                "GESTURE_SCROLL_UPDATE" => Some(Self::GestureScrollUpdate),
21775                "GESTURE_SCROLL_END" => Some(Self::GestureScrollEnd),
21776                "GESTURE_TAP" => Some(Self::GestureTap),
21777                "GESTURE_TAP_CANCEL" => Some(Self::GestureTapCancel),
21778                _ => None,
21779            }
21780        }
21781    }
21782}
21783/// Details about a legacy Chrome IPC message that is either sent by the event.
21784/// TODO(eseckler): Also use this message on the receiving side?
21785#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21786pub struct ChromeLegacyIpc {
21787    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
21788    /// enum, e.g. FrameMsgStart,
21789    #[prost(enumeration = "chrome_legacy_ipc::MessageClass", optional, tag = "1")]
21790    pub message_class: ::core::option::Option<i32>,
21791    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
21792    /// IPC_MESSAGE_START macros.
21793    #[prost(uint32, optional, tag = "2")]
21794    pub message_line: ::core::option::Option<u32>,
21795}
21796/// Nested message and enum types in `ChromeLegacyIpc`.
21797pub mod chrome_legacy_ipc {
21798    #[derive(
21799        Clone,
21800        Copy,
21801        Debug,
21802        PartialEq,
21803        Eq,
21804        Hash,
21805        PartialOrd,
21806        Ord,
21807        ::prost::Enumeration
21808    )]
21809    #[repr(i32)]
21810    pub enum MessageClass {
21811        ClassUnspecified = 0,
21812        ClassAutomation = 1,
21813        ClassFrame = 2,
21814        ClassPage = 3,
21815        ClassView = 4,
21816        ClassWidget = 5,
21817        ClassInput = 6,
21818        ClassTest = 7,
21819        ClassWorker = 8,
21820        ClassNacl = 9,
21821        ClassGpuChannel = 10,
21822        ClassMedia = 11,
21823        ClassPpapi = 12,
21824        ClassChrome = 13,
21825        ClassDrag = 14,
21826        ClassPrint = 15,
21827        ClassExtension = 16,
21828        ClassTextInputClient = 17,
21829        ClassBlinkTest = 18,
21830        ClassAccessibility = 19,
21831        ClassPrerender = 20,
21832        ClassChromoting = 21,
21833        ClassBrowserPlugin = 22,
21834        ClassAndroidWebView = 23,
21835        ClassNaclHost = 24,
21836        ClassEncryptedMedia = 25,
21837        ClassCast = 26,
21838        ClassGinJavaBridge = 27,
21839        ClassChromeUtilityPrinting = 28,
21840        ClassOzoneGpu = 29,
21841        ClassWebTest = 30,
21842        ClassNetworkHints = 31,
21843        ClassExtensionsGuestView = 32,
21844        ClassGuestView = 33,
21845        ClassMediaPlayerDelegate = 34,
21846        ClassExtensionWorker = 35,
21847        ClassSubresourceFilter = 36,
21848        ClassUnfreezableFrame = 37,
21849    }
21850    impl MessageClass {
21851        /// String value of the enum field names used in the ProtoBuf definition.
21852        ///
21853        /// The values are not transformed in any way and thus are considered stable
21854        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21855        pub fn as_str_name(&self) -> &'static str {
21856            match self {
21857                Self::ClassUnspecified => "CLASS_UNSPECIFIED",
21858                Self::ClassAutomation => "CLASS_AUTOMATION",
21859                Self::ClassFrame => "CLASS_FRAME",
21860                Self::ClassPage => "CLASS_PAGE",
21861                Self::ClassView => "CLASS_VIEW",
21862                Self::ClassWidget => "CLASS_WIDGET",
21863                Self::ClassInput => "CLASS_INPUT",
21864                Self::ClassTest => "CLASS_TEST",
21865                Self::ClassWorker => "CLASS_WORKER",
21866                Self::ClassNacl => "CLASS_NACL",
21867                Self::ClassGpuChannel => "CLASS_GPU_CHANNEL",
21868                Self::ClassMedia => "CLASS_MEDIA",
21869                Self::ClassPpapi => "CLASS_PPAPI",
21870                Self::ClassChrome => "CLASS_CHROME",
21871                Self::ClassDrag => "CLASS_DRAG",
21872                Self::ClassPrint => "CLASS_PRINT",
21873                Self::ClassExtension => "CLASS_EXTENSION",
21874                Self::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
21875                Self::ClassBlinkTest => "CLASS_BLINK_TEST",
21876                Self::ClassAccessibility => "CLASS_ACCESSIBILITY",
21877                Self::ClassPrerender => "CLASS_PRERENDER",
21878                Self::ClassChromoting => "CLASS_CHROMOTING",
21879                Self::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
21880                Self::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
21881                Self::ClassNaclHost => "CLASS_NACL_HOST",
21882                Self::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
21883                Self::ClassCast => "CLASS_CAST",
21884                Self::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
21885                Self::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
21886                Self::ClassOzoneGpu => "CLASS_OZONE_GPU",
21887                Self::ClassWebTest => "CLASS_WEB_TEST",
21888                Self::ClassNetworkHints => "CLASS_NETWORK_HINTS",
21889                Self::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
21890                Self::ClassGuestView => "CLASS_GUEST_VIEW",
21891                Self::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
21892                Self::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
21893                Self::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
21894                Self::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
21895            }
21896        }
21897        /// Creates an enum from field names used in the ProtoBuf definition.
21898        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21899            match value {
21900                "CLASS_UNSPECIFIED" => Some(Self::ClassUnspecified),
21901                "CLASS_AUTOMATION" => Some(Self::ClassAutomation),
21902                "CLASS_FRAME" => Some(Self::ClassFrame),
21903                "CLASS_PAGE" => Some(Self::ClassPage),
21904                "CLASS_VIEW" => Some(Self::ClassView),
21905                "CLASS_WIDGET" => Some(Self::ClassWidget),
21906                "CLASS_INPUT" => Some(Self::ClassInput),
21907                "CLASS_TEST" => Some(Self::ClassTest),
21908                "CLASS_WORKER" => Some(Self::ClassWorker),
21909                "CLASS_NACL" => Some(Self::ClassNacl),
21910                "CLASS_GPU_CHANNEL" => Some(Self::ClassGpuChannel),
21911                "CLASS_MEDIA" => Some(Self::ClassMedia),
21912                "CLASS_PPAPI" => Some(Self::ClassPpapi),
21913                "CLASS_CHROME" => Some(Self::ClassChrome),
21914                "CLASS_DRAG" => Some(Self::ClassDrag),
21915                "CLASS_PRINT" => Some(Self::ClassPrint),
21916                "CLASS_EXTENSION" => Some(Self::ClassExtension),
21917                "CLASS_TEXT_INPUT_CLIENT" => Some(Self::ClassTextInputClient),
21918                "CLASS_BLINK_TEST" => Some(Self::ClassBlinkTest),
21919                "CLASS_ACCESSIBILITY" => Some(Self::ClassAccessibility),
21920                "CLASS_PRERENDER" => Some(Self::ClassPrerender),
21921                "CLASS_CHROMOTING" => Some(Self::ClassChromoting),
21922                "CLASS_BROWSER_PLUGIN" => Some(Self::ClassBrowserPlugin),
21923                "CLASS_ANDROID_WEB_VIEW" => Some(Self::ClassAndroidWebView),
21924                "CLASS_NACL_HOST" => Some(Self::ClassNaclHost),
21925                "CLASS_ENCRYPTED_MEDIA" => Some(Self::ClassEncryptedMedia),
21926                "CLASS_CAST" => Some(Self::ClassCast),
21927                "CLASS_GIN_JAVA_BRIDGE" => Some(Self::ClassGinJavaBridge),
21928                "CLASS_CHROME_UTILITY_PRINTING" => Some(Self::ClassChromeUtilityPrinting),
21929                "CLASS_OZONE_GPU" => Some(Self::ClassOzoneGpu),
21930                "CLASS_WEB_TEST" => Some(Self::ClassWebTest),
21931                "CLASS_NETWORK_HINTS" => Some(Self::ClassNetworkHints),
21932                "CLASS_EXTENSIONS_GUEST_VIEW" => Some(Self::ClassExtensionsGuestView),
21933                "CLASS_GUEST_VIEW" => Some(Self::ClassGuestView),
21934                "CLASS_MEDIA_PLAYER_DELEGATE" => Some(Self::ClassMediaPlayerDelegate),
21935                "CLASS_EXTENSION_WORKER" => Some(Self::ClassExtensionWorker),
21936                "CLASS_SUBRESOURCE_FILTER" => Some(Self::ClassSubresourceFilter),
21937                "CLASS_UNFREEZABLE_FRAME" => Some(Self::ClassUnfreezableFrame),
21938                _ => None,
21939            }
21940        }
21941    }
21942}
21943/// Details about Chrome message pump events
21944#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21945pub struct ChromeMessagePump {
21946    /// True if there are sent messages in the queue.
21947    #[prost(bool, optional, tag = "1")]
21948    pub sent_messages_in_queue: ::core::option::Option<bool>,
21949    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
21950    /// invoke.
21951    #[prost(uint64, optional, tag = "2")]
21952    pub io_handler_location_iid: ::core::option::Option<u64>,
21953}
21954/// Contains information to identify mojo handling events. The trace events in
21955/// mojo are common for all mojo interfaces and this information is used to
21956/// identify who is the caller or callee.
21957#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21958pub struct ChromeMojoEventInfo {
21959    /// Contains the interface name or the file name of the creator of a mojo
21960    /// handle watcher, recorded when an event if notified to the watcher. The code
21961    /// that runs within the track event belongs to the interface.
21962    #[prost(string, optional, tag = "1")]
21963    pub watcher_notify_interface_tag: ::core::option::Option<
21964        ::prost::alloc::string::String,
21965    >,
21966    /// The hash of the IPC message that is being handled.
21967    #[prost(uint32, optional, tag = "2")]
21968    pub ipc_hash: ::core::option::Option<u32>,
21969    /// A static string representing the mojo interface name of the message that is
21970    /// being handled.
21971    #[prost(string, optional, tag = "3")]
21972    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
21973    /// Refers to an interned UnsymbolizedSourceLocation.
21974    /// The UnsymbolizedSourceLocation contains the interface method that's being
21975    /// handled, represented as a native symbol.
21976    /// The native symbol can be symbolized after the trace is recorded.
21977    /// Not using a symbolized source location for official Chromium builds to
21978    /// reduce binary size - emitting file/function names as strings into the
21979    /// trace requires storing them in the binary, which causes a significant
21980    /// binary size bloat for Chromium.
21981    #[prost(uint64, optional, tag = "4")]
21982    pub mojo_interface_method_iid: ::core::option::Option<u64>,
21983    /// Indicate whether this is a message or reply.
21984    #[prost(bool, optional, tag = "5")]
21985    pub is_reply: ::core::option::Option<bool>,
21986    /// The payload size of the message being sent through mojo messages.
21987    #[prost(uint64, optional, tag = "6")]
21988    pub payload_size: ::core::option::Option<u64>,
21989    /// Represents the size of the message. Includes all headers and user payload.
21990    #[prost(uint64, optional, tag = "7")]
21991    pub data_num_bytes: ::core::option::Option<u64>,
21992}
21993#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21994pub struct ChromeRendererSchedulerState {
21995    #[prost(enumeration = "ChromeRailMode", optional, tag = "1")]
21996    pub rail_mode: ::core::option::Option<i32>,
21997    #[prost(bool, optional, tag = "2")]
21998    pub is_backgrounded: ::core::option::Option<bool>,
21999    #[prost(bool, optional, tag = "3")]
22000    pub is_hidden: ::core::option::Option<bool>,
22001}
22002/// Details about a UI interaction initiated by the user, such as opening or
22003/// closing a tab or a context menu.
22004#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22005pub struct ChromeUserEvent {
22006    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
22007    /// Chrome, these are usually static strings known at compile time, or
22008    /// concatenations of multiple such static strings).
22009    #[prost(string, optional, tag = "1")]
22010    pub action: ::core::option::Option<::prost::alloc::string::String>,
22011    /// MD5 hash of the action string.
22012    #[prost(uint64, optional, tag = "2")]
22013    pub action_hash: ::core::option::Option<u64>,
22014}
22015/// Details about HWNDMessageHandler trace events.
22016#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22017pub struct ChromeWindowHandleEventInfo {
22018    #[prost(uint32, optional, tag = "1")]
22019    pub dpi: ::core::option::Option<u32>,
22020    #[prost(uint32, optional, tag = "2")]
22021    pub message_id: ::core::option::Option<u32>,
22022    #[prost(fixed64, optional, tag = "3")]
22023    pub hwnd_ptr: ::core::option::Option<u64>,
22024}
22025#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22026pub struct Screenshot {
22027    /// The JPEG (Joint Photographic Experts Group) file format.
22028    #[prost(bytes = "vec", optional, tag = "1")]
22029    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22030    /// The PAM (Portable Arbitrary Map) file format.
22031    #[prost(bytes = "vec", optional, tag = "2")]
22032    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22033    /// The PPM (Portable Pixmap) file format.
22034    #[prost(bytes = "vec", optional, tag = "3")]
22035    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22036}
22037/// TrackEvent arguments describing the execution of a task.
22038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22039pub struct TaskExecution {
22040    /// Source location that the task was posted from.
22041    /// interned SourceLocation.
22042    #[prost(uint64, optional, tag = "1")]
22043    pub posted_from_iid: ::core::option::Option<u64>,
22044}
22045/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
22046/// which describe activity on a track, such as a thread or asynchronous event
22047/// track. The track is specified using separate TrackDescriptor messages and
22048/// referred to via the track's UUID.
22049///
22050/// A simple TrackEvent packet specifies a timestamp, category, name and type:
22051/// ```protobuf
22052///    trace_packet {
22053///      timestamp: 1000
22054///      track_event {
22055///        categories: \["my_cat"\]
22056///        name: "my_event"
22057///        type: TYPE_INSTANT
22058///       }
22059///     }
22060/// ```
22061///
22062/// To associate an event with a custom track (e.g. a thread), the track is
22063/// defined in a separate packet and referred to from the TrackEvent by its UUID:
22064/// ```protobuf
22065///    trace_packet {
22066///      track_descriptor {
22067///        track_uuid: 1234
22068///        name: "my_track"
22069///
22070///        // Optionally, associate the track with a thread.
22071///        thread_descriptor {
22072///          pid: 10
22073///          tid: 10
22074///          ..
22075///        }
22076///      }
22077///    }
22078/// ```
22079///
22080/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
22081///
22082/// ```protobuf
22083///    trace_packet {
22084///      timestamp: 1200
22085///      track_event {
22086///        track_uuid: 1234
22087///        categories: \["my_cat"\]
22088///        name: "my_slice"
22089///        type: TYPE_SLICE_BEGIN
22090///      }
22091///    }
22092///    trace_packet {
22093///      timestamp: 1400
22094///      track_event {
22095///        track_uuid: 1234
22096///        type: TYPE_SLICE_END
22097///      }
22098///    }
22099/// ```
22100/// TrackEvents also support optimizations to reduce data repetition and encoded
22101/// data size, e.g. through data interning (names, categories, ...) and delta
22102/// encoding of timestamps/counters. For details, see the InternedData message.
22103/// Further, default values for attributes of events on the same sequence (e.g.
22104/// their default track association) can be emitted as part of a
22105/// TrackEventDefaults message.
22106///
22107/// Next reserved id: 13 (up to 15). Next id: 58.
22108#[derive(Clone, PartialEq, ::prost::Message)]
22109pub struct TrackEvent {
22110    /// Names of categories of the event. In the client library, categories are a
22111    /// way to turn groups of individual events on or off.
22112    /// interned EventCategoryName.
22113    #[prost(uint64, repeated, packed = "false", tag = "3")]
22114    pub category_iids: ::prost::alloc::vec::Vec<u64>,
22115    /// non-interned variant.
22116    #[prost(string, repeated, tag = "22")]
22117    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22118    #[prost(enumeration = "track_event::Type", optional, tag = "9")]
22119    pub r#type: ::core::option::Option<i32>,
22120    /// Identifies the track of the event. The default value may be overridden
22121    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
22122    /// sequence (in most cases sequence = one thread). If no value is specified
22123    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
22124    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
22125    #[prost(uint64, optional, tag = "11")]
22126    pub track_uuid: ::core::option::Option<u64>,
22127    /// To encode counter values more efficiently, we support attaching additional
22128    /// counter values to a TrackEvent of any type. All values will share the same
22129    /// timestamp specified in the TracePacket. The value at
22130    /// extra_counter_values\[N\] is for the counter track referenced by
22131    /// extra_counter_track_uuids\[N\].
22132    ///
22133    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
22134    /// should always be equal or more uuids than values. It is valid to set more
22135    /// uuids (e.g. via defaults) than values. If uuids are specified in
22136    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
22137    /// default uuid list.
22138    ///
22139    /// For example, this allows snapshotting the thread time clock at each
22140    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
22141    #[prost(uint64, repeated, packed = "false", tag = "31")]
22142    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22143    #[prost(int64, repeated, packed = "false", tag = "12")]
22144    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
22145    /// Counter snapshots using floating point instead of integer values.
22146    #[prost(uint64, repeated, packed = "false", tag = "45")]
22147    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22148    #[prost(double, repeated, packed = "false", tag = "46")]
22149    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
22150    /// IDs of flows originating, passing through, or ending at this event.
22151    /// Flow IDs are global within a trace.
22152    ///
22153    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
22154    /// an input event may be handled on one thread but cause another event on
22155    /// a different thread - a flow between the two events can associate them.
22156    ///
22157    /// The direction of the flows between events is inferred from the events'
22158    /// timestamps. The earliest event with the same flow ID becomes the source
22159    /// of the flow. Any events thereafter are intermediate steps of the flow,
22160    /// until the flow terminates at the last event with the flow ID.
22161    ///
22162    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
22163    /// that the same ID can later be reused for another flow.
22164    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
22165    #[deprecated]
22166    #[prost(uint64, repeated, packed = "false", tag = "36")]
22167    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
22168    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
22169    /// consumption.
22170    #[prost(fixed64, repeated, packed = "false", tag = "47")]
22171    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
22172    /// List of flow ids which should terminate on this event, otherwise same as
22173    /// |flow_ids|.
22174    /// Any one flow ID should be either listed as part of |flow_ids| OR
22175    /// |terminating_flow_ids|, not both.
22176    /// DEPRECATED. Only kept for backwards compatibility.  Use
22177    /// |terminating_flow_ids|.
22178    #[deprecated]
22179    #[prost(uint64, repeated, packed = "false", tag = "42")]
22180    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
22181    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
22182    /// "terminating_flow_ids" to reduce memory consumption.
22183    #[prost(fixed64, repeated, packed = "false", tag = "48")]
22184    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
22185    /// An optional additive value attributed to this callstack occurrence. When
22186    /// present, weighted callstack aggregations only include occurrences which
22187    /// have this field set; they do not mix weighted and unweighted samples.
22188    /// Consumers can use sample count as a separate fallback measure when no
22189    /// weighted occurrences are available.
22190    #[prost(double, optional, tag = "57")]
22191    pub callstack_weight: ::core::option::Option<f64>,
22192    /// Debug annotations associated with this event. These are arbitrary key-value
22193    /// pairs that can be used to attach additional information to the event.
22194    /// See DebugAnnotation message for details on supported value types.
22195    ///
22196    /// For example, debug annotations can be used to attach a URL or resource
22197    /// identifier to a network request event. Arrays, dictionaries and full
22198    /// nested structures (e.g. arrays of dictionaries of dictionaries)
22199    /// are supported.
22200    #[prost(message, repeated, tag = "4")]
22201    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
22202    /// Typed event arguments:
22203    #[prost(message, optional, tag = "5")]
22204    pub task_execution: ::core::option::Option<TaskExecution>,
22205    #[prost(message, optional, tag = "21")]
22206    pub log_message: ::core::option::Option<LogMessage>,
22207    #[prost(message, optional, tag = "24")]
22208    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
22209    #[prost(message, optional, tag = "25")]
22210    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
22211    #[prost(message, optional, tag = "26")]
22212    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
22213    #[prost(message, optional, tag = "27")]
22214    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
22215    #[prost(message, optional, tag = "28")]
22216    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
22217    #[prost(message, optional, tag = "29")]
22218    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
22219    /// DEPRECATED. Only kept for backwards compatibility. Use the
22220    /// |ChromeTrackEvent.frame_reporter| extension in
22221    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
22222    /// instead.
22223    #[deprecated]
22224    #[prost(message, optional, tag = "32")]
22225    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
22226    #[prost(message, optional, tag = "39")]
22227    pub chrome_application_state_info: ::core::option::Option<
22228        ChromeApplicationStateInfo,
22229    >,
22230    #[prost(message, optional, tag = "40")]
22231    pub chrome_renderer_scheduler_state: ::core::option::Option<
22232        ChromeRendererSchedulerState,
22233    >,
22234    #[prost(message, optional, tag = "41")]
22235    pub chrome_window_handle_event_info: ::core::option::Option<
22236        ChromeWindowHandleEventInfo,
22237    >,
22238    #[prost(message, optional, tag = "43")]
22239    pub chrome_content_settings_event_info: ::core::option::Option<
22240        ChromeContentSettingsEventInfo,
22241    >,
22242    #[prost(message, optional, tag = "49")]
22243    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
22244    #[prost(message, optional, tag = "50")]
22245    pub screenshot: ::core::option::Option<Screenshot>,
22246    #[prost(message, optional, tag = "35")]
22247    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
22248    #[prost(message, optional, tag = "38")]
22249    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
22250    #[prost(message, optional, tag = "6")]
22251    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
22252    /// Optional name of the event for its display in trace viewer. May be left
22253    /// unspecified for events with typed arguments.
22254    ///
22255    /// Note that metrics should not rely on event names, as they are prone to
22256    /// changing. Instead, they should use typed arguments to identify the events
22257    /// they are interested in.
22258    #[prost(oneof = "track_event::NameField", tags = "10, 23")]
22259    pub name_field: ::core::option::Option<track_event::NameField>,
22260    /// A new value for a counter track. |track_uuid| should refer to a track with
22261    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22262    /// efficient encoding of counter values that are sampled at the beginning/end
22263    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22264    /// Counter values can optionally be encoded in as delta values (positive or
22265    /// negative) on each packet sequence (see CounterIncrementalBase).
22266    #[prost(oneof = "track_event::CounterValueField", tags = "30, 44")]
22267    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
22268    /// An opaque identifier to correlate this slice with other slices that are
22269    /// considered part of the same logical operation, even if they are not
22270    /// causally connected. Examples uses of a correlation id might be the number
22271    /// of frame going through various stages of rendering in a GPU, the id for an
22272    /// RPC request going through a distributed system, or the id of a network
22273    /// request going through various stages of processing by the kernel.
22274    ///
22275    /// NOTE: if the events *are* causually connected, you probably want to use
22276    /// flows instead of OR in addition to correlation ids.
22277    ///
22278    /// UIs can use this identifier to visually link these slices, for instance,
22279    /// by assigning them a consistent color or highlighting the entire correlated
22280    /// set when one slice is hovered.
22281    ///
22282    /// Only one field within this 'oneof' should be set to define the correlation.
22283    #[prost(oneof = "track_event::CorrelationIdField", tags = "52, 53, 54")]
22284    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
22285    /// Callstack associated with this event. This captures the program stack at
22286    /// the time the event occurred, useful for understanding what code path led
22287    /// to the event.
22288    ///
22289    /// Two variants are supported:
22290    /// - callstack: Inline callstack data (simpler when trace size is not a
22291    ///    concern or callstacks are unique)
22292    /// - callstack_iid: Reference to an interned Callstack in InternedData
22293    ///    (efficient for repeated callstacks)
22294    ///
22295    /// Only one of these fields should be set.
22296    #[prost(oneof = "track_event::CallstackField", tags = "55, 56")]
22297    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
22298    /// This field is used only if the source location represents the function that
22299    /// executes during this event.
22300    #[prost(oneof = "track_event::SourceLocationField", tags = "33, 34")]
22301    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
22302    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22303    /// TracePacket instead.
22304    ///
22305    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22306    #[prost(oneof = "track_event::Timestamp", tags = "1, 16")]
22307    pub timestamp: ::core::option::Option<track_event::Timestamp>,
22308    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22309    /// encode thread time instead.
22310    ///
22311    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22312    /// microseconds.
22313    #[prost(oneof = "track_event::ThreadTime", tags = "2, 17")]
22314    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
22315    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22316    /// encode thread instruction count instead.
22317    ///
22318    /// Value of the instruction counter for the current thread.
22319    #[prost(oneof = "track_event::ThreadInstructionCount", tags = "8, 20")]
22320    pub thread_instruction_count: ::core::option::Option<
22321        track_event::ThreadInstructionCount,
22322    >,
22323}
22324/// Nested message and enum types in `TrackEvent`.
22325pub mod track_event {
22326    /// Inline callstack for TrackEvents when interning is not needed.
22327    /// This is a simplified version of the profiling Callstack/Frame messages,
22328    /// designed for cases where trace size is not critical or callstacks are
22329    /// unique.
22330    ///
22331    /// Use this for simple callstacks with function names and source locations.
22332    /// For binary/library information (mappings, build IDs, relative PCs), use
22333    /// interned callstacks via callstack_iid instead.
22334    #[derive(Clone, PartialEq, ::prost::Message)]
22335    pub struct InlineCallstack {
22336        /// Frames of this callstack, ordered from bottom (outermost) to top
22337        /// (innermost). For example, if main() calls foo() which calls bar(), the
22338        /// frames would be: \[main, foo, bar\]
22339        #[prost(message, repeated, tag = "1")]
22340        pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
22341    }
22342    /// Nested message and enum types in `InlineCallstack`.
22343    pub mod inline_callstack {
22344        /// Frame within an inline callstack.
22345        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22346        pub struct Frame {
22347            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
22348            #[prost(string, optional, tag = "1")]
22349            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
22350            /// Optional: Source file path, e.g., "/src/foo.cc"
22351            #[prost(string, optional, tag = "2")]
22352            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
22353            /// Optional: Line number in the source file
22354            #[prost(uint32, optional, tag = "3")]
22355            pub line_number: ::core::option::Option<u32>,
22356        }
22357    }
22358    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
22359    /// event attributes are initially simply proxied for conversion to a JSON
22360    /// trace. We intend to gradually transition these attributes to similar native
22361    /// features in TrackEvent (e.g. async + flow events), or deprecate them
22362    /// without replacement where transition is unsuitable.
22363    ///
22364    /// Next reserved id: 16 (up to 16).
22365    /// Next id: 20.
22366    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22367    pub struct LegacyEvent {
22368        /// Deprecated, use TrackEvent::name(_iid) instead.
22369        /// interned EventName.
22370        #[prost(uint64, optional, tag = "1")]
22371        pub name_iid: ::core::option::Option<u64>,
22372        #[prost(int32, optional, tag = "2")]
22373        pub phase: ::core::option::Option<i32>,
22374        #[prost(int64, optional, tag = "3")]
22375        pub duration_us: ::core::option::Option<i64>,
22376        #[prost(int64, optional, tag = "4")]
22377        pub thread_duration_us: ::core::option::Option<i64>,
22378        /// Elapsed retired instruction count during the event.
22379        #[prost(int64, optional, tag = "15")]
22380        pub thread_instruction_delta: ::core::option::Option<i64>,
22381        /// Additional optional scope for |id|.
22382        #[prost(string, optional, tag = "7")]
22383        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
22384        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
22385        #[prost(bool, optional, tag = "9")]
22386        pub use_async_tts: ::core::option::Option<bool>,
22387        /// Idenfifies a flow. Flow events with the same bind_id are connected.
22388        #[prost(uint64, optional, tag = "8")]
22389        pub bind_id: ::core::option::Option<u64>,
22390        /// Use the enclosing slice as binding point for a flow end event instead of
22391        /// the next slice. Flow start/step events always bind to the enclosing
22392        /// slice.
22393        #[prost(bool, optional, tag = "12")]
22394        pub bind_to_enclosing: ::core::option::Option<bool>,
22395        #[prost(enumeration = "legacy_event::FlowDirection", optional, tag = "13")]
22396        pub flow_direction: ::core::option::Option<i32>,
22397        #[prost(enumeration = "legacy_event::InstantEventScope", optional, tag = "14")]
22398        pub instant_event_scope: ::core::option::Option<i32>,
22399        /// Override the pid/tid if the writer needs to emit events on behalf of
22400        /// another process/thread. This should be the exception. Normally, the
22401        /// pid+tid from ThreadDescriptor is used.
22402        #[prost(int32, optional, tag = "18")]
22403        pub pid_override: ::core::option::Option<i32>,
22404        #[prost(int32, optional, tag = "19")]
22405        pub tid_override: ::core::option::Option<i32>,
22406        #[prost(oneof = "legacy_event::Id", tags = "6, 10, 11")]
22407        pub id: ::core::option::Option<legacy_event::Id>,
22408    }
22409    /// Nested message and enum types in `LegacyEvent`.
22410    pub mod legacy_event {
22411        #[derive(
22412            Clone,
22413            Copy,
22414            Debug,
22415            PartialEq,
22416            Eq,
22417            Hash,
22418            PartialOrd,
22419            Ord,
22420            ::prost::Enumeration
22421        )]
22422        #[repr(i32)]
22423        pub enum FlowDirection {
22424            FlowUnspecified = 0,
22425            FlowIn = 1,
22426            FlowOut = 2,
22427            FlowInout = 3,
22428        }
22429        impl FlowDirection {
22430            /// String value of the enum field names used in the ProtoBuf definition.
22431            ///
22432            /// The values are not transformed in any way and thus are considered stable
22433            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22434            pub fn as_str_name(&self) -> &'static str {
22435                match self {
22436                    Self::FlowUnspecified => "FLOW_UNSPECIFIED",
22437                    Self::FlowIn => "FLOW_IN",
22438                    Self::FlowOut => "FLOW_OUT",
22439                    Self::FlowInout => "FLOW_INOUT",
22440                }
22441            }
22442            /// Creates an enum from field names used in the ProtoBuf definition.
22443            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22444                match value {
22445                    "FLOW_UNSPECIFIED" => Some(Self::FlowUnspecified),
22446                    "FLOW_IN" => Some(Self::FlowIn),
22447                    "FLOW_OUT" => Some(Self::FlowOut),
22448                    "FLOW_INOUT" => Some(Self::FlowInout),
22449                    _ => None,
22450                }
22451            }
22452        }
22453        #[derive(
22454            Clone,
22455            Copy,
22456            Debug,
22457            PartialEq,
22458            Eq,
22459            Hash,
22460            PartialOrd,
22461            Ord,
22462            ::prost::Enumeration
22463        )]
22464        #[repr(i32)]
22465        pub enum InstantEventScope {
22466            ScopeUnspecified = 0,
22467            ScopeGlobal = 1,
22468            ScopeProcess = 2,
22469            ScopeThread = 3,
22470        }
22471        impl InstantEventScope {
22472            /// String value of the enum field names used in the ProtoBuf definition.
22473            ///
22474            /// The values are not transformed in any way and thus are considered stable
22475            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22476            pub fn as_str_name(&self) -> &'static str {
22477                match self {
22478                    Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
22479                    Self::ScopeGlobal => "SCOPE_GLOBAL",
22480                    Self::ScopeProcess => "SCOPE_PROCESS",
22481                    Self::ScopeThread => "SCOPE_THREAD",
22482                }
22483            }
22484            /// Creates an enum from field names used in the ProtoBuf definition.
22485            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22486                match value {
22487                    "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
22488                    "SCOPE_GLOBAL" => Some(Self::ScopeGlobal),
22489                    "SCOPE_PROCESS" => Some(Self::ScopeProcess),
22490                    "SCOPE_THREAD" => Some(Self::ScopeThread),
22491                    _ => None,
22492                }
22493            }
22494        }
22495        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22496        pub enum Id {
22497            #[prost(uint64, tag = "6")]
22498            UnscopedId(u64),
22499            #[prost(uint64, tag = "10")]
22500            LocalId(u64),
22501            #[prost(uint64, tag = "11")]
22502            GlobalId(u64),
22503        }
22504    }
22505    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
22506    #[derive(
22507        Clone,
22508        Copy,
22509        Debug,
22510        PartialEq,
22511        Eq,
22512        Hash,
22513        PartialOrd,
22514        Ord,
22515        ::prost::Enumeration
22516    )]
22517    #[repr(i32)]
22518    pub enum Type {
22519        Unspecified = 0,
22520        /// Slice events are events that have a begin and end timestamp, i.e. a
22521        /// duration. They can be nested similar to a callstack: If, on the same
22522        /// track, event B begins after event A, but before A ends, B is a child
22523        /// event of A and will be drawn as a nested event underneath A in the UI.
22524        /// Note that child events should always end before their parents (e.g. B
22525        /// before A).
22526        ///
22527        /// Each slice event is formed by a pair of BEGIN + END events. The END event
22528        /// does not need to repeat any TrackEvent fields it has in common with its
22529        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
22530        /// END pair will be merged during trace import.
22531        ///
22532        /// Note that we deliberately chose not to support COMPLETE events (which
22533        /// would specify a duration directly) since clients would need to delay
22534        /// writing them until the slice is completed, which can result in reordered
22535        /// events in the trace and loss of unfinished events at the end of a trace.
22536        SliceBegin = 1,
22537        SliceEnd = 2,
22538        /// Instant events are nestable events without duration. They can be children
22539        /// of slice events on the same track.
22540        Instant = 3,
22541        /// Event that provides a value for a counter track. |track_uuid| should
22542        /// refer to a counter track and |counter_value| set to the new value. Note
22543        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
22544        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
22545        Counter = 4,
22546        /// Event that provides a state value update for a state track. Think of this
22547        /// as a symbolic counter (a TYPE_COUNTER with literals rather then numbers).
22548        /// |track_uuid| should refer to a state track, and the state value update is
22549        /// carried in the |state| field. An empty or unset state field indicates "no
22550        /// state" / "idle". For more details, see
22551        /// [RFC-0023](<https://github.com/google/perfetto/discussions/5549>).
22552        State = 5,
22553    }
22554    impl Type {
22555        /// String value of the enum field names used in the ProtoBuf definition.
22556        ///
22557        /// The values are not transformed in any way and thus are considered stable
22558        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22559        pub fn as_str_name(&self) -> &'static str {
22560            match self {
22561                Self::Unspecified => "TYPE_UNSPECIFIED",
22562                Self::SliceBegin => "TYPE_SLICE_BEGIN",
22563                Self::SliceEnd => "TYPE_SLICE_END",
22564                Self::Instant => "TYPE_INSTANT",
22565                Self::Counter => "TYPE_COUNTER",
22566                Self::State => "TYPE_STATE",
22567            }
22568        }
22569        /// Creates an enum from field names used in the ProtoBuf definition.
22570        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22571            match value {
22572                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
22573                "TYPE_SLICE_BEGIN" => Some(Self::SliceBegin),
22574                "TYPE_SLICE_END" => Some(Self::SliceEnd),
22575                "TYPE_INSTANT" => Some(Self::Instant),
22576                "TYPE_COUNTER" => Some(Self::Counter),
22577                "TYPE_STATE" => Some(Self::State),
22578                _ => None,
22579            }
22580        }
22581    }
22582    /// Optional name of the event for its display in trace viewer. May be left
22583    /// unspecified for events with typed arguments.
22584    ///
22585    /// Note that metrics should not rely on event names, as they are prone to
22586    /// changing. Instead, they should use typed arguments to identify the events
22587    /// they are interested in.
22588    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22589    pub enum NameField {
22590        /// interned EventName.
22591        #[prost(uint64, tag = "10")]
22592        NameIid(u64),
22593        /// non-interned variant.
22594        #[prost(string, tag = "23")]
22595        Name(::prost::alloc::string::String),
22596    }
22597    /// A new value for a counter track. |track_uuid| should refer to a track with
22598    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22599    /// efficient encoding of counter values that are sampled at the beginning/end
22600    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22601    /// Counter values can optionally be encoded in as delta values (positive or
22602    /// negative) on each packet sequence (see CounterIncrementalBase).
22603    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22604    pub enum CounterValueField {
22605        #[prost(int64, tag = "30")]
22606        CounterValue(i64),
22607        #[prost(double, tag = "44")]
22608        DoubleCounterValue(f64),
22609    }
22610    /// An opaque identifier to correlate this slice with other slices that are
22611    /// considered part of the same logical operation, even if they are not
22612    /// causally connected. Examples uses of a correlation id might be the number
22613    /// of frame going through various stages of rendering in a GPU, the id for an
22614    /// RPC request going through a distributed system, or the id of a network
22615    /// request going through various stages of processing by the kernel.
22616    ///
22617    /// NOTE: if the events *are* causually connected, you probably want to use
22618    /// flows instead of OR in addition to correlation ids.
22619    ///
22620    /// UIs can use this identifier to visually link these slices, for instance,
22621    /// by assigning them a consistent color or highlighting the entire correlated
22622    /// set when one slice is hovered.
22623    ///
22624    /// Only one field within this 'oneof' should be set to define the correlation.
22625    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22626    pub enum CorrelationIdField {
22627        /// A 64-bit unsigned integer used as the correlation ID.
22628        ///
22629        /// Best for performance and compact traces if the identifier is naturally
22630        /// numerical or can be easily mapped to one by the trace producer.
22631        #[prost(uint64, tag = "52")]
22632        CorrelationId(u64),
22633        /// A string value used as the correlation ID.
22634        ///
22635        /// Offers maximum flexibility for human-readable or complex identifiers
22636        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
22637        /// size. For frequently repeated string identifiers, consider
22638        /// 'correlation_id_string_iid'.
22639        #[prost(string, tag = "53")]
22640        CorrelationIdStr(::prost::alloc::string::String),
22641        /// An interned string identifier (an IID) for correlation.
22642        ///
22643        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
22644        /// field within the packet sequence's InternedData. This approach combines
22645        /// the descriptiveness and uniqueness of strings with the efficiency of
22646        /// integer IDs for storage and comparison, especially for identifiers that
22647        /// repeat across many events.
22648        #[prost(uint64, tag = "54")]
22649        CorrelationIdStrIid(u64),
22650    }
22651    /// Callstack associated with this event. This captures the program stack at
22652    /// the time the event occurred, useful for understanding what code path led
22653    /// to the event.
22654    ///
22655    /// Two variants are supported:
22656    /// - callstack: Inline callstack data (simpler when trace size is not a
22657    ///    concern or callstacks are unique)
22658    /// - callstack_iid: Reference to an interned Callstack in InternedData
22659    ///    (efficient for repeated callstacks)
22660    ///
22661    /// Only one of these fields should be set.
22662    #[derive(Clone, PartialEq, ::prost::Oneof)]
22663    pub enum CallstackField {
22664        /// Inline callstack data. Use this for simplicity when interning is not
22665        /// needed (e.g., for unique callstacks or when trace size is not critical).
22666        #[prost(message, tag = "55")]
22667        Callstack(InlineCallstack),
22668        /// Reference to interned Callstack (see InternedData.callstacks).
22669        /// This is the efficient option when callstacks are repeated.
22670        ///
22671        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
22672        #[prost(uint64, tag = "56")]
22673        CallstackIid(u64),
22674    }
22675    /// This field is used only if the source location represents the function that
22676    /// executes during this event.
22677    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22678    pub enum SourceLocationField {
22679        /// Non-interned field.
22680        #[prost(message, tag = "33")]
22681        SourceLocation(super::SourceLocation),
22682        /// Interned field.
22683        #[prost(uint64, tag = "34")]
22684        SourceLocationIid(u64),
22685    }
22686    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22687    /// TracePacket instead.
22688    ///
22689    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22690    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22691    pub enum Timestamp {
22692        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22693        /// calculate the absolute timestamp value, sum up all delta values of the
22694        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22695        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22696        /// be positive.
22697        #[prost(int64, tag = "1")]
22698        TimestampDeltaUs(i64),
22699        /// Absolute value (e.g. a manually specified timestamp in the macro).
22700        /// This is a one-off value that does not affect delta timestamp computation
22701        /// in subsequent TrackEvents.
22702        #[prost(int64, tag = "16")]
22703        TimestampAbsoluteUs(i64),
22704    }
22705    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22706    /// encode thread time instead.
22707    ///
22708    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22709    /// microseconds.
22710    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22711    pub enum ThreadTime {
22712        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22713        /// calculate the absolute timestamp value, sum up all delta values of the
22714        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22715        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22716        /// be positive.
22717        #[prost(int64, tag = "2")]
22718        ThreadTimeDeltaUs(i64),
22719        /// This is a one-off absolute value that does not affect delta timestamp
22720        /// computation in subsequent TrackEvents.
22721        #[prost(int64, tag = "17")]
22722        ThreadTimeAbsoluteUs(i64),
22723    }
22724    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22725    /// encode thread instruction count instead.
22726    ///
22727    /// Value of the instruction counter for the current thread.
22728    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22729    pub enum ThreadInstructionCount {
22730        /// Same encoding as |thread_time| field above.
22731        #[prost(int64, tag = "8")]
22732        ThreadInstructionCountDelta(i64),
22733        #[prost(int64, tag = "20")]
22734        ThreadInstructionCountAbsolute(i64),
22735    }
22736}
22737/// Default values for fields of all TrackEvents on the same packet sequence.
22738/// Should be emitted as part of TracePacketDefaults whenever incremental state
22739/// is cleared. It's defined here because field IDs should match those of the
22740/// corresponding fields in TrackEvent.
22741#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22742pub struct TrackEventDefaults {
22743    #[prost(uint64, optional, tag = "11")]
22744    pub track_uuid: ::core::option::Option<u64>,
22745    #[prost(uint64, repeated, packed = "false", tag = "31")]
22746    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22747    #[prost(uint64, repeated, packed = "false", tag = "45")]
22748    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22749}
22750#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22751pub struct EventCategory {
22752    #[prost(uint64, optional, tag = "1")]
22753    pub iid: ::core::option::Option<u64>,
22754    #[prost(string, optional, tag = "2")]
22755    pub name: ::core::option::Option<::prost::alloc::string::String>,
22756}
22757#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22758pub struct EventName {
22759    #[prost(uint64, optional, tag = "1")]
22760    pub iid: ::core::option::Option<u64>,
22761    #[prost(string, optional, tag = "2")]
22762    pub name: ::core::option::Option<::prost::alloc::string::String>,
22763}
22764/// Message that contains new entries for the interning indices of a packet
22765/// sequence.
22766///
22767/// The writer will usually emit new entries in the same TracePacket that first
22768/// refers to them (since the last reset of interning state). They may also be
22769/// emitted proactively in advance of referring to them in later packets.
22770///
22771/// Next reserved id: 8 (up to 15).
22772/// Next id: 51.
22773///
22774/// TODO(eseckler): Replace iid fields inside interned messages with
22775/// map<iid, message> type fields in InternedData.
22776#[derive(Clone, PartialEq, ::prost::Message)]
22777pub struct InternedData {
22778    ///
22779    /// == STABLE PUBLIC API: TrackEvent ==
22780    ///
22781    /// Interning for the stable TrackEvent API (see trace_packet.proto and
22782    /// docs/instrumentation/track-events.md).
22783    #[prost(message, repeated, tag = "1")]
22784    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
22785    #[prost(message, repeated, tag = "2")]
22786    pub event_names: ::prost::alloc::vec::Vec<EventName>,
22787    #[prost(message, repeated, tag = "3")]
22788    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
22789    #[prost(message, repeated, tag = "27")]
22790    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<
22791        DebugAnnotationValueTypeName,
22792    >,
22793    /// Interned string values in the DebugAnnotation proto.
22794    #[prost(message, repeated, tag = "29")]
22795    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
22796    /// Interned correlation ids in track_event.
22797    #[prost(message, repeated, tag = "43")]
22798    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
22799    ///
22800    /// == STABLE PUBLIC API: Callstacks and symbolization ==
22801    ///
22802    /// Interned callstacks, frames, mappings and symbol strings. Referenced by the
22803    /// stable TrackEvent callstack fields (TrackEvent.callstack_iid) and by the
22804    /// StackSample API.
22805    ///
22806    /// Build IDs of exectuable files.
22807    #[prost(message, repeated, tag = "16")]
22808    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
22809    /// Paths to executable files.
22810    #[prost(message, repeated, tag = "17")]
22811    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
22812    /// Paths to source files.
22813    #[prost(message, repeated, tag = "18")]
22814    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
22815    /// Names of functions used in frames below.
22816    #[prost(message, repeated, tag = "5")]
22817    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
22818    /// Executable files mapped into processes.
22819    #[prost(message, repeated, tag = "19")]
22820    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22821    /// Frames of callstacks of a program.
22822    #[prost(message, repeated, tag = "6")]
22823    pub frames: ::prost::alloc::vec::Vec<Frame>,
22824    /// A callstack of a program.
22825    #[prost(message, repeated, tag = "7")]
22826    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22827    ///
22828    /// == STABLE PUBLIC API: StackSample ==
22829    ///
22830    /// Interned StackSample context and descriptors, referenced by iid from
22831    /// StackSample. See protos/perfetto/trace/profiling/stack_sample.proto.
22832    #[prost(message, repeated, tag = "48")]
22833    pub stack_sample_task_contexts: ::prost::alloc::vec::Vec<stack_sample::TaskContext>,
22834    #[prost(message, repeated, tag = "49")]
22835    pub stack_sample_execution_contexts: ::prost::alloc::vec::Vec<
22836        stack_sample::ExecutionContext,
22837    >,
22838    #[prost(message, repeated, tag = "50")]
22839    pub stack_sample_counter_descriptors: ::prost::alloc::vec::Vec<
22840        stack_sample::CounterDescriptor,
22841    >,
22842    #[prost(message, repeated, tag = "51")]
22843    pub stack_sample_async_context_descriptors: ::prost::alloc::vec::Vec<
22844        stack_sample::AsyncContextDescriptor,
22845    >,
22846    /// Interning for the non-stable TrackEvent arguments below the "NOT part of
22847    /// the stable public API" line in track_event.proto: source_location,
22848    /// log_message and chrome_histogram_sample (Chrome/Android internal).
22849    #[prost(message, repeated, tag = "4")]
22850    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
22851    #[prost(message, repeated, tag = "28")]
22852    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<
22853        UnsymbolizedSourceLocation,
22854    >,
22855    #[prost(message, repeated, tag = "20")]
22856    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
22857    #[prost(message, repeated, tag = "25")]
22858    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
22859    /// Additional Vulkan information sent in a VulkanMemoryEvent message
22860    #[prost(message, repeated, tag = "22")]
22861    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
22862    /// Graphics context of a render stage event.  This represent the GL
22863    /// context for an OpenGl app or the VkDevice for a Vulkan app.
22864    #[prost(message, repeated, tag = "23")]
22865    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
22866    /// Description of a GPU hardware queue or render stage.
22867    #[prost(message, repeated, tag = "24")]
22868    pub gpu_specifications: ::prost::alloc::vec::Vec<
22869        InternedGpuRenderStageSpecification,
22870    >,
22871    /// Description of GPU counters available in a data source.
22872    #[prost(message, repeated, tag = "47")]
22873    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
22874    /// This is set when FtraceConfig.symbolize_ksyms = true.
22875    /// The id of each symbol the number that will be reported in ftrace events
22876    /// like sched_block_reason.caller and is obtained from a monotonic counter.
22877    /// The same symbol can have different indexes in different bundles.
22878    /// This is is NOT the real address. This is to avoid disclosing KASLR through
22879    /// traces.
22880    #[prost(message, repeated, tag = "26")]
22881    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
22882    /// Interned name of a js function. We only intern js functions as there is a
22883    /// lot of duplication for them, but less so for other strings in the V8 data
22884    /// source.
22885    #[prost(message, repeated, tag = "31")]
22886    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
22887    /// Js functions can be emitted multiple times for various compilation tiers,
22888    /// so it makes sense to deduplicate all this.
22889    #[prost(message, repeated, tag = "32")]
22890    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
22891    /// Interned JS script (there is one associated with each JS function)
22892    #[prost(message, repeated, tag = "33")]
22893    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
22894    /// Interned Wasm script (there is one associated with each Wasm function)
22895    #[prost(message, repeated, tag = "34")]
22896    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
22897    /// Every V8 event is associated with an isolate, intern the isolate to remove
22898    /// duplication.
22899    #[prost(message, repeated, tag = "35")]
22900    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
22901}
22902/// A journald log event packet, collected from the Linux systemd journal.
22903/// Emitted by the "linux.systemd_journald" data source in traced_probes.
22904/// Next field id: 13, statistics starting at 20
22905#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22906pub struct SystemdJournaldEvent {
22907    /// _PID: PID of the process that wrote the log entry (trusted).
22908    #[prost(uint32, optional, tag = "1")]
22909    pub pid: ::core::option::Option<u32>,
22910    /// _TID: thread ID of the logging thread (trusted, set by journald for
22911    /// native journal protocol entries). Absent for syslog, stdout-piped, and
22912    /// kernel entries.
22913    #[prost(uint32, optional, tag = "2")]
22914    pub tid: ::core::option::Option<u32>,
22915    /// _UID: user ID of the process (trusted).
22916    #[prost(uint32, optional, tag = "3")]
22917    pub uid: ::core::option::Option<u32>,
22918    /// _GID: group ID of the process (trusted).
22919    #[prost(uint32, optional, tag = "4")]
22920    pub gid: ::core::option::Option<u32>,
22921    /// PRIORITY: syslog priority level 0 (EMERG) .. 7 (DEBUG).
22922    #[prost(uint32, optional, tag = "5")]
22923    pub prio: ::core::option::Option<u32>,
22924    /// SYSLOG_IDENTIFIER: program name / tag, set by the logging application.
22925    #[prost(string, optional, tag = "6")]
22926    pub tag: ::core::option::Option<::prost::alloc::string::String>,
22927    /// MESSAGE: the human-readable log message text.
22928    #[prost(string, optional, tag = "7")]
22929    pub message: ::core::option::Option<::prost::alloc::string::String>,
22930    /// _COMM: short process name as known to the kernel (trusted).
22931    #[prost(string, optional, tag = "8")]
22932    pub comm: ::core::option::Option<::prost::alloc::string::String>,
22933    /// _EXE: full executable path (trusted).
22934    #[prost(string, optional, tag = "9")]
22935    pub exe: ::core::option::Option<::prost::alloc::string::String>,
22936    /// _SYSTEMD_UNIT: the systemd unit that owns this process (trusted).
22937    #[prost(string, optional, tag = "10")]
22938    pub systemd_unit: ::core::option::Option<::prost::alloc::string::String>,
22939    /// _HOSTNAME: hostname of the machine (trusted).
22940    #[prost(string, optional, tag = "11")]
22941    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
22942    /// _TRANSPORT: how the entry was received by journald (trusted).
22943    /// Values: "audit", "driver", "syslog", "journal", "stdout", "kernel".
22944    #[prost(string, optional, tag = "12")]
22945    pub transport: ::core::option::Option<::prost::alloc::string::String>,
22946    /// These statistics emitted once on Flush()
22947    #[prost(uint64, optional, tag = "20")]
22948    pub num_total: ::core::option::Option<u64>,
22949    #[prost(uint64, optional, tag = "21")]
22950    pub num_failed: ::core::option::Option<u64>,
22951}
22952#[derive(Clone, PartialEq, ::prost::Message)]
22953pub struct MemoryTrackerSnapshot {
22954    /// Unique ID that represents the global memory dump.
22955    #[prost(uint64, optional, tag = "1")]
22956    pub global_dump_id: ::core::option::Option<u64>,
22957    #[prost(enumeration = "memory_tracker_snapshot::LevelOfDetail", optional, tag = "2")]
22958    pub level_of_detail: ::core::option::Option<i32>,
22959    #[prost(message, repeated, tag = "3")]
22960    pub process_memory_dumps: ::prost::alloc::vec::Vec<
22961        memory_tracker_snapshot::ProcessSnapshot,
22962    >,
22963}
22964/// Nested message and enum types in `MemoryTrackerSnapshot`.
22965pub mod memory_tracker_snapshot {
22966    /// Memory snapshot of a process. The snapshot contains memory data that is
22967    /// from 2 different sources, namely system stats and instrumentation stats.
22968    /// The system memory usage stats come from the OS based on standard API
22969    /// available in the platform to query memory usage. The instrumentation stats
22970    /// are added by instrumenting specific piece of code which tracks memory
22971    /// allocations and deallocations made by a small sub-system within the
22972    /// application.
22973    /// The system stats of the global memory snapshot are recorded as part of
22974    /// ProcessStats and SmapsPacket fields in trace packet with the same
22975    /// timestamp.
22976    #[derive(Clone, PartialEq, ::prost::Message)]
22977    pub struct ProcessSnapshot {
22978        /// Process ID of the process
22979        #[prost(int32, optional, tag = "1")]
22980        pub pid: ::core::option::Option<i32>,
22981        #[prost(message, repeated, tag = "2")]
22982        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
22983        #[prost(message, repeated, tag = "3")]
22984        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
22985    }
22986    /// Nested message and enum types in `ProcessSnapshot`.
22987    pub mod process_snapshot {
22988        /// A single node in the memory graph.
22989        #[derive(Clone, PartialEq, ::prost::Message)]
22990        pub struct MemoryNode {
22991            /// Unique ID of the node across all processes involved in the global
22992            /// memory dump. The ID is only unique within this particular global dump
22993            /// identified by GlobalMemoryDumpPacket.global_dump_id.
22994            #[prost(uint64, optional, tag = "1")]
22995            pub id: ::core::option::Option<u64>,
22996            /// Absolute name is a unique name for the memory node within the process
22997            /// with ProcessMemoryDump.pid. The name can contain multiple parts
22998            /// separated by '/', which traces the edges of the node from the root
22999            /// node.
23000            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
23001            /// node "buffer1" in a graph structure of:
23002            ///    root -> partition_allocator -> array_buffers -> buffer1.
23003            #[prost(string, optional, tag = "2")]
23004            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
23005            /// A weak node means that the instrumentation that added the current node
23006            /// is unsure about the existence of the actual memory. Unless a "strong"
23007            /// (non-weak is default) node that has an edge to the current node exists
23008            /// in the current global dump, the current node will be discarded.
23009            #[prost(bool, optional, tag = "3")]
23010            pub weak: ::core::option::Option<bool>,
23011            /// Size of the node in bytes, used to compute the effective size of the
23012            /// nodes without double counting.
23013            #[prost(uint64, optional, tag = "4")]
23014            pub size_bytes: ::core::option::Option<u64>,
23015            #[prost(message, repeated, tag = "5")]
23016            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
23017        }
23018        /// Nested message and enum types in `MemoryNode`.
23019        pub mod memory_node {
23020            /// Entries in the memory node that contain statistics and additional
23021            /// debuggable information about the memory. The size of the node is
23022            /// tracked separately in the |size_bytes| field.
23023            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23024            pub struct MemoryNodeEntry {
23025                #[prost(string, optional, tag = "1")]
23026                pub name: ::core::option::Option<::prost::alloc::string::String>,
23027                #[prost(enumeration = "memory_node_entry::Units", optional, tag = "2")]
23028                pub units: ::core::option::Option<i32>,
23029                /// Contains either one of uint64 or string value.
23030                #[prost(uint64, optional, tag = "3")]
23031                pub value_uint64: ::core::option::Option<u64>,
23032                #[prost(string, optional, tag = "4")]
23033                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
23034            }
23035            /// Nested message and enum types in `MemoryNodeEntry`.
23036            pub mod memory_node_entry {
23037                #[derive(
23038                    Clone,
23039                    Copy,
23040                    Debug,
23041                    PartialEq,
23042                    Eq,
23043                    Hash,
23044                    PartialOrd,
23045                    Ord,
23046                    ::prost::Enumeration
23047                )]
23048                #[repr(i32)]
23049                pub enum Units {
23050                    Unspecified = 0,
23051                    Bytes = 1,
23052                    Count = 2,
23053                }
23054                impl Units {
23055                    /// String value of the enum field names used in the ProtoBuf definition.
23056                    ///
23057                    /// The values are not transformed in any way and thus are considered stable
23058                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23059                    pub fn as_str_name(&self) -> &'static str {
23060                        match self {
23061                            Self::Unspecified => "UNSPECIFIED",
23062                            Self::Bytes => "BYTES",
23063                            Self::Count => "COUNT",
23064                        }
23065                    }
23066                    /// Creates an enum from field names used in the ProtoBuf definition.
23067                    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23068                        match value {
23069                            "UNSPECIFIED" => Some(Self::Unspecified),
23070                            "BYTES" => Some(Self::Bytes),
23071                            "COUNT" => Some(Self::Count),
23072                            _ => None,
23073                        }
23074                    }
23075                }
23076            }
23077        }
23078        /// A directed edge that connects any 2 nodes in the graph above. These are
23079        /// in addition to the inherent edges added due to the tree structure of the
23080        /// node's absolute names.
23081        /// Node with id |source_id| owns the node with id |target_id|, and has the
23082        /// effect of attributing the memory usage of target to source. |importance|
23083        /// is optional and relevant only for the cases of co-ownership, where it
23084        /// acts as a z-index: the owner with the highest importance will be
23085        /// attributed target's memory.
23086        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23087        pub struct MemoryEdge {
23088            #[prost(uint64, optional, tag = "1")]
23089            pub source_id: ::core::option::Option<u64>,
23090            #[prost(uint64, optional, tag = "2")]
23091            pub target_id: ::core::option::Option<u64>,
23092            #[prost(uint32, optional, tag = "3")]
23093            pub importance: ::core::option::Option<u32>,
23094            #[prost(bool, optional, tag = "4")]
23095            pub overridable: ::core::option::Option<bool>,
23096        }
23097    }
23098    #[derive(
23099        Clone,
23100        Copy,
23101        Debug,
23102        PartialEq,
23103        Eq,
23104        Hash,
23105        PartialOrd,
23106        Ord,
23107        ::prost::Enumeration
23108    )]
23109    #[repr(i32)]
23110    pub enum LevelOfDetail {
23111        DetailFull = 0,
23112        DetailLight = 1,
23113        DetailBackground = 2,
23114    }
23115    impl LevelOfDetail {
23116        /// String value of the enum field names used in the ProtoBuf definition.
23117        ///
23118        /// The values are not transformed in any way and thus are considered stable
23119        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23120        pub fn as_str_name(&self) -> &'static str {
23121            match self {
23122                Self::DetailFull => "DETAIL_FULL",
23123                Self::DetailLight => "DETAIL_LIGHT",
23124                Self::DetailBackground => "DETAIL_BACKGROUND",
23125            }
23126        }
23127        /// Creates an enum from field names used in the ProtoBuf definition.
23128        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23129            match value {
23130                "DETAIL_FULL" => Some(Self::DetailFull),
23131                "DETAIL_LIGHT" => Some(Self::DetailLight),
23132                "DETAIL_BACKGROUND" => Some(Self::DetailBackground),
23133                _ => None,
23134            }
23135        }
23136    }
23137}
23138/// Emitted by the tracing service to record a state change of another tracing
23139/// session that was active while this trace was being recorded. Opt-in via
23140/// TraceConfig.BuiltinDataSource.enable_concurrent_session_events.
23141///
23142/// One packet per state change; its time is carried by the enclosing
23143/// TracePacket's timestamp (CLOCK_BOOTTIME). Events of the same session share
23144/// the same |session_id|. The trace UUID is deliberately not included.
23145///
23146/// Introduced in v58 / Android 26Q3+.
23147#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23148pub struct ConcurrentSessionEvent {
23149    /// The state the session transitioned to at this timestamp.
23150    #[prost(enumeration = "concurrent_session_event::State", optional, tag = "1")]
23151    pub state: ::core::option::Option<i32>,
23152    /// unique_session_name from the session's TraceConfig. May be empty.
23153    #[prost(string, optional, tag = "2")]
23154    pub session_name: ::core::option::Option<::prost::alloc::string::String>,
23155    /// Service-local monotonic counter identifying the session. Shared by all
23156    /// state changes of one session, never reused within a service instance.
23157    #[prost(uint64, optional, tag = "3")]
23158    pub session_id: ::core::option::Option<u64>,
23159    /// Unix uid of the consumer that started the session.
23160    #[prost(int32, optional, tag = "4")]
23161    pub consumer_uid: ::core::option::Option<i32>,
23162    /// Number of data sources in the session at the time of the state change.
23163    #[prost(uint32, optional, tag = "5")]
23164    pub num_data_sources: ::core::option::Option<u32>,
23165}
23166/// Nested message and enum types in `ConcurrentSessionEvent`.
23167pub mod concurrent_session_event {
23168    /// Mirrors the tracing service's internal session state machine
23169    /// (TracingSession::State in the service): keep these two enums in sync.
23170    /// These values are part of the trace wire format and must stay stable: never
23171    /// renumber or reuse an existing value, only append new ones at the end.
23172    #[derive(
23173        Clone,
23174        Copy,
23175        Debug,
23176        PartialEq,
23177        Eq,
23178        Hash,
23179        PartialOrd,
23180        Ord,
23181        ::prost::Enumeration
23182    )]
23183    #[repr(i32)]
23184    pub enum State {
23185        Unspecified = 0,
23186        /// Not recording (initial and final state).
23187        Disabled = 1,
23188        /// Configured but waiting for a start signal (e.g. a trigger).
23189        Configured = 2,
23190        /// Actively recording data.
23191        Started = 3,
23192        /// Stopping, waiting for data sources to ack and drain their final data.
23193        DisablingWaitingStopAcks = 4,
23194        /// A read-only snapshot of another session, created by a clone operation.
23195        ClonedReadOnly = 5,
23196    }
23197    impl State {
23198        /// String value of the enum field names used in the ProtoBuf definition.
23199        ///
23200        /// The values are not transformed in any way and thus are considered stable
23201        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23202        pub fn as_str_name(&self) -> &'static str {
23203            match self {
23204                Self::Unspecified => "STATE_UNSPECIFIED",
23205                Self::Disabled => "STATE_DISABLED",
23206                Self::Configured => "STATE_CONFIGURED",
23207                Self::Started => "STATE_STARTED",
23208                Self::DisablingWaitingStopAcks => "STATE_DISABLING_WAITING_STOP_ACKS",
23209                Self::ClonedReadOnly => "STATE_CLONED_READ_ONLY",
23210            }
23211        }
23212        /// Creates an enum from field names used in the ProtoBuf definition.
23213        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23214            match value {
23215                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
23216                "STATE_DISABLED" => Some(Self::Disabled),
23217                "STATE_CONFIGURED" => Some(Self::Configured),
23218                "STATE_STARTED" => Some(Self::Started),
23219                "STATE_DISABLING_WAITING_STOP_ACKS" => {
23220                    Some(Self::DisablingWaitingStopAcks)
23221                }
23222                "STATE_CLONED_READ_ONLY" => Some(Self::ClonedReadOnly),
23223                _ => None,
23224            }
23225        }
23226    }
23227}
23228/// Used to trace the execution of perfetto itself.
23229#[derive(Clone, PartialEq, ::prost::Message)]
23230pub struct PerfettoMetatrace {
23231    /// Only when using |event_id|.
23232    #[prost(uint64, optional, tag = "3")]
23233    pub event_duration_ns: ::core::option::Option<u64>,
23234    /// Only when using |counter_id|.
23235    #[prost(int32, optional, tag = "4")]
23236    pub counter_value: ::core::option::Option<i32>,
23237    /// ID of the thread that emitted the event.
23238    #[prost(uint32, optional, tag = "5")]
23239    pub thread_id: ::core::option::Option<u32>,
23240    /// If true the meta-tracing ring buffer had overruns and hence some data is
23241    /// missing from this point.
23242    #[prost(bool, optional, tag = "6")]
23243    pub has_overruns: ::core::option::Option<bool>,
23244    /// Args for the event.
23245    #[prost(message, repeated, tag = "7")]
23246    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
23247    #[prost(message, repeated, tag = "10")]
23248    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
23249    /// See base/metatrace_events.h for definitions.
23250    #[prost(oneof = "perfetto_metatrace::RecordType", tags = "1, 2, 8, 11, 9")]
23251    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
23252}
23253/// Nested message and enum types in `PerfettoMetatrace`.
23254pub mod perfetto_metatrace {
23255    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23256    pub struct Arg {
23257        #[prost(oneof = "arg::KeyOrInternedKey", tags = "1, 3")]
23258        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
23259        #[prost(oneof = "arg::ValueOrInternedValue", tags = "2, 4")]
23260        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
23261    }
23262    /// Nested message and enum types in `Arg`.
23263    pub mod arg {
23264        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23265        pub enum KeyOrInternedKey {
23266            #[prost(string, tag = "1")]
23267            Key(::prost::alloc::string::String),
23268            #[prost(uint64, tag = "3")]
23269            KeyIid(u64),
23270        }
23271        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23272        pub enum ValueOrInternedValue {
23273            #[prost(string, tag = "2")]
23274            Value(::prost::alloc::string::String),
23275            #[prost(uint64, tag = "4")]
23276            ValueIid(u64),
23277        }
23278    }
23279    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
23280    /// |value_iid| above.
23281    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23282    pub struct InternedString {
23283        #[prost(uint64, optional, tag = "1")]
23284        pub iid: ::core::option::Option<u64>,
23285        #[prost(string, optional, tag = "2")]
23286        pub value: ::core::option::Option<::prost::alloc::string::String>,
23287    }
23288    /// See base/metatrace_events.h for definitions.
23289    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23290    pub enum RecordType {
23291        #[prost(uint32, tag = "1")]
23292        EventId(u32),
23293        #[prost(uint32, tag = "2")]
23294        CounterId(u32),
23295        /// For trace processor metatracing.
23296        #[prost(string, tag = "8")]
23297        EventName(::prost::alloc::string::String),
23298        #[prost(uint64, tag = "11")]
23299        EventNameIid(u64),
23300        #[prost(string, tag = "9")]
23301        CounterName(::prost::alloc::string::String),
23302    }
23303}
23304#[derive(Clone, PartialEq, ::prost::Message)]
23305pub struct TraceProvenance {
23306    #[prost(message, repeated, tag = "2")]
23307    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
23308}
23309/// Nested message and enum types in `TraceProvenance`.
23310pub mod trace_provenance {
23311    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23312    pub struct Sequence {
23313        /// The trusted_packet_sequence_id reported in each TracePacket.
23314        #[prost(uint32, optional, tag = "1")]
23315        pub id: ::core::option::Option<u32>,
23316        /// ID of the producer, as per Producer.id.
23317        #[prost(int32, optional, tag = "2")]
23318        pub producer_id: ::core::option::Option<i32>,
23319    }
23320    /// Describes a trace buffer and all the sequences writing to it.
23321    #[derive(Clone, PartialEq, ::prost::Message)]
23322    pub struct Buffer {
23323        #[prost(message, repeated, tag = "1")]
23324        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
23325    }
23326}
23327/// Events emitted by the tracing service.
23328/// Next id: 12.
23329#[derive(Clone, PartialEq, ::prost::Message)]
23330pub struct TracingServiceEvent {
23331    /// When each of the following booleans are set to true, they report the
23332    /// point in time (through TracePacket's timestamp) where the condition
23333    /// they describe happened.
23334    /// The order of the booleans below matches the timestamp ordering
23335    /// they would generally be expected to have.
23336    #[prost(
23337        oneof = "tracing_service_event::EventType",
23338        tags = "2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11"
23339    )]
23340    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
23341}
23342/// Nested message and enum types in `TracingServiceEvent`.
23343pub mod tracing_service_event {
23344    #[derive(Clone, PartialEq, ::prost::Message)]
23345    pub struct DataSources {
23346        #[prost(message, repeated, tag = "1")]
23347        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
23348    }
23349    /// Nested message and enum types in `DataSources`.
23350    pub mod data_sources {
23351        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23352        pub struct DataSource {
23353            #[prost(string, optional, tag = "1")]
23354            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
23355            #[prost(string, optional, tag = "2")]
23356            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
23357        }
23358    }
23359    /// When each of the following booleans are set to true, they report the
23360    /// point in time (through TracePacket's timestamp) where the condition
23361    /// they describe happened.
23362    /// The order of the booleans below matches the timestamp ordering
23363    /// they would generally be expected to have.
23364    #[derive(Clone, PartialEq, ::prost::Oneof)]
23365    pub enum EventType {
23366        /// Emitted when we start tracing and specifically, this will be before any
23367        /// producer is notified about the existence of this trace. This is always
23368        /// emitted before the all_data_sources_started event. This event is also
23369        /// guaranteed to be seen (byte-offset wise) before any data packets from
23370        /// producers.
23371        #[prost(bool, tag = "2")]
23372        TracingStarted(bool),
23373        /// Emitted after all data sources saw the start event and ACKed it.
23374        /// This identifies the point in time when it's safe to assume that all data
23375        /// sources have been recording events.
23376        #[prost(bool, tag = "1")]
23377        AllDataSourcesStarted(bool),
23378        /// Emitted when a flush is started.
23379        #[prost(bool, tag = "9")]
23380        FlushStarted(bool),
23381        /// Emitted when all data sources have been flushed successfully or with an
23382        /// error (including timeouts). This can generally happen many times over the
23383        /// course of the trace.
23384        #[prost(bool, tag = "3")]
23385        AllDataSourcesFlushed(bool),
23386        /// Emitted when reading back the central tracing buffers has been completed.
23387        /// If |write_into_file| is specified, this can happen many times over the
23388        /// course of the trace.
23389        #[prost(bool, tag = "4")]
23390        ReadTracingBuffersCompleted(bool),
23391        /// Emitted after tracing has been disabled and specifically, this will be
23392        /// after all packets from producers have been included in the central
23393        /// tracing buffer.
23394        #[prost(bool, tag = "5")]
23395        TracingDisabled(bool),
23396        /// Emitted if perfetto --save-for-bugreport was invoked while the current
23397        /// tracing session was running and it had the highest bugreport_score. In
23398        /// this case the original consumer will see a nearly empty trace, because
23399        /// the contents are routed onto the bugreport file. This event flags the
23400        /// situation explicitly. Traces that contain this marker should be discarded
23401        /// by test infrastructures / pipelines.
23402        /// Deprecated since Android U, where --save-for-bugreport uses
23403        /// non-destructive cloning.
23404        #[prost(bool, tag = "6")]
23405        SeizedForBugreport(bool),
23406        /// Emitted when not all data sources in all producers reply to a start
23407        /// request after some time.
23408        #[prost(message, tag = "7")]
23409        SlowStartingDataSources(DataSources),
23410        /// Emitted when the last flush request has failed. Lists data sources that
23411        /// did not reply on time.
23412        #[prost(message, tag = "8")]
23413        LastFlushSlowDataSources(DataSources),
23414        /// If this was a cloned tracing session, emitted when the tracing serice
23415        /// started the clone operation.
23416        #[prost(bool, tag = "10")]
23417        CloneStarted(bool),
23418        /// If this was a cloned tracing session, emitted when the tracing service
23419        /// finished the clone operation (for a specific buffer).
23420        #[prost(uint32, tag = "11")]
23421        BufferCloned(u32),
23422    }
23423}
23424/// Energy consumer based on aidl class:
23425/// android.hardware.power.stats.EnergyConsumer.
23426#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23427pub struct AndroidEnergyConsumer {
23428    /// Unique ID of this energy consumer.  Matches the ID in a
23429    /// AndroidEnergyEstimationBreakdown.
23430    #[prost(int32, optional, tag = "1")]
23431    pub energy_consumer_id: ::core::option::Option<i32>,
23432    /// For a group of energy consumers of the same logical type, sorting by
23433    /// ordinal gives their physical order. Ordinals must be consecutive integers
23434    /// starting from 0.
23435    #[prost(int32, optional, tag = "2")]
23436    pub ordinal: ::core::option::Option<i32>,
23437    /// Type of this energy consumer.
23438    #[prost(string, optional, tag = "3")]
23439    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23440    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
23441    /// framework.
23442    #[prost(string, optional, tag = "4")]
23443    pub name: ::core::option::Option<::prost::alloc::string::String>,
23444}
23445#[derive(Clone, PartialEq, ::prost::Message)]
23446pub struct AndroidEnergyConsumerDescriptor {
23447    #[prost(message, repeated, tag = "1")]
23448    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
23449}
23450/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
23451/// This proto represents the aidl class:
23452/// android.hardware.power.stats.EnergyConsumerResult.
23453#[derive(Clone, PartialEq, ::prost::Message)]
23454pub struct AndroidEnergyEstimationBreakdown {
23455    /// The first trace packet of each session should include a energy consumer
23456    /// descriptor.
23457    #[prost(message, optional, tag = "1")]
23458    pub energy_consumer_descriptor: ::core::option::Option<
23459        AndroidEnergyConsumerDescriptor,
23460    >,
23461    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
23462    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
23463    /// should be sent at the beginning of a trace.
23464    #[prost(int32, optional, tag = "2")]
23465    pub energy_consumer_id: ::core::option::Option<i32>,
23466    /// Total accumulated energy since boot in microwatt-seconds (uWs)
23467    #[prost(int64, optional, tag = "3")]
23468    pub energy_uws: ::core::option::Option<i64>,
23469    /// Optional attributed energy per Android ID / Linux UID for this
23470    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
23471    /// to total accumulated energy.
23472    #[prost(message, repeated, tag = "4")]
23473    pub per_uid_breakdown: ::prost::alloc::vec::Vec<
23474        android_energy_estimation_breakdown::EnergyUidBreakdown,
23475    >,
23476}
23477/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
23478pub mod android_energy_estimation_breakdown {
23479    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23480    pub struct EnergyUidBreakdown {
23481        /// Android ID/Linux UID, the accumulated energy is attributed to.
23482        #[prost(int32, optional, tag = "1")]
23483        pub uid: ::core::option::Option<i32>,
23484        /// Accumulated energy since boot in microwatt-seconds (uWs).
23485        #[prost(int64, optional, tag = "2")]
23486        pub energy_uws: ::core::option::Option<i64>,
23487    }
23488}
23489#[derive(Clone, PartialEq, ::prost::Message)]
23490pub struct EntityStateResidency {
23491    /// This is only emitted at the beginning of the trace.
23492    #[prost(message, repeated, tag = "1")]
23493    pub power_entity_state: ::prost::alloc::vec::Vec<
23494        entity_state_residency::PowerEntityState,
23495    >,
23496    #[prost(message, repeated, tag = "2")]
23497    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
23498}
23499/// Nested message and enum types in `EntityStateResidency`.
23500pub mod entity_state_residency {
23501    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23502    pub struct PowerEntityState {
23503        /// Index corresponding to the entity
23504        #[prost(int32, optional, tag = "1")]
23505        pub entity_index: ::core::option::Option<i32>,
23506        /// Index corresponding to the state
23507        #[prost(int32, optional, tag = "2")]
23508        pub state_index: ::core::option::Option<i32>,
23509        /// Name of the entity. This is device-specific, determined by the PowerStats
23510        /// HAL, and cannot be configured by the user. An example would be
23511        /// "Bluetooth".
23512        #[prost(string, optional, tag = "3")]
23513        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
23514        /// Name of the state. This is device-specific, determined by the PowerStats
23515        /// HAL, and cannot be configured by the user. An example would be
23516        /// "Active".
23517        #[prost(string, optional, tag = "4")]
23518        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
23519    }
23520    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23521    pub struct StateResidency {
23522        /// Index corresponding to PowerEntityState.entity_index
23523        #[prost(int32, optional, tag = "1")]
23524        pub entity_index: ::core::option::Option<i32>,
23525        /// Index corresponding to PowerEntityState.state_index
23526        #[prost(int32, optional, tag = "2")]
23527        pub state_index: ::core::option::Option<i32>,
23528        /// Time since boot that this entity has been in this state
23529        #[prost(uint64, optional, tag = "3")]
23530        pub total_time_in_state_ms: ::core::option::Option<u64>,
23531        /// Total number of times since boot that the entity has entered this state
23532        #[prost(uint64, optional, tag = "4")]
23533        pub total_state_entry_count: ::core::option::Option<u64>,
23534        /// Timestamp of the last time the entity entered this state
23535        #[prost(uint64, optional, tag = "5")]
23536        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
23537    }
23538}
23539#[derive(Clone, PartialEq, ::prost::Message)]
23540pub struct BatteryCounters {
23541    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
23542    #[prost(int64, optional, tag = "1")]
23543    pub charge_counter_uah: ::core::option::Option<i64>,
23544    /// Remaining battery capacity percentage of total capacity
23545    #[prost(float, optional, tag = "2")]
23546    pub capacity_percent: ::core::option::Option<f32>,
23547    /// Instantaneous battery current in microamperes(µA).
23548    /// Negative values indicate current being drained from the battery and
23549    /// positive values indicate current feeding the battery from a charge source
23550    /// (USB).
23551    ///
23552    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
23553    #[prost(int64, optional, tag = "3")]
23554    pub current_ua: ::core::option::Option<i64>,
23555    /// Instantaneous battery current in microamperes(µA).
23556    #[prost(int64, optional, tag = "4")]
23557    pub current_avg_ua: ::core::option::Option<i64>,
23558    /// Battery name, emitted only on multiple batteries.
23559    #[prost(string, optional, tag = "5")]
23560    pub name: ::core::option::Option<::prost::alloc::string::String>,
23561    /// Battery capacity in microwatt-hours(µWh).
23562    #[prost(int64, optional, tag = "6")]
23563    pub energy_counter_uwh: ::core::option::Option<i64>,
23564    /// Battery voltage in microvolts(µV).
23565    #[prost(int64, optional, tag = "7")]
23566    pub voltage_uv: ::core::option::Option<i64>,
23567}
23568#[derive(Clone, PartialEq, ::prost::Message)]
23569pub struct PowerRails {
23570    /// This is only emitted at the beginning of the trace.
23571    #[prost(message, repeated, tag = "1")]
23572    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
23573    #[prost(message, repeated, tag = "2")]
23574    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
23575    /// A unique session id that can be used to match energy data to sets of
23576    /// descriptors. The indices used by rail descriptors and energy data packets
23577    /// are meant to be unique to a given session uuid. When multiple data sources
23578    /// are running in parallel, each data source should use a unique id.
23579    #[prost(uint64, optional, tag = "3")]
23580    pub session_uuid: ::core::option::Option<u64>,
23581}
23582/// Nested message and enum types in `PowerRails`.
23583pub mod power_rails {
23584    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23585    pub struct RailDescriptor {
23586        /// Index corresponding to the rail
23587        #[prost(uint32, optional, tag = "1")]
23588        pub index: ::core::option::Option<u32>,
23589        /// Name of the rail
23590        #[prost(string, optional, tag = "2")]
23591        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
23592        /// Name of the subsystem to which this rail belongs
23593        #[prost(string, optional, tag = "3")]
23594        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
23595        /// Hardware sampling rate (Hz).
23596        #[prost(uint32, optional, tag = "4")]
23597        pub sampling_rate: ::core::option::Option<u32>,
23598    }
23599    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23600    pub struct EnergyData {
23601        /// Index corresponding to RailDescriptor.index
23602        #[prost(uint32, optional, tag = "1")]
23603        pub index: ::core::option::Option<u32>,
23604        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
23605        #[prost(uint64, optional, tag = "2")]
23606        pub timestamp_ms: ::core::option::Option<u64>,
23607        /// Accumulated energy since device boot in microwatt-seconds (uWs).
23608        #[prost(uint64, optional, tag = "3")]
23609        pub energy: ::core::option::Option<u64>,
23610    }
23611}
23612#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23613pub struct JavaFrame {
23614    #[prost(string, optional, tag = "1")]
23615    pub method_name: ::core::option::Option<::prost::alloc::string::String>,
23616    #[prost(string, optional, tag = "2")]
23617    pub source_file: ::core::option::Option<::prost::alloc::string::String>,
23618    #[prost(int32, optional, tag = "3")]
23619    pub line_number: ::core::option::Option<i32>,
23620}
23621#[derive(Clone, PartialEq, ::prost::Message)]
23622pub struct JavaStack {
23623    #[prost(message, repeated, tag = "1")]
23624    pub frames: ::prost::alloc::vec::Vec<JavaFrame>,
23625}
23626#[derive(Clone, PartialEq, ::prost::Message)]
23627pub struct ArtProcessMetadata {
23628    #[prost(int32, optional, tag = "1")]
23629    pub pid: ::core::option::Option<i32>,
23630    #[prost(int32, optional, tag = "2")]
23631    pub uid: ::core::option::Option<i32>,
23632    /// /proc/self/cmdline argv0
23633    #[prost(string, optional, tag = "3")]
23634    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23635    /// Set by VMRuntime.setProcessPackageName
23636    #[prost(string, optional, tag = "4")]
23637    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
23638    /// OutOfMemoryError details (if heap dump was triggered by an OOM)
23639    /// The size of the allocation that ended up failing with OOME
23640    #[prost(uint64, optional, tag = "5")]
23641    pub oom_allocation_size: ::core::option::Option<u64>,
23642    /// Amount of free memory until the runtime would need to grow the heap
23643    #[prost(uint64, optional, tag = "6")]
23644    pub oom_total_bytes_free: ::core::option::Option<u64>,
23645    /// Amount of memory remaining until the max heap size supported
23646    #[prost(uint64, optional, tag = "7")]
23647    pub oom_free_bytes_until_oom: ::core::option::Option<u64>,
23648    /// Stacktrace for the thread doing the failing allocation
23649    #[prost(message, optional, tag = "8")]
23650    pub oom_thread_java_stack: ::core::option::Option<JavaStack>,
23651    /// Full OOME exception message
23652    #[prost(string, optional, tag = "9")]
23653    pub oom_error_msg: ::core::option::Option<::prost::alloc::string::String>,
23654}
23655#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23656pub struct ObfuscatedMember {
23657    /// This is the obfuscated field name relative to the class containing the
23658    /// ObfuscatedMember.
23659    #[prost(string, optional, tag = "1")]
23660    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23661    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
23662    /// field name including its class. Otherwise, this is this the unqualified
23663    /// deobfuscated field name relative to the class containing this
23664    /// ObfuscatedMember.
23665    #[prost(string, optional, tag = "2")]
23666    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23667    /// R8 inline method support: line number ranges for disambiguation.
23668    /// When multiple methods map to the same obfuscated name, the line number
23669    /// from the stack frame is used to select the correct mapping.
23670    ///
23671    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
23672    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
23673    /// - source_line_start/end = 10:12 (line range in original source)
23674    ///
23675    /// Methods with the same obfuscated_name and overlapping obfuscated line
23676    /// ranges form an inline chain, ordered innermost (inlined) first.
23677    #[prost(uint32, optional, tag = "3")]
23678    pub obfuscated_line_start: ::core::option::Option<u32>,
23679    #[prost(uint32, optional, tag = "4")]
23680    pub obfuscated_line_end: ::core::option::Option<u32>,
23681    #[prost(uint32, optional, tag = "5")]
23682    pub source_line_start: ::core::option::Option<u32>,
23683    #[prost(uint32, optional, tag = "6")]
23684    pub source_line_end: ::core::option::Option<u32>,
23685}
23686#[derive(Clone, PartialEq, ::prost::Message)]
23687pub struct ObfuscatedClass {
23688    #[prost(string, optional, tag = "1")]
23689    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23690    #[prost(string, optional, tag = "2")]
23691    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23692    /// fields.
23693    #[prost(message, repeated, tag = "3")]
23694    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23695    #[prost(message, repeated, tag = "4")]
23696    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23697    #[prost(message, optional, tag = "5")]
23698    pub merged_classes: ::core::option::Option<obfuscated_class::MergedClasses>,
23699}
23700/// Nested message and enum types in `ObfuscatedClass`.
23701pub mod obfuscated_class {
23702    /// Information about a single class merged by optimization into this
23703    /// obfuscated class.
23704    #[derive(Clone, PartialEq, ::prost::Message)]
23705    pub struct MergedClass {
23706        #[prost(string, optional, tag = "1")]
23707        pub name: ::core::option::Option<::prost::alloc::string::String>,
23708        #[prost(int32, optional, tag = "2")]
23709        pub class_id: ::core::option::Option<i32>,
23710        #[prost(message, optional, tag = "3")]
23711        pub merged_classes: ::core::option::Option<MergedClasses>,
23712    }
23713    /// Set of classes merged into this obfuscated class by optimization.
23714    #[derive(Clone, PartialEq, ::prost::Message)]
23715    pub struct MergedClasses {
23716        #[prost(string, optional, tag = "1")]
23717        pub class_id_field_name: ::core::option::Option<::prost::alloc::string::String>,
23718        #[prost(message, repeated, tag = "2")]
23719        pub merged_classes: ::prost::alloc::vec::Vec<MergedClass>,
23720    }
23721}
23722#[derive(Clone, PartialEq, ::prost::Message)]
23723pub struct DeobfuscationMapping {
23724    #[prost(string, optional, tag = "1")]
23725    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
23726    #[prost(int64, optional, tag = "2")]
23727    pub version_code: ::core::option::Option<i64>,
23728    #[prost(message, repeated, tag = "3")]
23729    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
23730}
23731/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
23732/// involve more than one ProfilePacket if the snapshot is big (when |continued|
23733/// is true). The cardinality and grouping is as follows:
23734/// A ProfilePacket contains:
23735///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
23736///     one heap per process (the main malloc/free heap), but there can be more if
23737///     the process is using the heapprofd API to profile custom allocators.
23738///   - Globally interned strings, mappings and frames (to allow de-duplicating
23739///     frames/mapping in common between different processes).
23740/// A ProcessHeapSamples contains:
23741///   - The process and heap identifier.
23742///   - A number of HeapSample, one for each callsite that had some alloc/frees.
23743///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
23744/// A HeapSample contains statistics about callsites:
23745///   - Total number of bytes allocated and freed from that callsite.
23746///   - Total number of alloc/free calls sampled.
23747///   - Stats at the local maximum when dump_at_max = true.
23748/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
23749#[derive(Clone, PartialEq, ::prost::Message)]
23750pub struct ProfilePacket {
23751    /// The following interning tables are only used in Android version Q.
23752    /// In newer versions, these tables are in InternedData
23753    /// (see protos/perfetto/trace/interned_data) and are shared across
23754    /// multiple ProfilePackets.
23755    /// For backwards compatibility, consumers need to first look up interned
23756    /// data in the tables within the ProfilePacket, and then, if they are empty,
23757    /// look up in the InternedData instead.
23758    #[prost(message, repeated, tag = "1")]
23759    pub strings: ::prost::alloc::vec::Vec<InternedString>,
23760    #[prost(message, repeated, tag = "4")]
23761    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
23762    #[prost(message, repeated, tag = "2")]
23763    pub frames: ::prost::alloc::vec::Vec<Frame>,
23764    #[prost(message, repeated, tag = "3")]
23765    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
23766    #[prost(message, repeated, tag = "5")]
23767    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
23768    /// If this is true, the next ProfilePacket in this package_sequence_id is a
23769    /// continuation of this one.
23770    /// To get all samples for a process, accummulate its
23771    /// ProcessHeapSamples.samples until you see continued=false.
23772    #[prost(bool, optional, tag = "6")]
23773    pub continued: ::core::option::Option<bool>,
23774    /// Index of this ProfilePacket on its package_sequence_id. Can be used
23775    /// to detect dropped data.
23776    /// Verify these are consecutive.
23777    #[prost(uint64, optional, tag = "7")]
23778    pub index: ::core::option::Option<u64>,
23779}
23780/// Nested message and enum types in `ProfilePacket`.
23781pub mod profile_packet {
23782    /// Next ID: 9
23783    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23784    pub struct HeapSample {
23785        #[prost(uint64, optional, tag = "1")]
23786        pub callstack_id: ::core::option::Option<u64>,
23787        /// bytes allocated at this callstack.
23788        #[prost(uint64, optional, tag = "2")]
23789        pub self_allocated: ::core::option::Option<u64>,
23790        /// bytes allocated at this callstack that have been freed.
23791        #[prost(uint64, optional, tag = "3")]
23792        pub self_freed: ::core::option::Option<u64>,
23793        /// Bytes allocated by this callstack but not freed at the time the malloc
23794        /// heap usage of this process was maximal. This is only set if dump_at_max
23795        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
23796        /// self_idle will not be set.
23797        #[prost(uint64, optional, tag = "8")]
23798        pub self_max: ::core::option::Option<u64>,
23799        /// Number of allocations that were sampled at this callstack but not freed
23800        /// at the time the malloc heap usage of this process was maximal. This is
23801        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
23802        /// self_allocated, self_freed and self_idle will not be set.
23803        #[prost(uint64, optional, tag = "9")]
23804        pub self_max_count: ::core::option::Option<u64>,
23805        /// timestamp \[opt\]
23806        #[prost(uint64, optional, tag = "4")]
23807        pub timestamp: ::core::option::Option<u64>,
23808        /// Number of allocations that were sampled at this callstack.
23809        #[prost(uint64, optional, tag = "5")]
23810        pub alloc_count: ::core::option::Option<u64>,
23811        /// Number of allocations that were sampled at this callstack that have been
23812        /// freed.
23813        #[prost(uint64, optional, tag = "6")]
23814        pub free_count: ::core::option::Option<u64>,
23815    }
23816    #[derive(Clone, PartialEq, ::prost::Message)]
23817    pub struct Histogram {
23818        #[prost(message, repeated, tag = "1")]
23819        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
23820    }
23821    /// Nested message and enum types in `Histogram`.
23822    pub mod histogram {
23823        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23824        pub struct Bucket {
23825            /// This bucket counts values from the previous bucket's (or -infinity if
23826            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
23827            /// (exclusive).
23828            #[prost(uint64, optional, tag = "1")]
23829            pub upper_limit: ::core::option::Option<u64>,
23830            /// This is the highest bucket. This is set instead of the upper_limit. Any
23831            /// values larger or equal to the previous bucket's upper_limit are counted
23832            /// in this bucket.
23833            #[prost(bool, optional, tag = "2")]
23834            pub max_bucket: ::core::option::Option<bool>,
23835            /// Number of values that fall into this range.
23836            #[prost(uint64, optional, tag = "3")]
23837            pub count: ::core::option::Option<u64>,
23838        }
23839    }
23840    #[derive(Clone, PartialEq, ::prost::Message)]
23841    pub struct ProcessStats {
23842        #[prost(uint64, optional, tag = "1")]
23843        pub unwinding_errors: ::core::option::Option<u64>,
23844        #[prost(uint64, optional, tag = "2")]
23845        pub heap_samples: ::core::option::Option<u64>,
23846        #[prost(uint64, optional, tag = "3")]
23847        pub map_reparses: ::core::option::Option<u64>,
23848        #[prost(message, optional, tag = "4")]
23849        pub unwinding_time_us: ::core::option::Option<Histogram>,
23850        #[prost(uint64, optional, tag = "5")]
23851        pub total_unwinding_time_us: ::core::option::Option<u64>,
23852        #[prost(uint64, optional, tag = "6")]
23853        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
23854    }
23855    #[derive(Clone, PartialEq, ::prost::Message)]
23856    pub struct ProcessHeapSamples {
23857        #[prost(uint64, optional, tag = "1")]
23858        pub pid: ::core::option::Option<u64>,
23859        /// This process was profiled from startup.
23860        /// If false, this process was already running when profiling started.
23861        #[prost(bool, optional, tag = "3")]
23862        pub from_startup: ::core::option::Option<bool>,
23863        /// This process was not profiled because a concurrent session was active.
23864        /// If this is true, samples will be empty.
23865        #[prost(bool, optional, tag = "4")]
23866        pub rejected_concurrent: ::core::option::Option<bool>,
23867        /// This process disconnected while it was profiled.
23868        /// If false, the process outlived the profiling session.
23869        #[prost(bool, optional, tag = "6")]
23870        pub disconnected: ::core::option::Option<bool>,
23871        /// If disconnected, this disconnect was caused by the client overrunning
23872        /// the buffer.
23873        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
23874        /// on new S builds.
23875        #[prost(bool, optional, tag = "7")]
23876        pub buffer_overran: ::core::option::Option<bool>,
23877        #[prost(enumeration = "process_heap_samples::ClientError", optional, tag = "14")]
23878        pub client_error: ::core::option::Option<i32>,
23879        /// If disconnected, this disconnected was caused by the shared memory
23880        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
23881        /// MEMORY CORRUPTION.
23882        #[prost(bool, optional, tag = "8")]
23883        pub buffer_corrupted: ::core::option::Option<bool>,
23884        /// If disconnected, this disconnect was caused by heapprofd exceeding
23885        /// guardrails during this profiling session.
23886        #[prost(bool, optional, tag = "10")]
23887        pub hit_guardrail: ::core::option::Option<bool>,
23888        #[prost(string, optional, tag = "11")]
23889        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
23890        #[prost(uint64, optional, tag = "12")]
23891        pub sampling_interval_bytes: ::core::option::Option<u64>,
23892        #[prost(uint64, optional, tag = "13")]
23893        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
23894        /// Timestamp of the state of the target process that this dump represents,
23895        /// i.e. the end of the interval covered by the dump (|start_timestamp| is
23896        /// the start). This can be different to the timestamp of the TracePackets
23897        /// for various reasons:
23898        /// * If disconnected is set above, this is the timestamp of last state
23899        ///    heapprofd had of the process before it disconnected.
23900        /// * Otherwise, if the rate of events produced by the process is high,
23901        ///    heapprofd might be behind.
23902        ///
23903        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
23904        ///                to have a type enum that we can reuse here.
23905        #[prost(uint64, optional, tag = "9")]
23906        pub timestamp: ::core::option::Option<u64>,
23907        /// Start of the interval this dump covers (|timestamp| is the end): the
23908        /// profiling start for the first dump, the previous dump's timestamp
23909        /// afterwards. Same clock as |timestamp|. Unset on older producers.
23910        #[prost(uint64, optional, tag = "15")]
23911        pub start_timestamp: ::core::option::Option<u64>,
23912        /// Metadata about heapprofd.
23913        #[prost(message, optional, tag = "5")]
23914        pub stats: ::core::option::Option<ProcessStats>,
23915        #[prost(message, repeated, tag = "2")]
23916        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
23917    }
23918    /// Nested message and enum types in `ProcessHeapSamples`.
23919    pub mod process_heap_samples {
23920        #[derive(
23921            Clone,
23922            Copy,
23923            Debug,
23924            PartialEq,
23925            Eq,
23926            Hash,
23927            PartialOrd,
23928            Ord,
23929            ::prost::Enumeration
23930        )]
23931        #[repr(i32)]
23932        pub enum ClientError {
23933            None = 0,
23934            HitTimeout = 1,
23935            InvalidStackBounds = 2,
23936        }
23937        impl ClientError {
23938            /// String value of the enum field names used in the ProtoBuf definition.
23939            ///
23940            /// The values are not transformed in any way and thus are considered stable
23941            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23942            pub fn as_str_name(&self) -> &'static str {
23943                match self {
23944                    Self::None => "CLIENT_ERROR_NONE",
23945                    Self::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
23946                    Self::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
23947                }
23948            }
23949            /// Creates an enum from field names used in the ProtoBuf definition.
23950            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23951                match value {
23952                    "CLIENT_ERROR_NONE" => Some(Self::None),
23953                    "CLIENT_ERROR_HIT_TIMEOUT" => Some(Self::HitTimeout),
23954                    "CLIENT_ERROR_INVALID_STACK_BOUNDS" => Some(Self::InvalidStackBounds),
23955                    _ => None,
23956                }
23957            }
23958        }
23959    }
23960}
23961/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23962/// testing. Doesn't report the callsite.
23963#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23964pub struct StreamingAllocation {
23965    /// TODO(fmayer): Add callstack.
23966    #[prost(uint64, repeated, packed = "false", tag = "1")]
23967    pub address: ::prost::alloc::vec::Vec<u64>,
23968    #[prost(uint64, repeated, packed = "false", tag = "2")]
23969    pub size: ::prost::alloc::vec::Vec<u64>,
23970    #[prost(uint64, repeated, packed = "false", tag = "3")]
23971    pub sample_size: ::prost::alloc::vec::Vec<u64>,
23972    #[prost(uint64, repeated, packed = "false", tag = "4")]
23973    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
23974    #[prost(uint32, repeated, packed = "false", tag = "5")]
23975    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23976    #[prost(uint64, repeated, packed = "false", tag = "6")]
23977    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23978}
23979/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23980/// testing. Doesn't report the callsite.
23981#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23982pub struct StreamingFree {
23983    /// TODO(fmayer): Add callstack.
23984    #[prost(uint64, repeated, packed = "false", tag = "1")]
23985    pub address: ::prost::alloc::vec::Vec<u64>,
23986    #[prost(uint32, repeated, packed = "false", tag = "2")]
23987    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23988    #[prost(uint64, repeated, packed = "false", tag = "3")]
23989    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23990}
23991/// Packet emitted by the chromium in-process signal-based callstack sampler.
23992/// Represents a series of individual stack samples (sampled at discrete points
23993/// in time), rather than aggregated over an interval.
23994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23995pub struct StreamingProfilePacket {
23996    /// Index into InternedData.callstacks
23997    #[prost(uint64, repeated, packed = "false", tag = "1")]
23998    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
23999    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
24000    /// this with ClockSnapshot-based delta encoding instead.
24001    #[prost(int64, repeated, packed = "false", tag = "2")]
24002    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
24003    #[prost(int32, optional, tag = "3")]
24004    pub process_priority: ::core::option::Option<i32>,
24005}
24006/// Namespace for the contained enums.
24007#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24008pub struct Profiling {}
24009/// Nested message and enum types in `Profiling`.
24010pub mod profiling {
24011    #[derive(
24012        Clone,
24013        Copy,
24014        Debug,
24015        PartialEq,
24016        Eq,
24017        Hash,
24018        PartialOrd,
24019        Ord,
24020        ::prost::Enumeration
24021    )]
24022    #[repr(i32)]
24023    pub enum CpuMode {
24024        ModeUnknown = 0,
24025        ModeKernel = 1,
24026        ModeUser = 2,
24027        /// The following values aren't expected, but included for completeness:
24028        ModeHypervisor = 3,
24029        ModeGuestKernel = 4,
24030        ModeGuestUser = 5,
24031    }
24032    impl CpuMode {
24033        /// String value of the enum field names used in the ProtoBuf definition.
24034        ///
24035        /// The values are not transformed in any way and thus are considered stable
24036        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24037        pub fn as_str_name(&self) -> &'static str {
24038            match self {
24039                Self::ModeUnknown => "MODE_UNKNOWN",
24040                Self::ModeKernel => "MODE_KERNEL",
24041                Self::ModeUser => "MODE_USER",
24042                Self::ModeHypervisor => "MODE_HYPERVISOR",
24043                Self::ModeGuestKernel => "MODE_GUEST_KERNEL",
24044                Self::ModeGuestUser => "MODE_GUEST_USER",
24045            }
24046        }
24047        /// Creates an enum from field names used in the ProtoBuf definition.
24048        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24049            match value {
24050                "MODE_UNKNOWN" => Some(Self::ModeUnknown),
24051                "MODE_KERNEL" => Some(Self::ModeKernel),
24052                "MODE_USER" => Some(Self::ModeUser),
24053                "MODE_HYPERVISOR" => Some(Self::ModeHypervisor),
24054                "MODE_GUEST_KERNEL" => Some(Self::ModeGuestKernel),
24055                "MODE_GUEST_USER" => Some(Self::ModeGuestUser),
24056                _ => None,
24057            }
24058        }
24059    }
24060    /// Enumeration of libunwindstack's error codes.
24061    /// NB: the integral representations of the two enums are different.
24062    #[derive(
24063        Clone,
24064        Copy,
24065        Debug,
24066        PartialEq,
24067        Eq,
24068        Hash,
24069        PartialOrd,
24070        Ord,
24071        ::prost::Enumeration
24072    )]
24073    #[repr(i32)]
24074    pub enum StackUnwindError {
24075        UnwindErrorUnknown = 0,
24076        UnwindErrorNone = 1,
24077        UnwindErrorMemoryInvalid = 2,
24078        UnwindErrorUnwindInfo = 3,
24079        UnwindErrorUnsupported = 4,
24080        UnwindErrorInvalidMap = 5,
24081        UnwindErrorMaxFramesExceeded = 6,
24082        UnwindErrorRepeatedFrame = 7,
24083        UnwindErrorInvalidElf = 8,
24084        UnwindErrorSystemCall = 9,
24085        UnwindErrorThreadTimeout = 10,
24086        UnwindErrorThreadDoesNotExist = 11,
24087        UnwindErrorBadArch = 12,
24088        UnwindErrorMapsParse = 13,
24089        UnwindErrorInvalidParameter = 14,
24090        UnwindErrorPtraceCall = 15,
24091    }
24092    impl StackUnwindError {
24093        /// String value of the enum field names used in the ProtoBuf definition.
24094        ///
24095        /// The values are not transformed in any way and thus are considered stable
24096        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24097        pub fn as_str_name(&self) -> &'static str {
24098            match self {
24099                Self::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
24100                Self::UnwindErrorNone => "UNWIND_ERROR_NONE",
24101                Self::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
24102                Self::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
24103                Self::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
24104                Self::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
24105                Self::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
24106                Self::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
24107                Self::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
24108                Self::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
24109                Self::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
24110                Self::UnwindErrorThreadDoesNotExist => {
24111                    "UNWIND_ERROR_THREAD_DOES_NOT_EXIST"
24112                }
24113                Self::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
24114                Self::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
24115                Self::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
24116                Self::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
24117            }
24118        }
24119        /// Creates an enum from field names used in the ProtoBuf definition.
24120        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24121            match value {
24122                "UNWIND_ERROR_UNKNOWN" => Some(Self::UnwindErrorUnknown),
24123                "UNWIND_ERROR_NONE" => Some(Self::UnwindErrorNone),
24124                "UNWIND_ERROR_MEMORY_INVALID" => Some(Self::UnwindErrorMemoryInvalid),
24125                "UNWIND_ERROR_UNWIND_INFO" => Some(Self::UnwindErrorUnwindInfo),
24126                "UNWIND_ERROR_UNSUPPORTED" => Some(Self::UnwindErrorUnsupported),
24127                "UNWIND_ERROR_INVALID_MAP" => Some(Self::UnwindErrorInvalidMap),
24128                "UNWIND_ERROR_MAX_FRAMES_EXCEEDED" => {
24129                    Some(Self::UnwindErrorMaxFramesExceeded)
24130                }
24131                "UNWIND_ERROR_REPEATED_FRAME" => Some(Self::UnwindErrorRepeatedFrame),
24132                "UNWIND_ERROR_INVALID_ELF" => Some(Self::UnwindErrorInvalidElf),
24133                "UNWIND_ERROR_SYSTEM_CALL" => Some(Self::UnwindErrorSystemCall),
24134                "UNWIND_ERROR_THREAD_TIMEOUT" => Some(Self::UnwindErrorThreadTimeout),
24135                "UNWIND_ERROR_THREAD_DOES_NOT_EXIST" => {
24136                    Some(Self::UnwindErrorThreadDoesNotExist)
24137                }
24138                "UNWIND_ERROR_BAD_ARCH" => Some(Self::UnwindErrorBadArch),
24139                "UNWIND_ERROR_MAPS_PARSE" => Some(Self::UnwindErrorMapsParse),
24140                "UNWIND_ERROR_INVALID_PARAMETER" => {
24141                    Some(Self::UnwindErrorInvalidParameter)
24142                }
24143                "UNWIND_ERROR_PTRACE_CALL" => Some(Self::UnwindErrorPtraceCall),
24144                _ => None,
24145            }
24146        }
24147    }
24148}
24149/// Packet emitted by the traced_perf sampling performance profiler, which
24150/// gathers data via the perf_event_open syscall. Each packet contains an
24151/// individual sample with a counter value, and optionally a
24152/// callstack.
24153///
24154/// Timestamps are within the root packet. The config can specify the clock, or
24155/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
24156/// timeframe, the default was CLOCK_BOOTTIME.
24157///
24158/// There are several distinct views of this message:
24159/// * indication of kernel buffer data loss (kernel_records_lost set)
24160/// * indication of skipped samples (sample_skipped_reason set)
24161/// * notable event in the sampling implementation (producer_event set)
24162/// * normal sample (timebase_count set, typically also callstack_iid)
24163#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24164pub struct PerfSample {
24165    #[prost(uint32, optional, tag = "1")]
24166    pub cpu: ::core::option::Option<u32>,
24167    #[prost(uint32, optional, tag = "2")]
24168    pub pid: ::core::option::Option<u32>,
24169    #[prost(uint32, optional, tag = "3")]
24170    pub tid: ::core::option::Option<u32>,
24171    /// Execution state that the process was sampled at.
24172    #[prost(enumeration = "profiling::CpuMode", optional, tag = "5")]
24173    pub cpu_mode: ::core::option::Option<i32>,
24174    /// Value of the timebase counter (since the event was configured, no deltas).
24175    #[prost(uint64, optional, tag = "6")]
24176    pub timebase_count: ::core::option::Option<u64>,
24177    /// Value of the followers counter (since the event was configured, no deltas).
24178    #[prost(uint64, repeated, packed = "false", tag = "7")]
24179    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
24180    /// Unwound callstack. Might be partial, in which case a synthetic "error"
24181    /// frame is appended, and |unwind_error| is set accordingly.
24182    #[prost(uint64, optional, tag = "4")]
24183    pub callstack_iid: ::core::option::Option<u64>,
24184    /// If set, indicates that this message is not a sample, but rather an
24185    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
24186    /// loss occurs when the kernel has insufficient ring buffer capacity to write
24187    /// a record (which gets discarded). A record in this context is an individual
24188    /// ring buffer entry, and counts more than just sample records.
24189    ///
24190    /// The |timestamp| of the packet corresponds to the time that the producer
24191    /// wrote the packet for trace-sorting purposes alone, and should not be
24192    /// interpreted relative to the sample timestamps. This field is sufficient to
24193    /// detect that *some* kernel data loss happened within the trace, but not the
24194    /// specific time bounds of that loss (which would require tracking precedessor
24195    /// & successor timestamps, which is not deemed necessary at the moment).
24196    #[prost(uint64, optional, tag = "17")]
24197    pub kernel_records_lost: ::core::option::Option<u64>,
24198    #[prost(message, optional, tag = "19")]
24199    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
24200    /// If set, stack unwinding was incomplete due to an error.
24201    /// Unset values should be treated as UNWIND_ERROR_NONE.
24202    #[prost(oneof = "perf_sample::OptionalUnwindError", tags = "16")]
24203    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
24204    #[prost(oneof = "perf_sample::OptionalSampleSkippedReason", tags = "18")]
24205    pub optional_sample_skipped_reason: ::core::option::Option<
24206        perf_sample::OptionalSampleSkippedReason,
24207    >,
24208}
24209/// Nested message and enum types in `PerfSample`.
24210pub mod perf_sample {
24211    /// A notable event within the sampling implementation.
24212    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24213    pub struct ProducerEvent {
24214        #[prost(oneof = "producer_event::OptionalSourceStopReason", tags = "1")]
24215        pub optional_source_stop_reason: ::core::option::Option<
24216            producer_event::OptionalSourceStopReason,
24217        >,
24218    }
24219    /// Nested message and enum types in `ProducerEvent`.
24220    pub mod producer_event {
24221        #[derive(
24222            Clone,
24223            Copy,
24224            Debug,
24225            PartialEq,
24226            Eq,
24227            Hash,
24228            PartialOrd,
24229            Ord,
24230            ::prost::Enumeration
24231        )]
24232        #[repr(i32)]
24233        pub enum DataSourceStopReason {
24234            ProfilerStopUnknown = 0,
24235            ProfilerStopGuardrail = 1,
24236        }
24237        impl DataSourceStopReason {
24238            /// String value of the enum field names used in the ProtoBuf definition.
24239            ///
24240            /// The values are not transformed in any way and thus are considered stable
24241            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24242            pub fn as_str_name(&self) -> &'static str {
24243                match self {
24244                    Self::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
24245                    Self::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
24246                }
24247            }
24248            /// Creates an enum from field names used in the ProtoBuf definition.
24249            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24250                match value {
24251                    "PROFILER_STOP_UNKNOWN" => Some(Self::ProfilerStopUnknown),
24252                    "PROFILER_STOP_GUARDRAIL" => Some(Self::ProfilerStopGuardrail),
24253                    _ => None,
24254                }
24255            }
24256        }
24257        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24258        pub enum OptionalSourceStopReason {
24259            #[prost(enumeration = "DataSourceStopReason", tag = "1")]
24260            SourceStopReason(i32),
24261        }
24262    }
24263    /// If set, indicates that the profiler encountered a sample that was relevant,
24264    /// but was skipped.
24265    #[derive(
24266        Clone,
24267        Copy,
24268        Debug,
24269        PartialEq,
24270        Eq,
24271        Hash,
24272        PartialOrd,
24273        Ord,
24274        ::prost::Enumeration
24275    )]
24276    #[repr(i32)]
24277    pub enum SampleSkipReason {
24278        ProfilerSkipUnknown = 0,
24279        ProfilerSkipReadStage = 1,
24280        ProfilerSkipUnwindStage = 2,
24281        ProfilerSkipUnwindEnqueue = 3,
24282        ProfilerSkipNotInScope = 4,
24283    }
24284    impl SampleSkipReason {
24285        /// String value of the enum field names used in the ProtoBuf definition.
24286        ///
24287        /// The values are not transformed in any way and thus are considered stable
24288        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24289        pub fn as_str_name(&self) -> &'static str {
24290            match self {
24291                Self::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
24292                Self::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
24293                Self::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
24294                Self::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
24295                Self::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
24296            }
24297        }
24298        /// Creates an enum from field names used in the ProtoBuf definition.
24299        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24300            match value {
24301                "PROFILER_SKIP_UNKNOWN" => Some(Self::ProfilerSkipUnknown),
24302                "PROFILER_SKIP_READ_STAGE" => Some(Self::ProfilerSkipReadStage),
24303                "PROFILER_SKIP_UNWIND_STAGE" => Some(Self::ProfilerSkipUnwindStage),
24304                "PROFILER_SKIP_UNWIND_ENQUEUE" => Some(Self::ProfilerSkipUnwindEnqueue),
24305                "PROFILER_SKIP_NOT_IN_SCOPE" => Some(Self::ProfilerSkipNotInScope),
24306                _ => None,
24307            }
24308        }
24309    }
24310    /// If set, stack unwinding was incomplete due to an error.
24311    /// Unset values should be treated as UNWIND_ERROR_NONE.
24312    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24313    pub enum OptionalUnwindError {
24314        #[prost(enumeration = "super::profiling::StackUnwindError", tag = "16")]
24315        UnwindError(i32),
24316    }
24317    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24318    pub enum OptionalSampleSkippedReason {
24319        #[prost(enumeration = "SampleSkipReason", tag = "18")]
24320        SampleSkippedReason(i32),
24321    }
24322}
24323/// Submessage for TracePacketDefaults.
24324#[derive(Clone, PartialEq, ::prost::Message)]
24325pub struct PerfSampleDefaults {
24326    /// The sampling timebase. Might not be identical to the data source config if
24327    /// the implementation decided to default/override some parameters.
24328    #[prost(message, optional, tag = "1")]
24329    pub timebase: ::core::option::Option<perf_events::Timebase>,
24330    /// Description of followers event
24331    #[prost(message, repeated, tag = "4")]
24332    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
24333    /// If the config requested process sharding, report back the count and which
24334    /// of those bins was selected. Never changes for the duration of a trace.
24335    #[prost(uint32, optional, tag = "2")]
24336    pub process_shard_count: ::core::option::Option<u32>,
24337    #[prost(uint32, optional, tag = "3")]
24338    pub chosen_process_shard: ::core::option::Option<u32>,
24339}
24340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24341pub struct SmapsEntry {
24342    #[prost(string, optional, tag = "1")]
24343    pub path: ::core::option::Option<::prost::alloc::string::String>,
24344    #[prost(uint64, optional, tag = "2")]
24345    pub size_kb: ::core::option::Option<u64>,
24346    #[prost(uint64, optional, tag = "3")]
24347    pub private_dirty_kb: ::core::option::Option<u64>,
24348    #[prost(uint64, optional, tag = "4")]
24349    pub swap_kb: ::core::option::Option<u64>,
24350    /// for field upload (instead of path).
24351    #[prost(string, optional, tag = "5")]
24352    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
24353    /// Fields below added and used only for Chromium memory infra, see
24354    /// crbug.com/1098746.
24355    #[prost(uint64, optional, tag = "6")]
24356    pub start_address: ::core::option::Option<u64>,
24357    #[prost(uint64, optional, tag = "7")]
24358    pub module_timestamp: ::core::option::Option<u64>,
24359    #[prost(string, optional, tag = "8")]
24360    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
24361    #[prost(string, optional, tag = "9")]
24362    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
24363    #[prost(uint32, optional, tag = "10")]
24364    pub protection_flags: ::core::option::Option<u32>,
24365    #[prost(uint64, optional, tag = "11")]
24366    pub private_clean_resident_kb: ::core::option::Option<u64>,
24367    #[prost(uint64, optional, tag = "12")]
24368    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
24369    #[prost(uint64, optional, tag = "13")]
24370    pub shared_clean_resident_kb: ::core::option::Option<u64>,
24371    #[prost(uint64, optional, tag = "14")]
24372    pub locked_kb: ::core::option::Option<u64>,
24373    #[prost(uint64, optional, tag = "15")]
24374    pub proportional_resident_kb: ::core::option::Option<u64>,
24375}
24376/// Structure-of-arrays style smaps packet of a single process. All packed
24377/// repeated fields, if set, must have the same length.
24378#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24379pub struct PackedSmaps {
24380    /// Table of path names. Notes:
24381    /// * first element is the empty string, serialised explicitly.
24382    /// * the table might contain duplicates.
24383    #[prost(string, repeated, tag = "1")]
24384    pub string_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24385    /// Interned file paths as an index into |string_table|.
24386    /// Note: the "(deleted)" suffix is kept as part of the string_table entry, and
24387    /// is to be handled during trace import stage.
24388    /// Written only if config.unaggregated == true. Otherwise the string_table is
24389    /// exactly the ordered names of the aggregated mappings.
24390    #[prost(uint32, repeated, tag = "2")]
24391    pub name_id: ::prost::alloc::vec::Vec<u32>,
24392    /// How many mappings were merged by name, summing the values below.
24393    /// Written only if config.unaggregated == false.
24394    #[prost(uint32, repeated, tag = "3")]
24395    pub aggregate_count: ::prost::alloc::vec::Vec<u32>,
24396    #[prost(uint64, repeated, tag = "4")]
24397    pub size_kb: ::prost::alloc::vec::Vec<u64>,
24398    #[prost(uint64, repeated, tag = "5")]
24399    pub rss_kb: ::prost::alloc::vec::Vec<u64>,
24400    #[prost(uint64, repeated, tag = "6")]
24401    pub anonymous_kb: ::prost::alloc::vec::Vec<u64>,
24402    #[prost(uint64, repeated, tag = "7")]
24403    pub swap_kb: ::prost::alloc::vec::Vec<u64>,
24404    #[prost(uint64, repeated, tag = "8")]
24405    pub shared_clean_kb: ::prost::alloc::vec::Vec<u64>,
24406    #[prost(uint64, repeated, tag = "9")]
24407    pub shared_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24408    #[prost(uint64, repeated, tag = "10")]
24409    pub private_clean_kb: ::prost::alloc::vec::Vec<u64>,
24410    #[prost(uint64, repeated, tag = "11")]
24411    pub private_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24412    #[prost(uint64, repeated, tag = "12")]
24413    pub locked_kb: ::prost::alloc::vec::Vec<u64>,
24414    #[prost(uint64, repeated, tag = "13")]
24415    pub pss_kb: ::prost::alloc::vec::Vec<u64>,
24416    #[prost(uint64, repeated, tag = "14")]
24417    pub pss_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24418    #[prost(uint64, repeated, tag = "15")]
24419    pub swap_pss_kb: ::prost::alloc::vec::Vec<u64>,
24420}
24421#[derive(Clone, PartialEq, ::prost::Message)]
24422pub struct SmapsPacket {
24423    #[prost(uint32, optional, tag = "1")]
24424    pub pid: ::core::option::Option<u32>,
24425    #[prost(message, repeated, tag = "2")]
24426    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
24427    #[prost(message, optional, tag = "3")]
24428    pub packed_entries: ::core::option::Option<PackedSmaps>,
24429    #[prost(enumeration = "smaps_packet::RecordingType", optional, tag = "4")]
24430    pub recording_type: ::core::option::Option<i32>,
24431}
24432/// Nested message and enum types in `SmapsPacket`.
24433pub mod smaps_packet {
24434    /// Records how the snapshot was generated, as the message is shared by
24435    /// multiple smaps writers.
24436    /// If populating |packed_entries|, set explicitly to RECORDING_TYPE_STANDALONE
24437    /// as otherwise the trace importer might transform the data.
24438    #[derive(
24439        Clone,
24440        Copy,
24441        Debug,
24442        PartialEq,
24443        Eq,
24444        Hash,
24445        PartialOrd,
24446        Ord,
24447        ::prost::Enumeration
24448    )]
24449    #[repr(i32)]
24450    pub enum RecordingType {
24451        Unknown = 0,
24452        /// Normal recording.
24453        Standalone = 1,
24454        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
24455        /// heap dump. Recording is done inside of a forked child process, which
24456        /// means private/shared and pss fields are misleading as there is
24457        /// copy-on-write page sharing with the forked child.
24458        ArtHprofPostfork = 2,
24459        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
24460        /// heap dump, but with the original smaps calculated before forking in the
24461        /// plugin.
24462        ArtHprofPrefork = 3,
24463    }
24464    impl RecordingType {
24465        /// String value of the enum field names used in the ProtoBuf definition.
24466        ///
24467        /// The values are not transformed in any way and thus are considered stable
24468        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24469        pub fn as_str_name(&self) -> &'static str {
24470            match self {
24471                Self::Unknown => "RECORDING_TYPE_UNKNOWN",
24472                Self::Standalone => "RECORDING_TYPE_STANDALONE",
24473                Self::ArtHprofPostfork => "RECORDING_TYPE_ART_HPROF_POSTFORK",
24474                Self::ArtHprofPrefork => "RECORDING_TYPE_ART_HPROF_PREFORK",
24475            }
24476        }
24477        /// Creates an enum from field names used in the ProtoBuf definition.
24478        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24479            match value {
24480                "RECORDING_TYPE_UNKNOWN" => Some(Self::Unknown),
24481                "RECORDING_TYPE_STANDALONE" => Some(Self::Standalone),
24482                "RECORDING_TYPE_ART_HPROF_POSTFORK" => Some(Self::ArtHprofPostfork),
24483                "RECORDING_TYPE_ART_HPROF_PREFORK" => Some(Self::ArtHprofPrefork),
24484                _ => None,
24485            }
24486        }
24487    }
24488}
24489/// Per-process periodically sampled stats. These samples are wrapped in a
24490/// dedicated message (as opposite to be fields in process_tree.proto) because
24491/// they are dumped at a different rate than cmdline and thread list.
24492/// Note: not all of these stats will be present in every ProcessStats message
24493/// and sometimes processes may be missing. This is because counters are
24494/// cached to reduce emission of counters which do not change.
24495#[derive(Clone, PartialEq, ::prost::Message)]
24496pub struct ProcessStats {
24497    #[prost(message, repeated, tag = "1")]
24498    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
24499    /// The time at which we finish collecting this batch of samples;
24500    /// the top-level packet timestamp is the time at which
24501    /// we begin collection.
24502    #[prost(uint64, optional, tag = "2")]
24503    pub collection_end_timestamp: ::core::option::Option<u64>,
24504}
24505/// Nested message and enum types in `ProcessStats`.
24506pub mod process_stats {
24507    /// Per-thread periodically sampled stats.
24508    /// Note: not all of these stats will be present in every message. See the note
24509    /// for ProcessStats.
24510    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24511    pub struct Thread {
24512        #[prost(int32, optional, tag = "1")]
24513        pub tid: ::core::option::Option<i32>,
24514    }
24515    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24516    pub struct FdInfo {
24517        #[prost(uint64, optional, tag = "1")]
24518        pub fd: ::core::option::Option<u64>,
24519        #[prost(string, optional, tag = "2")]
24520        pub path: ::core::option::Option<::prost::alloc::string::String>,
24521    }
24522    #[derive(Clone, PartialEq, ::prost::Message)]
24523    pub struct Process {
24524        #[prost(int32, optional, tag = "1")]
24525        pub pid: ::core::option::Option<i32>,
24526        #[prost(message, repeated, tag = "11")]
24527        pub threads: ::prost::alloc::vec::Vec<Thread>,
24528        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
24529        #[prost(uint64, optional, tag = "2")]
24530        pub vm_size_kb: ::core::option::Option<u64>,
24531        #[prost(uint64, optional, tag = "3")]
24532        pub vm_rss_kb: ::core::option::Option<u64>,
24533        #[prost(uint64, optional, tag = "4")]
24534        pub rss_anon_kb: ::core::option::Option<u64>,
24535        #[prost(uint64, optional, tag = "5")]
24536        pub rss_file_kb: ::core::option::Option<u64>,
24537        #[prost(uint64, optional, tag = "6")]
24538        pub rss_shmem_kb: ::core::option::Option<u64>,
24539        #[prost(uint64, optional, tag = "7")]
24540        pub vm_swap_kb: ::core::option::Option<u64>,
24541        #[prost(uint64, optional, tag = "8")]
24542        pub vm_locked_kb: ::core::option::Option<u64>,
24543        /// When adding a new field remember to update kProcMemCounterSize in
24544        /// the trace processor.
24545        #[prost(uint64, optional, tag = "9")]
24546        pub vm_hwm_kb: ::core::option::Option<u64>,
24547        #[prost(int64, optional, tag = "10")]
24548        pub oom_score_adj: ::core::option::Option<i64>,
24549        /// The peak resident set size is resettable in newer Posix kernels.
24550        /// This field specifies if reset is supported and if the writer had reset
24551        /// the peaks after each process stats recording.
24552        #[prost(bool, optional, tag = "12")]
24553        pub is_peak_rss_resettable: ::core::option::Option<bool>,
24554        /// Private, shared and swap footprint of the process as measured by
24555        /// Chrome. To know more about these metrics refer to:
24556        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
24557        #[prost(uint32, optional, tag = "13")]
24558        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
24559        #[prost(uint32, optional, tag = "14")]
24560        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
24561        #[prost(message, repeated, tag = "15")]
24562        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
24563        /// These fields are set only when scan_smaps_rollup=true
24564        #[prost(uint64, optional, tag = "16")]
24565        pub smr_rss_kb: ::core::option::Option<u64>,
24566        #[prost(uint64, optional, tag = "17")]
24567        pub smr_pss_kb: ::core::option::Option<u64>,
24568        #[prost(uint64, optional, tag = "18")]
24569        pub smr_pss_anon_kb: ::core::option::Option<u64>,
24570        #[prost(uint64, optional, tag = "19")]
24571        pub smr_pss_file_kb: ::core::option::Option<u64>,
24572        #[prost(uint64, optional, tag = "20")]
24573        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
24574        #[prost(uint64, optional, tag = "23")]
24575        pub smr_swap_pss_kb: ::core::option::Option<u64>,
24576        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
24577        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24578        /// Resolution of "clock ticks", usually 10ms.
24579        #[prost(uint64, optional, tag = "21")]
24580        pub runtime_user_mode: ::core::option::Option<u64>,
24581        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
24582        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24583        /// Resolution of "clock ticks", usually 10ms.
24584        #[prost(uint64, optional, tag = "22")]
24585        pub runtime_kernel_mode: ::core::option::Option<u64>,
24586        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
24587        #[prost(uint64, optional, tag = "24")]
24588        pub dmabuf_rss_kb: ::core::option::Option<u64>,
24589    }
24590}
24591/// Metadata about the processes and threads in the trace.
24592/// Note: this proto was designed to be filled in by traced_probes and should
24593/// only be populated with accurate information coming from the system. Other
24594/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
24595/// in TrackDescriptor.
24596#[derive(Clone, PartialEq, ::prost::Message)]
24597pub struct ProcessTree {
24598    /// List of processes and threads in the client. These lists are incremental
24599    /// and not exhaustive. A process and its threads might show up separately in
24600    /// different ProcessTree messages. A thread might event not show up at all, if
24601    /// no sched_switch activity was detected, for instance:
24602    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{pid: 11, tgid: 10}\] }
24603    /// #1 { threads: \[{pid: 12, tgid: 10}\] }
24604    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{pid: 13, tgid: 10}\] }
24605    #[prost(message, repeated, tag = "1")]
24606    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
24607    #[prost(message, repeated, tag = "2")]
24608    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
24609    /// The time at which we finish collecting this process tree;
24610    /// the top-level packet timestamp is the time at which
24611    /// we begin collection.
24612    #[prost(uint64, optional, tag = "3")]
24613    pub collection_end_timestamp: ::core::option::Option<u64>,
24614}
24615/// Nested message and enum types in `ProcessTree`.
24616pub mod process_tree {
24617    /// Representation of a thread.
24618    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24619    pub struct Thread {
24620        /// The thread ID (as per gettid()) in the root PID namespace.
24621        #[prost(int32, optional, tag = "1")]
24622        pub tid: ::core::option::Option<i32>,
24623        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
24624        #[prost(int32, optional, tag = "3")]
24625        pub tgid: ::core::option::Option<i32>,
24626        /// The name of the thread.
24627        #[prost(string, optional, tag = "2")]
24628        pub name: ::core::option::Option<::prost::alloc::string::String>,
24629        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
24630        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
24631        /// level thread ID) omitted.
24632        #[prost(int32, repeated, packed = "false", tag = "4")]
24633        pub nstid: ::prost::alloc::vec::Vec<i32>,
24634    }
24635    /// Representation of a process.
24636    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24637    pub struct Process {
24638        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
24639        /// PID namespace.
24640        #[prost(int32, optional, tag = "1")]
24641        pub pid: ::core::option::Option<i32>,
24642        /// The parent process ID, as per getppid().
24643        #[prost(int32, optional, tag = "2")]
24644        pub ppid: ::core::option::Option<i32>,
24645        /// The command line for the process, as per /proc/pid/cmdline, broken up on
24646        /// NUL bytes.
24647        /// If it is a kernel thread or a zombie, there will only be one cmdline
24648        /// field and it will contain /proc/pid/comm.
24649        #[prost(string, repeated, tag = "3")]
24650        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24651        /// If true, the |cmdline| field was filled with the main thread's "comm"
24652        /// field instead.
24653        /// Introduced in: perfetto v50.
24654        #[prost(bool, optional, tag = "9")]
24655        pub cmdline_is_comm: ::core::option::Option<bool>,
24656        /// The uid for the process, as per /proc/pid/status.
24657        #[prost(int32, optional, tag = "5")]
24658        pub uid: ::core::option::Option<i32>,
24659        /// The non-root-level process IDs if the process runs in a PID namespace.
24660        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
24661        /// (root-level process ID) omitted.
24662        #[prost(int32, repeated, packed = "false", tag = "6")]
24663        pub nspid: ::prost::alloc::vec::Vec<i32>,
24664        /// Timestamp of when the process was created, in nanoseconds
24665        /// from boot. Parsed from starttime in /proc/pid/stat.
24666        /// Recorded if record_process_age config option is set.
24667        /// Resolution of "clock ticks", usually 10ms.
24668        #[prost(uint64, optional, tag = "7")]
24669        pub process_start_from_boot: ::core::option::Option<u64>,
24670        /// If true, the process is a kernel thread.
24671        /// Set only on linux v6.4+. For traces from older devices, it is possible to
24672        /// infer most kthreads by checking that they're a descendant of kthreadd
24673        /// (pid=2), or are the idle process (pid=0).
24674        /// Introduced in: perfetto v50.
24675        #[prost(bool, optional, tag = "8")]
24676        pub is_kthread: ::core::option::Option<bool>,
24677    }
24678}
24679/// Records the parameters for aligning clock readings between machines.
24680#[derive(Clone, PartialEq, ::prost::Message)]
24681pub struct RemoteClockSync {
24682    #[prost(message, repeated, tag = "1")]
24683    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
24684}
24685/// Nested message and enum types in `RemoteClockSync`.
24686pub mod remote_clock_sync {
24687    /// Synchronized clock snapshots taken on both sides of the relay port (the
24688    /// tracing service and the relay service). A round of clock synchronization
24689    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
24690    /// snapshot -> client snapshot -> host snapshot.
24691    #[derive(Clone, PartialEq, ::prost::Message)]
24692    pub struct SyncedClocks {
24693        #[prost(message, optional, tag = "2")]
24694        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
24695        #[prost(message, optional, tag = "3")]
24696        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
24697    }
24698}
24699/// Deliberate empty message. See comment on StatsdAtom#atom below.
24700#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24701pub struct Atom {}
24702/// One or more statsd atoms. This must continue to match:
24703/// perfetto/protos/third_party/statsd/shell_data.proto
24704/// So that we can efficiently add data from statsd directly to the
24705/// trace.
24706#[derive(Clone, PartialEq, ::prost::Message)]
24707pub struct StatsdAtom {
24708    /// Atom should be filled with an Atom proto from:
24709    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
24710    /// We don't reference Atom directly here since we don't want to import
24711    /// Atom.proto and all its transitive dependencies into Perfetto.
24712    /// atom and timestamp_nanos have the same cardinality
24713    #[prost(message, repeated, tag = "1")]
24714    pub atom: ::prost::alloc::vec::Vec<Atom>,
24715    #[prost(int64, repeated, packed = "false", tag = "2")]
24716    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
24717}
24718/// Various Linux system stat counters from /proc.
24719/// The fields in this message can be reported at different rates and with
24720/// different granularity. See sys_stats_config.proto.
24721#[derive(Clone, PartialEq, ::prost::Message)]
24722pub struct SysStats {
24723    #[prost(message, repeated, tag = "1")]
24724    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
24725    #[prost(message, repeated, tag = "2")]
24726    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
24727    /// One entry per cpu.
24728    #[prost(message, repeated, tag = "3")]
24729    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
24730    /// Num processes forked since boot.
24731    /// Populated only if FORK_COUNT in config.stat_counters.
24732    #[prost(uint64, optional, tag = "4")]
24733    pub num_forks: ::core::option::Option<u64>,
24734    /// Total num of irqs serviced since boot.
24735    #[prost(uint64, optional, tag = "5")]
24736    pub num_irq_total: ::core::option::Option<u64>,
24737    #[prost(message, repeated, tag = "6")]
24738    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24739    /// Total num of softirqs since boot.
24740    #[prost(uint64, optional, tag = "7")]
24741    pub num_softirq_total: ::core::option::Option<u64>,
24742    /// Per-softirq count.
24743    #[prost(message, repeated, tag = "8")]
24744    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24745    /// The time at which we finish collecting this set of samples;
24746    /// the top-level packet timestamp is the time at which
24747    /// we begin collection.
24748    #[prost(uint64, optional, tag = "9")]
24749    pub collection_end_timestamp: ::core::option::Option<u64>,
24750    /// One entry per device.
24751    #[prost(message, repeated, tag = "10")]
24752    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
24753    /// Cpu current frequency from
24754    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
24755    /// One entry per cpu. Report 0 for offline cpu
24756    #[prost(uint32, repeated, packed = "false", tag = "11")]
24757    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
24758    /// One entry per each node's zones.
24759    #[prost(message, repeated, tag = "12")]
24760    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
24761    /// One entry per disk device.
24762    #[prost(message, repeated, tag = "13")]
24763    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
24764    /// One entry per PsiResource type.
24765    #[prost(message, repeated, tag = "14")]
24766    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
24767    #[prost(message, repeated, tag = "15")]
24768    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
24769    #[prost(message, repeated, tag = "16")]
24770    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
24771    /// Read GPU frequency info on Intel/AMD devices.
24772    #[prost(uint64, repeated, packed = "false", tag = "17")]
24773    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
24774    #[prost(message, repeated, tag = "18")]
24775    pub slab_info: ::prost::alloc::vec::Vec<sys_stats::SlabInfo>,
24776}
24777/// Nested message and enum types in `SysStats`.
24778pub mod sys_stats {
24779    /// Counters from /proc/meminfo. Values are in KB.
24780    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24781    pub struct MeminfoValue {
24782        #[prost(enumeration = "super::MeminfoCounters", optional, tag = "1")]
24783        pub key: ::core::option::Option<i32>,
24784        #[prost(uint64, optional, tag = "2")]
24785        pub value: ::core::option::Option<u64>,
24786    }
24787    /// Counter from /proc/vmstat. Units are often pages, not KB.
24788    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24789    pub struct VmstatValue {
24790        #[prost(enumeration = "super::VmstatCounters", optional, tag = "1")]
24791        pub key: ::core::option::Option<i32>,
24792        #[prost(uint64, optional, tag = "2")]
24793        pub value: ::core::option::Option<u64>,
24794    }
24795    /// Times in each mode, since boot. Unit: nanoseconds.
24796    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24797    pub struct CpuTimes {
24798        #[prost(uint32, optional, tag = "1")]
24799        pub cpu_id: ::core::option::Option<u32>,
24800        /// Time spent in user mode.
24801        #[prost(uint64, optional, tag = "2")]
24802        pub user_ns: ::core::option::Option<u64>,
24803        /// Time spent in user mode (low prio).
24804        #[prost(uint64, optional, tag = "3")]
24805        pub user_nice_ns: ::core::option::Option<u64>,
24806        /// Time spent in system mode.
24807        #[prost(uint64, optional, tag = "4")]
24808        pub system_mode_ns: ::core::option::Option<u64>,
24809        /// Time spent in the idle task.
24810        #[prost(uint64, optional, tag = "5")]
24811        pub idle_ns: ::core::option::Option<u64>,
24812        /// Time spent waiting for I/O.
24813        #[prost(uint64, optional, tag = "6")]
24814        pub io_wait_ns: ::core::option::Option<u64>,
24815        /// Time spent servicing interrupts.
24816        #[prost(uint64, optional, tag = "7")]
24817        pub irq_ns: ::core::option::Option<u64>,
24818        /// Time spent servicing softirqs.
24819        #[prost(uint64, optional, tag = "8")]
24820        pub softirq_ns: ::core::option::Option<u64>,
24821        /// Time spent executing something else on host than this guest.
24822        #[prost(uint64, optional, tag = "9")]
24823        pub steal_ns: ::core::option::Option<u64>,
24824    }
24825    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24826    pub struct InterruptCount {
24827        #[prost(int32, optional, tag = "1")]
24828        pub irq: ::core::option::Option<i32>,
24829        #[prost(uint64, optional, tag = "2")]
24830        pub count: ::core::option::Option<u64>,
24831    }
24832    /// Frequencies for /sys/class/devfreq/ entries in kHz.
24833    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24834    pub struct DevfreqValue {
24835        #[prost(string, optional, tag = "1")]
24836        pub key: ::core::option::Option<::prost::alloc::string::String>,
24837        #[prost(uint64, optional, tag = "2")]
24838        pub value: ::core::option::Option<u64>,
24839    }
24840    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24841    pub struct BuddyInfo {
24842        #[prost(string, optional, tag = "1")]
24843        pub node: ::core::option::Option<::prost::alloc::string::String>,
24844        #[prost(string, optional, tag = "2")]
24845        pub zone: ::core::option::Option<::prost::alloc::string::String>,
24846        #[prost(uint32, repeated, packed = "false", tag = "3")]
24847        pub order_pages: ::prost::alloc::vec::Vec<u32>,
24848    }
24849    /// Counters from /proc/diskstats.
24850    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24851    pub struct DiskStat {
24852        #[prost(string, optional, tag = "1")]
24853        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
24854        #[prost(uint64, optional, tag = "2")]
24855        pub read_sectors: ::core::option::Option<u64>,
24856        #[prost(uint64, optional, tag = "3")]
24857        pub read_time_ms: ::core::option::Option<u64>,
24858        #[prost(uint64, optional, tag = "4")]
24859        pub write_sectors: ::core::option::Option<u64>,
24860        #[prost(uint64, optional, tag = "5")]
24861        pub write_time_ms: ::core::option::Option<u64>,
24862        #[prost(uint64, optional, tag = "6")]
24863        pub discard_sectors: ::core::option::Option<u64>,
24864        #[prost(uint64, optional, tag = "7")]
24865        pub discard_time_ms: ::core::option::Option<u64>,
24866        #[prost(uint64, optional, tag = "8")]
24867        pub flush_count: ::core::option::Option<u64>,
24868        #[prost(uint64, optional, tag = "9")]
24869        pub flush_time_ms: ::core::option::Option<u64>,
24870    }
24871    /// Reading from /proc/pressure/*.
24872    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24873    pub struct PsiSample {
24874        #[prost(enumeration = "psi_sample::PsiResource", optional, tag = "1")]
24875        pub resource: ::core::option::Option<i32>,
24876        /// Total absolute stall time (in nanos) for a given resource.
24877        /// While PSI readings are in micros, we store in nanos for consistency with
24878        /// most other time-based counters.
24879        #[prost(uint64, optional, tag = "2")]
24880        pub total_ns: ::core::option::Option<u64>,
24881    }
24882    /// Nested message and enum types in `PsiSample`.
24883    pub mod psi_sample {
24884        /// Type of resource that may have exhibited pressure stalls.
24885        ///     * _SOME indicates some resource tasks stalled.
24886        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
24887        #[derive(
24888            Clone,
24889            Copy,
24890            Debug,
24891            PartialEq,
24892            Eq,
24893            Hash,
24894            PartialOrd,
24895            Ord,
24896            ::prost::Enumeration
24897        )]
24898        #[repr(i32)]
24899        pub enum PsiResource {
24900            Unspecified = 0,
24901            CpuSome = 1,
24902            CpuFull = 2,
24903            IoSome = 3,
24904            IoFull = 4,
24905            MemorySome = 5,
24906            MemoryFull = 6,
24907        }
24908        impl PsiResource {
24909            /// String value of the enum field names used in the ProtoBuf definition.
24910            ///
24911            /// The values are not transformed in any way and thus are considered stable
24912            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24913            pub fn as_str_name(&self) -> &'static str {
24914                match self {
24915                    Self::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
24916                    Self::CpuSome => "PSI_RESOURCE_CPU_SOME",
24917                    Self::CpuFull => "PSI_RESOURCE_CPU_FULL",
24918                    Self::IoSome => "PSI_RESOURCE_IO_SOME",
24919                    Self::IoFull => "PSI_RESOURCE_IO_FULL",
24920                    Self::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
24921                    Self::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
24922                }
24923            }
24924            /// Creates an enum from field names used in the ProtoBuf definition.
24925            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24926                match value {
24927                    "PSI_RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
24928                    "PSI_RESOURCE_CPU_SOME" => Some(Self::CpuSome),
24929                    "PSI_RESOURCE_CPU_FULL" => Some(Self::CpuFull),
24930                    "PSI_RESOURCE_IO_SOME" => Some(Self::IoSome),
24931                    "PSI_RESOURCE_IO_FULL" => Some(Self::IoFull),
24932                    "PSI_RESOURCE_MEMORY_SOME" => Some(Self::MemorySome),
24933                    "PSI_RESOURCE_MEMORY_FULL" => Some(Self::MemoryFull),
24934                    _ => None,
24935                }
24936            }
24937        }
24938    }
24939    /// Reading from /sys/class/thermal/*.
24940    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24941    pub struct ThermalZone {
24942        #[prost(string, optional, tag = "1")]
24943        pub name: ::core::option::Option<::prost::alloc::string::String>,
24944        #[prost(uint64, optional, tag = "2")]
24945        pub temp: ::core::option::Option<u64>,
24946        #[prost(string, optional, tag = "3")]
24947        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
24948    }
24949    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
24950    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24951    pub struct CpuIdleStateEntry {
24952        /// Name of the idle state, e.g. C1-C10
24953        #[prost(string, optional, tag = "1")]
24954        pub state: ::core::option::Option<::prost::alloc::string::String>,
24955        #[prost(uint64, optional, tag = "2")]
24956        pub duration_us: ::core::option::Option<u64>,
24957    }
24958    #[derive(Clone, PartialEq, ::prost::Message)]
24959    pub struct CpuIdleState {
24960        #[prost(uint32, optional, tag = "1")]
24961        pub cpu_id: ::core::option::Option<u32>,
24962        #[prost(message, repeated, tag = "2")]
24963        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
24964    }
24965    /// Reading from /proc/slabinfo.
24966    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24967    pub struct SlabInfo {
24968        #[prost(string, optional, tag = "1")]
24969        pub name: ::core::option::Option<::prost::alloc::string::String>,
24970        #[prost(uint32, optional, tag = "2")]
24971        pub pages_per_slab: ::core::option::Option<u32>,
24972        #[prost(uint32, optional, tag = "3")]
24973        pub num_slabs: ::core::option::Option<u32>,
24974    }
24975}
24976/// Information about CPUs from procfs and sysfs.
24977#[derive(Clone, PartialEq, ::prost::Message)]
24978pub struct CpuInfo {
24979    /// Describes available CPUs, one entry per CPU.
24980    #[prost(message, repeated, tag = "1")]
24981    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
24982}
24983/// Nested message and enum types in `CpuInfo`.
24984pub mod cpu_info {
24985    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24986    pub struct ArmCpuIdentifier {
24987        /// Implementer code
24988        #[prost(uint32, optional, tag = "1")]
24989        pub implementer: ::core::option::Option<u32>,
24990        /// Architecture code
24991        #[prost(uint32, optional, tag = "2")]
24992        pub architecture: ::core::option::Option<u32>,
24993        /// CPU variant
24994        #[prost(uint32, optional, tag = "3")]
24995        pub variant: ::core::option::Option<u32>,
24996        /// CPU part
24997        #[prost(uint32, optional, tag = "4")]
24998        pub part: ::core::option::Option<u32>,
24999        /// CPU revision
25000        #[prost(uint32, optional, tag = "5")]
25001        pub revision: ::core::option::Option<u32>,
25002    }
25003    /// Information about a single CPU.
25004    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25005    pub struct Cpu {
25006        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
25007        /// Example: "AArch64 Processor rev 12 (aarch64)"
25008        #[prost(string, optional, tag = "1")]
25009        pub processor: ::core::option::Option<::prost::alloc::string::String>,
25010        /// Frequencies from
25011        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
25012        /// where X is the index of this CPU.
25013        #[prost(uint32, repeated, packed = "false", tag = "2")]
25014        pub frequencies: ::prost::alloc::vec::Vec<u32>,
25015        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
25016        /// the index of this CPU.
25017        #[prost(uint32, optional, tag = "3")]
25018        pub capacity: ::core::option::Option<u32>,
25019        /// Features is a bitmap containing a bit set for each feature defined in
25020        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
25021        /// index.
25022        #[prost(uint64, optional, tag = "5")]
25023        pub features: ::core::option::Option<u64>,
25024        /// Code to identify the CPU
25025        #[prost(oneof = "cpu::Identifier", tags = "4")]
25026        pub identifier: ::core::option::Option<cpu::Identifier>,
25027    }
25028    /// Nested message and enum types in `Cpu`.
25029    pub mod cpu {
25030        /// Code to identify the CPU
25031        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
25032        pub enum Identifier {
25033            #[prost(message, tag = "4")]
25034            ArmIdentifier(super::ArmCpuIdentifier),
25035        }
25036    }
25037}
25038/// Information about GPUs on the device.
25039#[derive(Clone, PartialEq, ::prost::Message)]
25040pub struct GpuInfo {
25041    /// Describes available GPUs, one entry per GPU. The index in the list
25042    /// corresponds to the gpu_id used elsewhere in the trace.
25043    #[prost(message, repeated, tag = "1")]
25044    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
25045}
25046/// Nested message and enum types in `GpuInfo`.
25047pub mod gpu_info {
25048    /// Information about a single GPU.
25049    #[derive(Clone, PartialEq, ::prost::Message)]
25050    pub struct Gpu {
25051        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
25052        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
25053        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
25054        /// share the same name, consider appending an index to distinguish them
25055        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
25056        #[prost(string, optional, tag = "1")]
25057        pub name: ::core::option::Option<::prost::alloc::string::String>,
25058        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
25059        #[prost(string, optional, tag = "2")]
25060        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
25061        /// GPU model/product identifier.
25062        #[prost(string, optional, tag = "3")]
25063        pub model: ::core::option::Option<::prost::alloc::string::String>,
25064        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
25065        #[prost(string, optional, tag = "4")]
25066        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
25067        /// 16-byte device UUID when available.
25068        #[prost(bytes = "vec", optional, tag = "5")]
25069        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
25070        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
25071        #[prost(string, optional, tag = "7")]
25072        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
25073        #[prost(message, repeated, tag = "6")]
25074        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
25075    }
25076    /// Nested message and enum types in `Gpu`.
25077    pub mod gpu {
25078        /// Arbitrary key-value pairs for vendor-specific info
25079        /// (driver version, memory size, compute capability, clock speeds, etc.).
25080        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25081        pub struct KeyValue {
25082            #[prost(string, optional, tag = "1")]
25083            pub key: ::core::option::Option<::prost::alloc::string::String>,
25084            #[prost(string, optional, tag = "2")]
25085            pub value: ::core::option::Option<::prost::alloc::string::String>,
25086        }
25087    }
25088}
25089/// Hardware interrupt (IRQ) ID-to-name mappings collected from
25090/// /proc/interrupts at the start of a trace.
25091/// Emitted by the linux.system_info data source when irq_names: true is set
25092/// in SystemInfoConfig.
25093#[derive(Clone, PartialEq, ::prost::Message)]
25094pub struct InterruptInfo {
25095    /// One entry per hardware IRQ found in /proc/interrupts.
25096    #[prost(message, repeated, tag = "1")]
25097    pub irq_mapping: ::prost::alloc::vec::Vec<interrupt_info::InterruptMapping>,
25098}
25099/// Nested message and enum types in `InterruptInfo`.
25100pub mod interrupt_info {
25101    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25102    pub struct InterruptMapping {
25103        /// Numeric IRQ identifier.
25104        #[prost(uint32, optional, tag = "1")]
25105        pub irq_id: ::core::option::Option<u32>,
25106        /// Human-readable name for the IRQ (e.g. "arch_timer", "arm-pmu").
25107        #[prost(string, optional, tag = "2")]
25108        pub name: ::core::option::Option<::prost::alloc::string::String>,
25109    }
25110}
25111/// Event used by testing code.
25112#[derive(Clone, PartialEq, ::prost::Message)]
25113pub struct TestEvent {
25114    /// Arbitrary string used in tests.
25115    #[prost(string, optional, tag = "1")]
25116    pub str: ::core::option::Option<::prost::alloc::string::String>,
25117    /// The current value of the random number sequence used in tests.
25118    #[prost(uint32, optional, tag = "2")]
25119    pub seq_value: ::core::option::Option<u32>,
25120    /// Monotonically increased on each packet.
25121    #[prost(uint64, optional, tag = "3")]
25122    pub counter: ::core::option::Option<u64>,
25123    /// No more packets should follow (from the current sequence).
25124    #[prost(bool, optional, tag = "4")]
25125    pub is_last: ::core::option::Option<bool>,
25126    #[prost(message, optional, tag = "5")]
25127    pub payload: ::core::option::Option<test_event::TestPayload>,
25128    #[prost(message, optional, tag = "6")]
25129    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
25130    #[prost(message, optional, tag = "7")]
25131    pub protovm_incremental_state: ::core::option::Option<
25132        test_event::ProtoVmIncrementalState,
25133    >,
25134}
25135/// Nested message and enum types in `TestEvent`.
25136pub mod test_event {
25137    #[derive(Clone, PartialEq, ::prost::Message)]
25138    pub struct TestPayload {
25139        #[prost(string, repeated, tag = "1")]
25140        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25141        #[prost(message, repeated, tag = "2")]
25142        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
25143        #[prost(string, optional, tag = "4")]
25144        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
25145        #[prost(int32, optional, tag = "5")]
25146        pub single_int: ::core::option::Option<i32>,
25147        #[prost(int32, repeated, packed = "false", tag = "6")]
25148        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
25149        /// When 0 this is the bottom-most nested message.
25150        #[prost(uint32, optional, tag = "3")]
25151        pub remaining_nesting_depth: ::core::option::Option<u32>,
25152        #[prost(message, repeated, tag = "7")]
25153        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
25154    }
25155    /// Simple ProtoVm patch and incremental state formats used for testing
25156    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25157    pub struct ProtoVmMessage {
25158        #[prost(uint32, optional, tag = "1")]
25159        pub id: ::core::option::Option<u32>,
25160        #[prost(message, optional, tag = "2")]
25161        pub submessage: ::core::option::Option<proto_vm_message::ProtoVmSubmessage>,
25162    }
25163    /// Nested message and enum types in `ProtoVmMessage`.
25164    pub mod proto_vm_message {
25165        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25166        pub struct ProtoVmSubmessage {
25167            #[prost(uint32, optional, tag = "1")]
25168            pub single_int: ::core::option::Option<u32>,
25169        }
25170    }
25171    #[derive(Clone, PartialEq, ::prost::Message)]
25172    pub struct ProtoVmPatch {
25173        #[prost(string, optional, tag = "1")]
25174        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
25175        #[prost(int32, optional, tag = "2")]
25176        pub int_to_merge: ::core::option::Option<i32>,
25177        #[prost(message, optional, tag = "3")]
25178        pub single_message: ::core::option::Option<ProtoVmMessage>,
25179        #[prost(message, repeated, tag = "4")]
25180        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
25181        #[prost(uint32, repeated, packed = "false", tag = "5")]
25182        pub delete_message_ids: ::prost::alloc::vec::Vec<u32>,
25183    }
25184    #[derive(Clone, PartialEq, ::prost::Message)]
25185    pub struct ProtoVmIncrementalState {
25186        #[prost(string, optional, tag = "1")]
25187        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
25188        #[prost(int32, optional, tag = "2")]
25189        pub int_merged: ::core::option::Option<i32>,
25190        #[prost(message, optional, tag = "3")]
25191        pub single_message: ::core::option::Option<ProtoVmMessage>,
25192        #[prost(message, repeated, tag = "4")]
25193        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
25194    }
25195}
25196/// Default values for TracePacket fields that hold for a particular TraceWriter
25197/// packet sequence. This message contains a subset of the TracePacket fields
25198/// with matching IDs. When provided, these fields define the default values
25199/// that should be applied, at import time, to all TracePacket(s) with the same
25200/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
25201///
25202/// Should be reemitted whenever incremental state is cleared on the sequence.
25203#[derive(Clone, PartialEq, ::prost::Message)]
25204pub struct TracePacketDefaults {
25205    #[prost(uint32, optional, tag = "58")]
25206    pub timestamp_clock_id: ::core::option::Option<u32>,
25207    /// Default values for TrackEvents (e.g. default track).
25208    #[prost(message, optional, tag = "11")]
25209    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
25210    /// Defaults for perf profiler packets (PerfSample).
25211    #[prost(message, optional, tag = "12")]
25212    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
25213    /// Defaults for transport-neutral stack sampling packets (StackSample).
25214    #[prost(message, optional, tag = "100")]
25215    pub stack_sample_defaults: ::core::option::Option<StackSampleDefaults>,
25216    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
25217    /// V8RegexpCode)
25218    #[prost(message, optional, tag = "99")]
25219    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
25220}
25221/// A random unique ID that identifies the trace.
25222/// This message has been introduced in v32. Prior to that, the UUID was
25223/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
25224/// This has been moved to a standalone packet to deal with new use-cases for
25225/// go/gapless-aot, where the same tracing session can be serialized several
25226/// times, in which case the UUID is changed on each snapshot and does not match
25227/// the one in the TraceConfig.
25228#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25229pub struct TraceUuid {
25230    #[prost(int64, optional, tag = "1")]
25231    pub msb: ::core::option::Option<i64>,
25232    #[prost(int64, optional, tag = "2")]
25233    pub lsb: ::core::option::Option<i64>,
25234}
25235/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
25236/// usually by the process's main thread.
25237///
25238/// Next id: 9.
25239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25240pub struct ProcessDescriptor {
25241    #[prost(int32, optional, tag = "1")]
25242    pub pid: ::core::option::Option<i32>,
25243    #[prost(string, repeated, tag = "2")]
25244    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25245    #[prost(string, optional, tag = "6")]
25246    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
25247    #[prost(int32, optional, tag = "5")]
25248    pub process_priority: ::core::option::Option<i32>,
25249    /// Process start time in nanoseconds.
25250    /// The timestamp refers to the trace clock by default. Other clock IDs
25251    /// provided in TracePacket are not supported.
25252    #[prost(int64, optional, tag = "7")]
25253    pub start_timestamp_ns: ::core::option::Option<i64>,
25254    #[prost(enumeration = "process_descriptor::ChromeProcessType", optional, tag = "4")]
25255    pub chrome_process_type: ::core::option::Option<i32>,
25256    /// To support old UI. New UI should determine default sorting by process_type.
25257    #[prost(int32, optional, tag = "3")]
25258    pub legacy_sort_index: ::core::option::Option<i32>,
25259    /// Labels can be used to further describe properties of the work performed by
25260    /// the process. For example, these can be used by Chrome renderer process to
25261    /// provide titles of frames being rendered.
25262    #[prost(string, repeated, tag = "8")]
25263    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25264}
25265/// Nested message and enum types in `ProcessDescriptor`.
25266pub mod process_descriptor {
25267    /// See chromium's content::ProcessType.
25268    #[derive(
25269        Clone,
25270        Copy,
25271        Debug,
25272        PartialEq,
25273        Eq,
25274        Hash,
25275        PartialOrd,
25276        Ord,
25277        ::prost::Enumeration
25278    )]
25279    #[repr(i32)]
25280    pub enum ChromeProcessType {
25281        ProcessUnspecified = 0,
25282        ProcessBrowser = 1,
25283        ProcessRenderer = 2,
25284        ProcessUtility = 3,
25285        ProcessZygote = 4,
25286        ProcessSandboxHelper = 5,
25287        ProcessGpu = 6,
25288        ProcessPpapiPlugin = 7,
25289        ProcessPpapiBroker = 8,
25290    }
25291    impl ChromeProcessType {
25292        /// String value of the enum field names used in the ProtoBuf definition.
25293        ///
25294        /// The values are not transformed in any way and thus are considered stable
25295        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25296        pub fn as_str_name(&self) -> &'static str {
25297            match self {
25298                Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
25299                Self::ProcessBrowser => "PROCESS_BROWSER",
25300                Self::ProcessRenderer => "PROCESS_RENDERER",
25301                Self::ProcessUtility => "PROCESS_UTILITY",
25302                Self::ProcessZygote => "PROCESS_ZYGOTE",
25303                Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
25304                Self::ProcessGpu => "PROCESS_GPU",
25305                Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
25306                Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
25307            }
25308        }
25309        /// Creates an enum from field names used in the ProtoBuf definition.
25310        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25311            match value {
25312                "PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
25313                "PROCESS_BROWSER" => Some(Self::ProcessBrowser),
25314                "PROCESS_RENDERER" => Some(Self::ProcessRenderer),
25315                "PROCESS_UTILITY" => Some(Self::ProcessUtility),
25316                "PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
25317                "PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
25318                "PROCESS_GPU" => Some(Self::ProcessGpu),
25319                "PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
25320                "PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
25321                _ => None,
25322            }
25323        }
25324    }
25325}
25326/// This message specifies the "range of interest" for track events. With the
25327/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
25328/// Trace Processor drops track events outside of this range.
25329#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25330pub struct TrackEventRangeOfInterest {
25331    #[prost(int64, optional, tag = "1")]
25332    pub start_us: ::core::option::Option<i64>,
25333}
25334/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
25335/// usually by the thread's trace writer.
25336///
25337/// Next id: 9.
25338#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25339pub struct ThreadDescriptor {
25340    #[prost(int32, optional, tag = "1")]
25341    pub pid: ::core::option::Option<i32>,
25342    #[prost(int64, optional, tag = "2")]
25343    pub tid: ::core::option::Option<i64>,
25344    #[prost(string, optional, tag = "5")]
25345    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
25346    #[prost(enumeration = "thread_descriptor::ChromeThreadType", optional, tag = "4")]
25347    pub chrome_thread_type: ::core::option::Option<i32>,
25348    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
25349    /// and timestamp_clock_id fields instead.
25350    #[prost(int64, optional, tag = "6")]
25351    pub reference_timestamp_us: ::core::option::Option<i64>,
25352    /// Absolute reference values. Clock values in subsequent TrackEvents can be
25353    /// encoded accumulatively and relative to these. This reduces their var-int
25354    /// encoding size.
25355    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
25356    #[prost(int64, optional, tag = "7")]
25357    pub reference_thread_time_us: ::core::option::Option<i64>,
25358    #[prost(int64, optional, tag = "8")]
25359    pub reference_thread_instruction_count: ::core::option::Option<i64>,
25360    /// To support old UI. New UI should determine default sorting by thread_type.
25361    #[prost(int32, optional, tag = "3")]
25362    pub legacy_sort_index: ::core::option::Option<i32>,
25363}
25364/// Nested message and enum types in `ThreadDescriptor`.
25365pub mod thread_descriptor {
25366    #[derive(
25367        Clone,
25368        Copy,
25369        Debug,
25370        PartialEq,
25371        Eq,
25372        Hash,
25373        PartialOrd,
25374        Ord,
25375        ::prost::Enumeration
25376    )]
25377    #[repr(i32)]
25378    pub enum ChromeThreadType {
25379        ChromeThreadUnspecified = 0,
25380        ChromeThreadMain = 1,
25381        ChromeThreadIo = 2,
25382        /// Scheduler:
25383        ChromeThreadPoolBgWorker = 3,
25384        ChromeThreadPoolFgWorker = 4,
25385        ChromeThreadPoolFbBlocking = 5,
25386        ChromeThreadPoolBgBlocking = 6,
25387        ChromeThreadPoolService = 7,
25388        /// Compositor:
25389        ChromeThreadCompositor = 8,
25390        ChromeThreadVizCompositor = 9,
25391        ChromeThreadCompositorWorker = 10,
25392        /// Renderer:
25393        ChromeThreadServiceWorker = 11,
25394        /// Tracing related threads:
25395        ChromeThreadMemoryInfra = 50,
25396        ChromeThreadSamplingProfiler = 51,
25397    }
25398    impl ChromeThreadType {
25399        /// String value of the enum field names used in the ProtoBuf definition.
25400        ///
25401        /// The values are not transformed in any way and thus are considered stable
25402        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25403        pub fn as_str_name(&self) -> &'static str {
25404            match self {
25405                Self::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
25406                Self::ChromeThreadMain => "CHROME_THREAD_MAIN",
25407                Self::ChromeThreadIo => "CHROME_THREAD_IO",
25408                Self::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
25409                Self::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
25410                Self::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
25411                Self::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
25412                Self::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
25413                Self::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
25414                Self::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
25415                Self::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
25416                Self::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
25417                Self::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
25418                Self::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
25419            }
25420        }
25421        /// Creates an enum from field names used in the ProtoBuf definition.
25422        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25423            match value {
25424                "CHROME_THREAD_UNSPECIFIED" => Some(Self::ChromeThreadUnspecified),
25425                "CHROME_THREAD_MAIN" => Some(Self::ChromeThreadMain),
25426                "CHROME_THREAD_IO" => Some(Self::ChromeThreadIo),
25427                "CHROME_THREAD_POOL_BG_WORKER" => Some(Self::ChromeThreadPoolBgWorker),
25428                "CHROME_THREAD_POOL_FG_WORKER" => Some(Self::ChromeThreadPoolFgWorker),
25429                "CHROME_THREAD_POOL_FB_BLOCKING" => {
25430                    Some(Self::ChromeThreadPoolFbBlocking)
25431                }
25432                "CHROME_THREAD_POOL_BG_BLOCKING" => {
25433                    Some(Self::ChromeThreadPoolBgBlocking)
25434                }
25435                "CHROME_THREAD_POOL_SERVICE" => Some(Self::ChromeThreadPoolService),
25436                "CHROME_THREAD_COMPOSITOR" => Some(Self::ChromeThreadCompositor),
25437                "CHROME_THREAD_VIZ_COMPOSITOR" => Some(Self::ChromeThreadVizCompositor),
25438                "CHROME_THREAD_COMPOSITOR_WORKER" => {
25439                    Some(Self::ChromeThreadCompositorWorker)
25440                }
25441                "CHROME_THREAD_SERVICE_WORKER" => Some(Self::ChromeThreadServiceWorker),
25442                "CHROME_THREAD_MEMORY_INFRA" => Some(Self::ChromeThreadMemoryInfra),
25443                "CHROME_THREAD_SAMPLING_PROFILER" => {
25444                    Some(Self::ChromeThreadSamplingProfiler)
25445                }
25446                _ => None,
25447            }
25448        }
25449    }
25450}
25451/// Describes the attributes for a Chrome process. Must be paired with a
25452/// ProcessDescriptor in the same TrackDescriptor.
25453///
25454/// Next id: 6.
25455#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25456pub struct ChromeProcessDescriptor {
25457    /// This is a chrome_enums::ProcessType from
25458    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
25459    /// be imported here because of a dependency loop.
25460    #[prost(int32, optional, tag = "1")]
25461    pub process_type: ::core::option::Option<i32>,
25462    #[prost(int32, optional, tag = "2")]
25463    pub process_priority: ::core::option::Option<i32>,
25464    /// To support old UI. New UI should determine default sorting by process_type.
25465    #[prost(int32, optional, tag = "3")]
25466    pub legacy_sort_index: ::core::option::Option<i32>,
25467    /// Name of the hosting app for WebView. Used to match renderer processes to
25468    /// their hosting apps.
25469    #[prost(string, optional, tag = "4")]
25470    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
25471    /// The ID to link crashes to trace.
25472    /// Notes:
25473    /// * The ID is per process. So, each trace may contain many IDs, and you need
25474    ///    to look for the ID from crashed process to find the crash report.
25475    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
25476    ///    get an uploaded trace, since uploads could have failed.
25477    /// * On the other hand, if there was a crash during the session and trace was
25478    ///    uploaded, it is very likely to find a crash report with the trace ID.
25479    /// * This is not crash ID or trace ID. It is just a random 64-bit number
25480    ///    recorded in both traces and crashes. It is possible to have collisions,
25481    ///    though very rare.
25482    #[prost(uint64, optional, tag = "5")]
25483    pub crash_trace_id: ::core::option::Option<u64>,
25484}
25485/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
25486/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
25487/// in the same TrackDescriptor.
25488///
25489/// Next id: 3.
25490#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25491pub struct ChromeThreadDescriptor {
25492    /// This is a chrome_enums::ThreadType from
25493    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
25494    /// be imported here because of a dependency loop.
25495    #[prost(int32, optional, tag = "1")]
25496    pub thread_type: ::core::option::Option<i32>,
25497    /// To support old UI. New UI should determine default sorting by thread_type.
25498    #[prost(int32, optional, tag = "2")]
25499    pub legacy_sort_index: ::core::option::Option<i32>,
25500    /// Indicates whether the thread's tid specified in the thread descriptor is
25501    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
25502    #[prost(bool, optional, tag = "3")]
25503    pub is_sandboxed_tid: ::core::option::Option<bool>,
25504}
25505/// Defines properties of a counter track, e.g. for built-in counters (thread
25506/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
25507/// a specific app component).
25508///
25509/// Counter tracks only support TYPE_COUNTER track events, which specify new
25510/// values for the counter. For counters that require per-slice values, counter
25511/// values can instead be provided in a more efficient encoding via TrackEvent's
25512/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
25513/// slice-type events cannot be emitted onto a counter track.
25514///
25515/// Values for counters that are only emitted on a single packet sequence can
25516/// optionally be delta-encoded, see |is_incremental|.
25517///
25518/// Next id: 7.
25519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25520pub struct CounterDescriptor {
25521    /// For built-in counters (e.g. thread time). Custom user-specified counters
25522    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
25523    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
25524    #[prost(enumeration = "counter_descriptor::BuiltinCounterType", optional, tag = "1")]
25525    pub r#type: ::core::option::Option<i32>,
25526    /// Names of categories of the counter (usually for user-specified counters).
25527    /// In the client library, categories are a way to turn groups of individual
25528    /// counters (or events) on or off.
25529    #[prost(string, repeated, tag = "2")]
25530    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25531    /// Type of the counter's values. Built-in counters imply a value for this
25532    /// field.
25533    #[prost(enumeration = "counter_descriptor::Unit", optional, tag = "3")]
25534    pub unit: ::core::option::Option<i32>,
25535    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
25536    /// name can be used instead.
25537    #[prost(string, optional, tag = "6")]
25538    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
25539    /// Multiplication factor of this counter's values, e.g. to supply
25540    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
25541    #[prost(int64, optional, tag = "4")]
25542    pub unit_multiplier: ::core::option::Option<i64>,
25543    /// Whether values for this counter are provided as delta values. Only
25544    /// supported for counters that are emitted on a single packet-sequence (e.g.
25545    /// thread time). Counter values in subsequent packets on the current packet
25546    /// sequence will be interpreted as delta values from the sequence's most
25547    /// recent value for the counter. When incremental state is cleared, the
25548    /// counter value is considered to be reset to 0. Thus, the first value after
25549    /// incremental state is cleared is effectively an absolute value.
25550    #[prost(bool, optional, tag = "5")]
25551    pub is_incremental: ::core::option::Option<bool>,
25552    /// When visualizing multiple counter tracks, it is often useful to have them
25553    /// share the same Y-axis range. This allows for easy comparison of their
25554    /// values.
25555    ///
25556    /// All counter tracks with the same |y_axis_share_key| and the same parent
25557    /// track (e.g. grouped under the same process track) will share their y-axis
25558    /// range in the UI.
25559    #[prost(string, optional, tag = "7")]
25560    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
25561}
25562/// Nested message and enum types in `CounterDescriptor`.
25563pub mod counter_descriptor {
25564    /// Built-in counters, usually with special meaning in the client library,
25565    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
25566    /// track name from the enum value if none is provided in TrackDescriptor.
25567    #[derive(
25568        Clone,
25569        Copy,
25570        Debug,
25571        PartialEq,
25572        Eq,
25573        Hash,
25574        PartialOrd,
25575        Ord,
25576        ::prost::Enumeration
25577    )]
25578    #[repr(i32)]
25579    pub enum BuiltinCounterType {
25580        CounterUnspecified = 0,
25581        /// implies UNIT_TIME_NS.
25582        CounterThreadTimeNs = 1,
25583        /// implies UNIT_COUNT.
25584        CounterThreadInstructionCount = 2,
25585    }
25586    impl BuiltinCounterType {
25587        /// String value of the enum field names used in the ProtoBuf definition.
25588        ///
25589        /// The values are not transformed in any way and thus are considered stable
25590        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25591        pub fn as_str_name(&self) -> &'static str {
25592            match self {
25593                Self::CounterUnspecified => "COUNTER_UNSPECIFIED",
25594                Self::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
25595                Self::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
25596            }
25597        }
25598        /// Creates an enum from field names used in the ProtoBuf definition.
25599        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25600            match value {
25601                "COUNTER_UNSPECIFIED" => Some(Self::CounterUnspecified),
25602                "COUNTER_THREAD_TIME_NS" => Some(Self::CounterThreadTimeNs),
25603                "COUNTER_THREAD_INSTRUCTION_COUNT" => {
25604                    Some(Self::CounterThreadInstructionCount)
25605                }
25606                _ => None,
25607            }
25608        }
25609    }
25610    /// Type of the values for the counters - to supply lower granularity units,
25611    /// see also |unit_multiplier|.
25612    #[derive(
25613        Clone,
25614        Copy,
25615        Debug,
25616        PartialEq,
25617        Eq,
25618        Hash,
25619        PartialOrd,
25620        Ord,
25621        ::prost::Enumeration
25622    )]
25623    #[repr(i32)]
25624    pub enum Unit {
25625        Unspecified = 0,
25626        TimeNs = 1,
25627        Count = 2,
25628        /// TODO(eseckler): Support more units as necessary.
25629        SizeBytes = 3,
25630    }
25631    impl Unit {
25632        /// String value of the enum field names used in the ProtoBuf definition.
25633        ///
25634        /// The values are not transformed in any way and thus are considered stable
25635        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25636        pub fn as_str_name(&self) -> &'static str {
25637            match self {
25638                Self::Unspecified => "UNIT_UNSPECIFIED",
25639                Self::TimeNs => "UNIT_TIME_NS",
25640                Self::Count => "UNIT_COUNT",
25641                Self::SizeBytes => "UNIT_SIZE_BYTES",
25642            }
25643        }
25644        /// Creates an enum from field names used in the ProtoBuf definition.
25645        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25646            match value {
25647                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
25648                "UNIT_TIME_NS" => Some(Self::TimeNs),
25649                "UNIT_COUNT" => Some(Self::Count),
25650                "UNIT_SIZE_BYTES" => Some(Self::SizeBytes),
25651                _ => None,
25652            }
25653        }
25654    }
25655}
25656/// Descriptor for a state track.
25657///
25658/// For now, this message is empty. It is used to identify a track as a state
25659/// track.
25660#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25661pub struct StateDescriptor {}
25662/// Defines a track for TrackEvents. Slices and instant events on the same track
25663/// will be nested based on their timestamps, see TrackEvent::Type.
25664///
25665/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
25666/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
25667/// when the ring buffer wraps, it should be reemitted whenever incremental state
25668/// is cleared.
25669///
25670/// As a fallback, TrackEvents emitted without an explicit track association will
25671/// be associated with an implicit trace-global track (uuid = 0), see also
25672/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
25673/// TrackDescriptor for this implicit track.
25674///
25675/// Next id: 21.
25676#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25677pub struct TrackDescriptor {
25678    /// Unique ID that identifies this track. This ID is global to the whole trace.
25679    /// Producers should ensure that it is unlikely to clash with IDs emitted by
25680    /// other producers. A value of 0 denotes the implicit trace-global track.
25681    ///
25682    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
25683    /// event id + id_scope, pid, and/or tid to compute this ID.
25684    #[prost(uint64, optional, tag = "1")]
25685    pub uuid: ::core::option::Option<u64>,
25686    /// A parent track reference can be used to describe relationships between
25687    /// tracks. For example, to define an asynchronous track which is scoped to a
25688    /// specific process, specify the uuid for that process's process track here.
25689    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
25690    /// thread, specify the uuid for that thread's thread track here. In general,
25691    /// setting a parent will *nest* that track under the parent in the UI and in
25692    /// the trace processor data model (with the important exception noted below).
25693    ///
25694    /// If not specified, the track will be a root track, i.e. not nested under any
25695    /// other track.
25696    ///
25697    /// Note: if the `thread` or `process` fields are set, this value will be
25698    /// *ignored* as priority is given to those fields.
25699    ///
25700    /// Note: if the parent is set to a track with `thread` or `process` fields
25701    /// set, the track will *not* be nested under the parent in the UI and in the
25702    /// trace processor data model. Instead, the track will inherit the parent's
25703    /// thread/process association and will appear as a *sibling* of the parent.
25704    /// This semantic exists for back-compat reasons as the UI used to work this
25705    /// way for years and changing this leads to a lot of traces subtly breaking.
25706    /// If you want to force nesting, create *another* intermediate track to act as
25707    /// the parent.
25708    #[prost(uint64, optional, tag = "5")]
25709    pub parent_uuid: ::core::option::Option<u64>,
25710    /// A human-readable description of the track providing more context about its
25711    /// data. In the UI, this is shown in a popup when the track's help button is
25712    /// clicked.
25713    #[prost(string, optional, tag = "14")]
25714    pub description: ::core::option::Option<::prost::alloc::string::String>,
25715    /// Associate the track with a process, making it the process-global track.
25716    /// There should only be one such track per process (usually for instant
25717    /// events; trace processor uses this fact to detect pid reuse). If you need
25718    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
25719    ///
25720    /// Trace processor will merge events on a process track with slice-type events
25721    /// from other sources (e.g. ftrace) for the same process into a single
25722    /// timeline view.
25723    #[prost(message, optional, tag = "3")]
25724    pub process: ::core::option::Option<ProcessDescriptor>,
25725    #[prost(message, optional, tag = "6")]
25726    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
25727    /// Associate the track with a thread, indicating that the track's events
25728    /// describe synchronous code execution on the thread. There should only be one
25729    /// such track per thread (trace processor uses this fact to detect tid reuse).
25730    ///
25731    /// Trace processor will merge events on a thread track with slice-type events
25732    /// from other sources (e.g. ftrace) for the same thread into a single timeline
25733    /// view.
25734    #[prost(message, optional, tag = "4")]
25735    pub thread: ::core::option::Option<ThreadDescriptor>,
25736    #[prost(message, optional, tag = "7")]
25737    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
25738    /// Descriptor for a counter track. If set, the track will only support
25739    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
25740    /// |extra_counter_values|).
25741    #[prost(message, optional, tag = "8")]
25742    pub counter: ::core::option::Option<CounterDescriptor>,
25743    /// Descriptor for a state track. If set, the track will support
25744    /// TYPE_STATE TrackEvents.
25745    #[prost(message, optional, tag = "18")]
25746    pub state: ::core::option::Option<StateDescriptor>,
25747    /// If true, forces Trace Processor to use separate tracks for track events
25748    /// and system events for the same thread.
25749    ///
25750    /// Track events timestamps in Chrome have microsecond resolution, while
25751    /// system events use nanoseconds. It results in broken event nesting when
25752    /// track events and system events share a track.
25753    #[prost(bool, optional, tag = "9")]
25754    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
25755    #[prost(enumeration = "track_descriptor::ChildTracksOrdering", optional, tag = "11")]
25756    pub child_ordering: ::core::option::Option<i32>,
25757    /// An opaque value which allows specifying how sibling tracks should be
25758    /// ordered relative to each other: tracks with lower ranks will appear before
25759    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
25760    /// 0.
25761    ///
25762    /// This rank is used in the following scenarios:
25763    /// - For standard child tracks, if the parent track has `child_ordering` set
25764    ///    to `EXPLICIT`.
25765    /// - For process tracks, if the root track descriptor (uuid = 0) has
25766    ///    `process_ordering` set to `PROCESS_ORDERING_EXPLICIT`.
25767    /// - For thread tracks, if the root track descriptor (uuid = 0) has
25768    ///    `thread_ordering` set to `THREAD_ORDERING_EXPLICIT`.
25769    ///
25770    /// In all other cases, this value is ignored.
25771    #[prost(int32, optional, tag = "12")]
25772    pub sibling_order_rank: ::core::option::Option<i32>,
25773    #[prost(
25774        enumeration = "track_descriptor::SiblingMergeBehavior",
25775        optional,
25776        tag = "15"
25777    )]
25778    pub sibling_merge_behavior: ::core::option::Option<i32>,
25779    #[prost(enumeration = "track_descriptor::ProcessOrdering", optional, tag = "19")]
25780    pub process_ordering: ::core::option::Option<i32>,
25781    #[prost(enumeration = "track_descriptor::ThreadOrdering", optional, tag = "20")]
25782    pub thread_ordering: ::core::option::Option<i32>,
25783    /// Name of the track.
25784    ///
25785    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
25786    /// emitted before any `TrackEvent`s on the same track.
25787    ///
25788    /// Note: any name specified here will be *ignored* for the root thread scoped
25789    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
25790    /// case, the name of the track is shared by many different data sources and so
25791    /// is centrally controlled by trace processor.
25792    ///
25793    /// It's strongly recommended to only emit the name for a track uuid *once*. If
25794    /// a descriptor *has* to be emitted multiple times (e.g. between different
25795    /// processes), it's recommended to ensure that the name is consistent across
25796    /// all TrackDescriptors with the same `uuid`.
25797    ///
25798    /// If the the above recommendation is not followed and the same uuid is
25799    /// emitted with different names, it is implementation defined how the final
25800    /// name will be chosen and may change at any time.
25801    ///
25802    /// The current implementation of trace processor chooses the name in the
25803    /// following way, depending on the value of the `sibling_merge_behavior`
25804    /// field:
25805    ///
25806    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
25807    ///    * The *last* non-null name in the whole trace according to trace order
25808    ///      will be used.
25809    ///    * If no non-null name is present in the whole trace, the trace processor
25810    ///      may fall back to other sources to provide a name for the track (e.g.
25811    ///      the first event name for slice tracks, the counter name for counter
25812    ///      tracks). This is implementation defined and may change at any time.
25813    ///
25814    /// 2. If `sibling_merge_behavior` is set to any other value:
25815    ///    * The first non-null name before the first event on the track *or on any
25816    ///      descendant tracks* is processed will be used. For example, consider
25817    ///      the following sequence of events:
25818    ///        ts=100: TrackDescriptor(uuid=A)
25819    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
25820    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
25821    ///        ts=400: TrackEvent(track_uuid=B)
25822    ///      In this case, the name for track A will be "Track A" because the
25823    ///      descriptor with the name was emitted before the first event on a
25824    ///      descendant track (B).
25825    ///    * If no non-null name is present before the event is processed, the trace
25826    ///      processor may fall back to other sources to provide a name for the
25827    ///      track (e.g. the first event name for slice tracks, the counter name for
25828    ///      counter tracks). This is implementation defined and may change at any
25829    ///      time.
25830    ///    * Note on processing order: In the standard trace processor pipeline,
25831    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
25832    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
25833    ///      track, all its descriptors in the trace are processed before its
25834    ///      events. Consequently, the "first non-null name before the first event"
25835    ///      will be the name from the first `TrackDescriptor` for that track in the
25836    ///      trace file that has a non-null name. However, in a streaming parsing
25837    ///      scenario, the timestamp order of descriptors and events is significant,
25838    ///      and a descriptor arriving after an event has been processed will not be
25839    ///      used to name the track.
25840    #[prost(oneof = "track_descriptor::StaticOrDynamicName", tags = "2, 10, 13")]
25841    pub static_or_dynamic_name: ::core::option::Option<
25842        track_descriptor::StaticOrDynamicName,
25843    >,
25844    /// An opaque value which allows specifying which tracks should be merged
25845    /// together.
25846    ///
25847    /// Only meaningful when `sibling_merge_behavior` is set to
25848    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
25849    #[prost(oneof = "track_descriptor::SiblingMergeKeyField", tags = "16, 17")]
25850    pub sibling_merge_key_field: ::core::option::Option<
25851        track_descriptor::SiblingMergeKeyField,
25852    >,
25853}
25854/// Nested message and enum types in `TrackDescriptor`.
25855pub mod track_descriptor {
25856    /// Specifies how the UI should display child tracks of this track (i.e. tracks
25857    /// where `parent_uuid` is specified to this track `uuid`). Note that this
25858    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
25859    /// this if it has a good reason not to do so.
25860    ///
25861    /// Note: for tracks where `thread` or `process` are set (i.e. process tracks
25862    /// and thread tracks), this option is *ignored*. Instead, use
25863    /// `thread_ordering` and `process_ordering` on the root track descriptor (uuid
25864    /// = 0) to configure process and thread track ordering. See `parent_uuid` for
25865    /// details.
25866    #[derive(
25867        Clone,
25868        Copy,
25869        Debug,
25870        PartialEq,
25871        Eq,
25872        Hash,
25873        PartialOrd,
25874        Ord,
25875        ::prost::Enumeration
25876    )]
25877    #[repr(i32)]
25878    pub enum ChildTracksOrdering {
25879        /// The default ordering, with no bearing on how the UI will visualise the
25880        /// tracks.
25881        Unknown = 0,
25882        /// Order tracks by `name` or `static_name` depending on which one has been
25883        /// specified.
25884        Lexicographic = 1,
25885        /// Order tracks by the first `ts` event in a track.
25886        Chronological = 2,
25887        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
25888        /// the lower values will be shown before tracks with higher values. Tracks
25889        /// with no value will be treated as having 0 rank.
25890        Explicit = 3,
25891    }
25892    impl ChildTracksOrdering {
25893        /// String value of the enum field names used in the ProtoBuf definition.
25894        ///
25895        /// The values are not transformed in any way and thus are considered stable
25896        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25897        pub fn as_str_name(&self) -> &'static str {
25898            match self {
25899                Self::Unknown => "UNKNOWN",
25900                Self::Lexicographic => "LEXICOGRAPHIC",
25901                Self::Chronological => "CHRONOLOGICAL",
25902                Self::Explicit => "EXPLICIT",
25903            }
25904        }
25905        /// Creates an enum from field names used in the ProtoBuf definition.
25906        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25907            match value {
25908                "UNKNOWN" => Some(Self::Unknown),
25909                "LEXICOGRAPHIC" => Some(Self::Lexicographic),
25910                "CHRONOLOGICAL" => Some(Self::Chronological),
25911                "EXPLICIT" => Some(Self::Explicit),
25912                _ => None,
25913            }
25914        }
25915    }
25916    /// Specifies how the analysis tools should "merge" different sibling
25917    /// TrackEvent tracks.
25918    ///
25919    /// For two or more tracks to be merged, they must be "eligible" siblings.
25920    /// Eligibility is determined by the following rules:
25921    /// 1. All tracks must have the same parent.
25922    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
25923    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
25924    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
25925    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
25926    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
25927    ///
25928    /// Specifically:
25929    ///    - in the UI, all tracks which are merged together will be
25930    ///      displayed as a single "visual" track.
25931    ///    - in the trace processor, all tracks which are merged together will be
25932    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
25933    ///      of tracks which have an active event at the same time.
25934    ///
25935    /// When tracks are merged togther, the properties for the merged track will be
25936    /// chosen from the source tracks based on the following rules:
25937    ///    - for `sibling_order_rank`: the rank of the merged track will be the
25938    ///      smallest rank among the source tracks.
25939    ///    - for all other properties: the property taken is unspecified and can
25940    ///      be any value provided by one of the source tracks. This can lead to
25941    ///      non-deterministic behavior.
25942    ///       - examples of other properties include `name`, `child_ordering` etc.
25943    ///       - because of this, it's strongly recommended to ensure that all source
25944    ///         tracks have the same value for these properties.
25945    ///       - the trace processor will also emit an error stat if it detects
25946    ///         that the properties are not the same across all source tracks.
25947    ///
25948    /// Note: merging is done *recursively* so entire trees of tracks can be merged
25949    /// together. To make this clearer, consider an example track hierarchy (in
25950    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
25951    /// track line, like "Updater", is its 'name' property):
25952    ///
25953    ///    Initial track hierarchy:
25954    ///      SystemActivity
25955    ///      ├── AuthService (smk: "auth_main_cluster")
25956    ///      │   └── LoginOp (smk: "login_v1")
25957    ///      ├── AuthService (smk: "auth_main_cluster")
25958    ///      │   └── LoginOp (smk: "login_v1")
25959    ///      ├── AuthService (smk: "auth_backup_cluster")
25960    ///      │   └── GuestOp (smk: "guest_v1")
25961    ///      └── UserProfileService (smk: "profile_cluster")
25962    ///          └── GetProfileOp (smk: "getprofile_v1")
25963    ///
25964    /// Merging outcomes:
25965    ///
25966    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
25967    ///    - The first two "AuthService" tracks merge because they share
25968    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
25969    ///      aligning with recommendations. The merged track is named "AuthService".
25970    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
25971    ///      remains separate, as its `sibling_merge_key` is different.
25972    ///    - "UserProfileService" also remains separate.
25973    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
25974    ///      "LoginOp" get merged as they have the same sibling merge key.
25975    ///
25976    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
25977    ///      SystemActivity
25978    ///      ├── AuthService (merged by smk: "auth_main_cluster")
25979    ///      │   ├── LoginOp (merged by smk: "login_v1")
25980    ///      ├── AuthService (smk: "auth_backup_cluster")
25981    ///      │   └── GuestOp (smk: "guest_v1")
25982    ///      └── UserProfileService (smk: "profile_cluster")
25983    ///          └── GetProfileOp (smk: "getprofile_v1")
25984    ///
25985    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
25986    ///    - All three tracks named "AuthService" merge because they share the same
25987    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
25988    ///      for this merged track would be taken from one of the source tracks
25989    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
25990    ///      relevant if its children had key-based merge behaviors.
25991    ///    - "UserProfileService" remains separate due to its different name.
25992    ///    - Within the single merged "AuthService" track:
25993    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
25994    ///      they have the same name.
25995    ///
25996    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
25997    ///      SystemActivity
25998    ///      ├── AuthService (merged from 3 "AuthService" tracks)
25999    ///      │   ├── LoginOp (smk: "login_v1")
26000    ///      │   └── GuestOp (smk: "guest_v1")
26001    ///      └── UserProfileService (smk: "profile_cluster")
26002    ///          └── GetProfileOp (smk: "getprofile_v1")
26003    ///
26004    /// Note: for tracks where `thread` or `process` are set, this option is
26005    /// *ignored*. See `parent_uuid` for details.
26006    #[derive(
26007        Clone,
26008        Copy,
26009        Debug,
26010        PartialEq,
26011        Eq,
26012        Hash,
26013        PartialOrd,
26014        Ord,
26015        ::prost::Enumeration
26016    )]
26017    #[repr(i32)]
26018    pub enum SiblingMergeBehavior {
26019        /// When unspecified or not set, defaults to
26020        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
26021        Unspecified = 0,
26022        /// Merge this track with eligible siblings which have the same `name`.
26023        ///
26024        /// This is the default behavior.option.
26025        ///
26026        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
26027        /// worked this way for years and inherited this behavior from
26028        /// chrome://tracing which has worked this way for even longer
26029        ByTrackName = 1,
26030        /// Never merge this track with any siblings. Useful if if this track has a
26031        /// specific meaning and you want to see separately from any others.
26032        None = 2,
26033        /// Merge this track with eligible siblings which have the same
26034        /// `sibling_merge_key`.
26035        BySiblingMergeKey = 3,
26036    }
26037    impl SiblingMergeBehavior {
26038        /// String value of the enum field names used in the ProtoBuf definition.
26039        ///
26040        /// The values are not transformed in any way and thus are considered stable
26041        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26042        pub fn as_str_name(&self) -> &'static str {
26043            match self {
26044                Self::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
26045                Self::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
26046                Self::None => "SIBLING_MERGE_BEHAVIOR_NONE",
26047                Self::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
26048            }
26049        }
26050        /// Creates an enum from field names used in the ProtoBuf definition.
26051        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26052            match value {
26053                "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified),
26054                "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME" => Some(Self::ByTrackName),
26055                "SIBLING_MERGE_BEHAVIOR_NONE" => Some(Self::None),
26056                "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY" => {
26057                    Some(Self::BySiblingMergeKey)
26058                }
26059                _ => None,
26060            }
26061        }
26062    }
26063    /// Specifies how the UI should display top-level process tracks relative to
26064    /// each other. Note that this value is simply a *hint* to the UI and is only
26065    /// valid on the root track descriptor (uuid = 0).
26066    #[derive(
26067        Clone,
26068        Copy,
26069        Debug,
26070        PartialEq,
26071        Eq,
26072        Hash,
26073        PartialOrd,
26074        Ord,
26075        ::prost::Enumeration
26076    )]
26077    #[repr(i32)]
26078    pub enum ProcessOrdering {
26079        /// The default ordering, with no bearing on how the UI will visualise the
26080        /// processes.
26081        Unspecified = 0,
26082        /// Order processes by `sibling_order_rank` of their process track
26083        /// descriptors. Processes with lower ranks will be shown before processes
26084        /// with higher ranks. Processes with no rank specified will be treated as
26085        /// having a rank of 0.
26086        Explicit = 1,
26087    }
26088    impl ProcessOrdering {
26089        /// String value of the enum field names used in the ProtoBuf definition.
26090        ///
26091        /// The values are not transformed in any way and thus are considered stable
26092        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26093        pub fn as_str_name(&self) -> &'static str {
26094            match self {
26095                Self::Unspecified => "PROCESS_ORDERING_UNSPECIFIED",
26096                Self::Explicit => "PROCESS_ORDERING_EXPLICIT",
26097            }
26098        }
26099        /// Creates an enum from field names used in the ProtoBuf definition.
26100        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26101            match value {
26102                "PROCESS_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
26103                "PROCESS_ORDERING_EXPLICIT" => Some(Self::Explicit),
26104                _ => None,
26105            }
26106        }
26107    }
26108    /// Specifies how the UI should display thread tracks within a process group
26109    /// relative to each other. Note that this value is simply a *hint* to the UI
26110    /// and is only valid on the root track descriptor (uuid = 0).
26111    #[derive(
26112        Clone,
26113        Copy,
26114        Debug,
26115        PartialEq,
26116        Eq,
26117        Hash,
26118        PartialOrd,
26119        Ord,
26120        ::prost::Enumeration
26121    )]
26122    #[repr(i32)]
26123    pub enum ThreadOrdering {
26124        /// The default ordering, with no bearing on how the UI will visualise the
26125        /// threads.
26126        Unspecified = 0,
26127        /// Order threads by `sibling_order_rank` of their thread track descriptors.
26128        /// Threads with lower ranks will be shown before threads with higher ranks.
26129        /// Threads with no rank specified will be treated as having a rank of 0.
26130        Explicit = 1,
26131    }
26132    impl ThreadOrdering {
26133        /// String value of the enum field names used in the ProtoBuf definition.
26134        ///
26135        /// The values are not transformed in any way and thus are considered stable
26136        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26137        pub fn as_str_name(&self) -> &'static str {
26138            match self {
26139                Self::Unspecified => "THREAD_ORDERING_UNSPECIFIED",
26140                Self::Explicit => "THREAD_ORDERING_EXPLICIT",
26141            }
26142        }
26143        /// Creates an enum from field names used in the ProtoBuf definition.
26144        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26145            match value {
26146                "THREAD_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
26147                "THREAD_ORDERING_EXPLICIT" => Some(Self::Explicit),
26148                _ => None,
26149            }
26150        }
26151    }
26152    /// Name of the track.
26153    ///
26154    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
26155    /// emitted before any `TrackEvent`s on the same track.
26156    ///
26157    /// Note: any name specified here will be *ignored* for the root thread scoped
26158    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
26159    /// case, the name of the track is shared by many different data sources and so
26160    /// is centrally controlled by trace processor.
26161    ///
26162    /// It's strongly recommended to only emit the name for a track uuid *once*. If
26163    /// a descriptor *has* to be emitted multiple times (e.g. between different
26164    /// processes), it's recommended to ensure that the name is consistent across
26165    /// all TrackDescriptors with the same `uuid`.
26166    ///
26167    /// If the the above recommendation is not followed and the same uuid is
26168    /// emitted with different names, it is implementation defined how the final
26169    /// name will be chosen and may change at any time.
26170    ///
26171    /// The current implementation of trace processor chooses the name in the
26172    /// following way, depending on the value of the `sibling_merge_behavior`
26173    /// field:
26174    ///
26175    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
26176    ///    * The *last* non-null name in the whole trace according to trace order
26177    ///      will be used.
26178    ///    * If no non-null name is present in the whole trace, the trace processor
26179    ///      may fall back to other sources to provide a name for the track (e.g.
26180    ///      the first event name for slice tracks, the counter name for counter
26181    ///      tracks). This is implementation defined and may change at any time.
26182    ///
26183    /// 2. If `sibling_merge_behavior` is set to any other value:
26184    ///    * The first non-null name before the first event on the track *or on any
26185    ///      descendant tracks* is processed will be used. For example, consider
26186    ///      the following sequence of events:
26187    ///        ts=100: TrackDescriptor(uuid=A)
26188    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
26189    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
26190    ///        ts=400: TrackEvent(track_uuid=B)
26191    ///      In this case, the name for track A will be "Track A" because the
26192    ///      descriptor with the name was emitted before the first event on a
26193    ///      descendant track (B).
26194    ///    * If no non-null name is present before the event is processed, the trace
26195    ///      processor may fall back to other sources to provide a name for the
26196    ///      track (e.g. the first event name for slice tracks, the counter name for
26197    ///      counter tracks). This is implementation defined and may change at any
26198    ///      time.
26199    ///    * Note on processing order: In the standard trace processor pipeline,
26200    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
26201    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
26202    ///      track, all its descriptors in the trace are processed before its
26203    ///      events. Consequently, the "first non-null name before the first event"
26204    ///      will be the name from the first `TrackDescriptor` for that track in the
26205    ///      trace file that has a non-null name. However, in a streaming parsing
26206    ///      scenario, the timestamp order of descriptors and events is significant,
26207    ///      and a descriptor arriving after an event has been processed will not be
26208    ///      used to name the track.
26209    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26210    pub enum StaticOrDynamicName {
26211        #[prost(string, tag = "2")]
26212        Name(::prost::alloc::string::String),
26213        /// This field is only set by the SDK when perfetto::StaticString is
26214        /// provided.
26215        #[prost(string, tag = "10")]
26216        StaticName(::prost::alloc::string::String),
26217        /// Equivalent to name, used just to mark that the data is coming from
26218        /// android.os.Trace.
26219        #[prost(string, tag = "13")]
26220        AtraceName(::prost::alloc::string::String),
26221    }
26222    /// An opaque value which allows specifying which tracks should be merged
26223    /// together.
26224    ///
26225    /// Only meaningful when `sibling_merge_behavior` is set to
26226    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
26227    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26228    pub enum SiblingMergeKeyField {
26229        #[prost(string, tag = "16")]
26230        SiblingMergeKey(::prost::alloc::string::String),
26231        #[prost(uint64, tag = "17")]
26232        SiblingMergeKeyInt(u64),
26233    }
26234}
26235/// Translation rules for the trace processor.
26236/// See the comments for each rule type for specific meaning.
26237#[derive(Clone, PartialEq, ::prost::Message)]
26238pub struct TranslationTable {
26239    #[prost(oneof = "translation_table::Table", tags = "1, 2, 3, 4, 5, 6")]
26240    pub table: ::core::option::Option<translation_table::Table>,
26241}
26242/// Nested message and enum types in `TranslationTable`.
26243pub mod translation_table {
26244    #[derive(Clone, PartialEq, ::prost::Oneof)]
26245    pub enum Table {
26246        #[prost(message, tag = "1")]
26247        ChromeHistogram(super::ChromeHistorgramTranslationTable),
26248        #[prost(message, tag = "2")]
26249        ChromeUserEvent(super::ChromeUserEventTranslationTable),
26250        #[prost(message, tag = "3")]
26251        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
26252        #[prost(message, tag = "4")]
26253        SliceName(super::SliceNameTranslationTable),
26254        #[prost(message, tag = "5")]
26255        ProcessTrackName(super::ProcessTrackNameTranslationTable),
26256        #[prost(message, tag = "6")]
26257        ChromeStudy(super::ChromeStudyTranslationTable),
26258    }
26259}
26260/// Chrome histogram sample hash -> name translation rules.
26261#[derive(Clone, PartialEq, ::prost::Message)]
26262pub struct ChromeHistorgramTranslationTable {
26263    #[prost(map = "uint64, string", tag = "1")]
26264    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
26265}
26266/// Chrome user event action hash -> name translation rules.
26267#[derive(Clone, PartialEq, ::prost::Message)]
26268pub struct ChromeUserEventTranslationTable {
26269    #[prost(map = "uint64, string", tag = "1")]
26270    pub action_hash_to_name: ::std::collections::HashMap<
26271        u64,
26272        ::prost::alloc::string::String,
26273    >,
26274}
26275/// Chrome performance mark translation rules.
26276#[derive(Clone, PartialEq, ::prost::Message)]
26277pub struct ChromePerformanceMarkTranslationTable {
26278    #[prost(map = "uint32, string", tag = "1")]
26279    pub site_hash_to_name: ::std::collections::HashMap<
26280        u32,
26281        ::prost::alloc::string::String,
26282    >,
26283    #[prost(map = "uint32, string", tag = "2")]
26284    pub mark_hash_to_name: ::std::collections::HashMap<
26285        u32,
26286        ::prost::alloc::string::String,
26287    >,
26288}
26289/// Raw -> deobfuscated slice name translation rules.
26290#[derive(Clone, PartialEq, ::prost::Message)]
26291pub struct SliceNameTranslationTable {
26292    #[prost(map = "string, string", tag = "1")]
26293    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
26294        ::prost::alloc::string::String,
26295        ::prost::alloc::string::String,
26296    >,
26297}
26298/// Raw -> deobfuscated process track name translation rules.
26299#[derive(Clone, PartialEq, ::prost::Message)]
26300pub struct ProcessTrackNameTranslationTable {
26301    #[prost(map = "string, string", tag = "1")]
26302    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
26303        ::prost::alloc::string::String,
26304        ::prost::alloc::string::String,
26305    >,
26306}
26307/// Chrome study hash -> name translation rules.
26308#[derive(Clone, PartialEq, ::prost::Message)]
26309pub struct ChromeStudyTranslationTable {
26310    #[prost(map = "uint64, string", tag = "1")]
26311    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
26312}
26313/// When a TracingSession receives a trigger it records the boot time nanoseconds
26314/// in the TracePacket's timestamp field as well as the name of the producer that
26315/// triggered it. We emit this data so filtering can be done on triggers received
26316/// in the trace.
26317#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26318pub struct Trigger {
26319    /// Name of the trigger which was received.
26320    #[prost(string, optional, tag = "1")]
26321    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
26322    /// The actual producer that activated |trigger|.
26323    #[prost(string, optional, tag = "2")]
26324    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
26325    /// The verified UID of the producer.
26326    #[prost(int32, optional, tag = "3")]
26327    pub trusted_producer_uid: ::core::option::Option<i32>,
26328    /// The value of stop_delay_ms from the configuration.
26329    #[prost(uint64, optional, tag = "4")]
26330    pub stop_delay_ms: ::core::option::Option<u64>,
26331}
26332/// Common state for UIs visualizing Perfetto traces.
26333/// This message can be appended as a TracePacket by UIs to save the
26334/// visible state (e.g. scroll position/zoom state) for future opening
26335/// of the trace.
26336/// Design doc: go/trace-ui-state.
26337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26338pub struct UiState {
26339    /// The start and end bounds of the viewport of the UI in nanoseconds.
26340    ///
26341    /// This is the absolute time associated to slices and other events in
26342    /// trace processor tables (i.e. the |ts| column of most tables)
26343    #[prost(int64, optional, tag = "1")]
26344    pub timeline_start_ts: ::core::option::Option<i64>,
26345    #[prost(int64, optional, tag = "2")]
26346    pub timeline_end_ts: ::core::option::Option<i64>,
26347    #[prost(message, optional, tag = "3")]
26348    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
26349}
26350/// Nested message and enum types in `UiState`.
26351pub mod ui_state {
26352    /// Indicates that the given process should be highlighted by the UI.
26353    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26354    pub struct HighlightProcess {
26355        #[prost(oneof = "highlight_process::Selector", tags = "1, 2")]
26356        pub selector: ::core::option::Option<highlight_process::Selector>,
26357    }
26358    /// Nested message and enum types in `HighlightProcess`.
26359    pub mod highlight_process {
26360        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26361        pub enum Selector {
26362            /// The pid of the process to highlight. This is useful for UIs to focus
26363            /// on tracks of a particular process in the trace.
26364            ///
26365            /// If more than one process in a trace has the same pid, it is UI
26366            /// implementation specific how the process to be focused will be
26367            /// chosen.
26368            #[prost(uint32, tag = "1")]
26369            Pid(u32),
26370            /// The command line of the process to highlight; for most Android apps,
26371            /// this is the package name of the app. This is useful for UIs to focus
26372            /// on a particular app in the trace.
26373            ///
26374            /// If more than one process hasthe same cmdline, it is UI implementation
26375            /// specific how the process to be focused will be chosen.
26376            #[prost(string, tag = "2")]
26377            Cmdline(::prost::alloc::string::String),
26378        }
26379    }
26380}
26381/// TracePacket is the root object of a Perfetto trace.
26382/// A Perfetto trace is a linear sequence of TracePacket(s).
26383///
26384/// The tracing service guarantees that all TracePacket(s) written by a given
26385/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
26386/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
26387/// to the Consumer (or written into the trace file).
26388/// TracePacket(s) written by different TraceWriter(s), hence even different
26389/// data sources, can be seen in arbitrary order.
26390/// The consumer can re-establish a total order, if interested, using the packet
26391/// timestamps, after having synchronized the different clocks onto a global
26392/// clock.
26393///
26394/// The tracing service is agnostic of the content of TracePacket, with the
26395/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
26396/// the service itself.
26397///
26398/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
26399///
26400/// Next reserved id: 14 (up to 15).
26401/// Next id: 139.
26402#[derive(Clone, PartialEq, ::prost::Message)]
26403pub struct TracePacket {
26404    /// The timestamp of the TracePacket.
26405    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
26406    /// Android). It can be overridden using a different timestamp_clock_id.
26407    /// The clock domain definition in ClockSnapshot can also override:
26408    /// - The unit (default: 1ns).
26409    /// - The absolute vs delta encoding (default: absolute timestamp).
26410    #[prost(uint64, optional, tag = "8")]
26411    pub timestamp: ::core::option::Option<u64>,
26412    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
26413    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
26414    /// producer-defined clock id.
26415    /// If unspecified and if no default per-sequence value has been provided via
26416    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
26417    #[prost(uint32, optional, tag = "58")]
26418    pub timestamp_clock_id: ::core::option::Option<u32>,
26419    /// Trusted process id of the producer which generated this packet, written by
26420    /// the service.
26421    #[prost(int32, optional, tag = "79")]
26422    pub trusted_pid: ::core::option::Option<i32>,
26423    /// Incrementally emitted interned data, valid only on the packet's sequence
26424    /// (packets with the same |trusted_packet_sequence_id|). The writer will
26425    /// usually emit new interned data in the same TracePacket that first refers to
26426    /// it (since the last reset of interning state). It may also be emitted
26427    /// proactively in advance of referring to them in later packets.
26428    #[prost(message, optional, tag = "12")]
26429    pub interned_data: ::core::option::Option<InternedData>,
26430    #[prost(uint32, optional, tag = "13")]
26431    pub sequence_flags: ::core::option::Option<u32>,
26432    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
26433    #[prost(bool, optional, tag = "41")]
26434    pub incremental_state_cleared: ::core::option::Option<bool>,
26435    /// Default values for fields of later TracePackets emitted on this packet's
26436    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
26437    /// It must be reemitted when incremental state is cleared (see
26438    /// |incremental_state_cleared|).
26439    /// Requires that any future packet emitted on the same sequence specifies
26440    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
26441    /// TracePacketDefaults always override the global defaults for any future
26442    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
26443    #[prost(message, optional, tag = "59")]
26444    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
26445    /// Set by the service if, for the current packet sequence (see
26446    /// |trusted_packet_sequence_id|), either:
26447    /// * this is the first packet, or
26448    /// * one or multiple packets were dropped since the last packet that the
26449    ///    consumer read from the sequence. This can happen if chunks in the trace
26450    ///    buffer are overridden before the consumer could read them when the trace
26451    ///    is configured in ring buffer mode.
26452    ///
26453    /// 0 means not dropped, nonzero means dropped (so this stays compatible with
26454    /// the historical bool semantics). The value is a DataLossReason bitmask:
26455    /// DATA_LOSS_PRESENT (bit 0) is always set when there is a loss, and
26456    /// TraceBufferV2 additionally sets a bit identifying the cause. TraceBufferV1
26457    /// and producer-signalled drops set the bare value 1 (DATA_LOSS_PRESENT), i.e.
26458    /// dropped with no specific cause attributed.
26459    ///
26460    /// When packet loss occurs, incrementally emitted data (including interned
26461    /// data) on the sequence should be considered invalid up until the next packet
26462    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
26463    #[prost(uint32, optional, tag = "42")]
26464    pub previous_packet_dropped: ::core::option::Option<u32>,
26465    /// Flag set by a producer (starting from SDK v29) if, for the current packet
26466    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
26467    ///
26468    /// This flag can be used for distinguishing the two situations when
26469    /// processing the trace:
26470    /// 1. There are no prior events for the sequence because of data loss, e.g.
26471    ///     due to ring buffer wrapping.
26472    /// 2. There are no prior events for the sequence because it didn't start
26473    ///     before this packet (= there's definitely no preceding data loss).
26474    ///
26475    /// Given that older SDK versions do not support this flag, this flag not
26476    /// being present for a particular sequence does not necessarily imply data
26477    /// loss.
26478    #[prost(bool, optional, tag = "87")]
26479    pub first_packet_on_sequence: ::core::option::Option<bool>,
26480    /// The machine ID for identifying trace packets in a multi-machine tracing
26481    /// session. Is emitted by the tracing service for producers running on a
26482    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
26483    #[prost(uint32, optional, tag = "98")]
26484    pub machine_id: ::core::option::Option<u32>,
26485    #[prost(
26486        oneof = "trace_packet::Data",
26487        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"
26488    )]
26489    pub data: ::core::option::Option<trace_packet::Data>,
26490    /// Trusted user id of the producer which generated this packet. Keep in sync
26491    /// with TrustedPacket.trusted_uid.
26492    ///
26493    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
26494    /// instead.
26495    #[prost(oneof = "trace_packet::OptionalTrustedUid", tags = "3")]
26496    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
26497    /// Service-assigned identifier of the packet sequence this packet belongs to.
26498    /// Uniquely identifies a producer + writer pair within the tracing session. A
26499    /// value of zero denotes an invalid ID. Keep in sync with
26500    /// TrustedPacket.trusted_packet_sequence_id.
26501    #[prost(oneof = "trace_packet::OptionalTrustedPacketSequenceId", tags = "10")]
26502    pub optional_trusted_packet_sequence_id: ::core::option::Option<
26503        trace_packet::OptionalTrustedPacketSequenceId,
26504    >,
26505}
26506/// Nested message and enum types in `TracePacket`.
26507pub mod trace_packet {
26508    /// Encapsulates the state and configuration of the ProtoVM instances running
26509    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
26510    /// and use them to inflate patches into full-state packets.
26511    /// Note: this message can't be defined in a dedicated file because it has a
26512    /// recursive dependency with TracePacket (see 'state' field below).
26513    #[derive(Clone, PartialEq, ::prost::Message)]
26514    pub struct ProtoVms {
26515        #[prost(message, repeated, tag = "1")]
26516        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
26517    }
26518    /// Nested message and enum types in `ProtoVms`.
26519    pub mod proto_vms {
26520        #[derive(Clone, PartialEq, ::prost::Message)]
26521        pub struct Instance {
26522            #[prost(message, optional, tag = "1")]
26523            pub program: ::core::option::Option<super::super::VmProgram>,
26524            #[prost(message, optional, tag = "2")]
26525            pub state: ::core::option::Option<super::super::TracePacket>,
26526            #[prost(uint32, optional, tag = "3")]
26527            pub memory_limit_kb: ::core::option::Option<u32>,
26528            #[prost(int32, repeated, packed = "false", tag = "4")]
26529            pub producer_id: ::prost::alloc::vec::Vec<i32>,
26530        }
26531    }
26532    #[derive(
26533        Clone,
26534        Copy,
26535        Debug,
26536        PartialEq,
26537        Eq,
26538        Hash,
26539        PartialOrd,
26540        Ord,
26541        ::prost::Enumeration
26542    )]
26543    #[repr(i32)]
26544    pub enum SequenceFlags {
26545        SeqUnspecified = 0,
26546        /// Set by the writer to indicate that it will re-emit any incremental data
26547        /// for the packet's sequence before referring to it again. This includes
26548        /// interned data as well as periodically emitted data like
26549        /// Process/ThreadDescriptors. This flag only affects the current packet
26550        /// sequence (see |trusted_packet_sequence_id|).
26551        ///
26552        /// When set, this TracePacket and subsequent TracePackets on the same
26553        /// sequence will not refer to any incremental data emitted before this
26554        /// TracePacket. For example, previously emitted interned data will be
26555        /// re-emitted if it is referred to again.
26556        ///
26557        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
26558        /// to skip packets in the sequence until the next one with this flag set, to
26559        /// ensure intact incremental data.
26560        SeqIncrementalStateCleared = 1,
26561        /// This packet requires incremental state, such as TracePacketDefaults or
26562        /// InternedData, to be parsed correctly. The trace reader should skip this
26563        /// packet if incremental state is not valid on this sequence, i.e. if no
26564        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
26565        /// current |trusted_packet_sequence_id|.
26566        SeqNeedsIncrementalState = 2,
26567    }
26568    impl SequenceFlags {
26569        /// String value of the enum field names used in the ProtoBuf definition.
26570        ///
26571        /// The values are not transformed in any way and thus are considered stable
26572        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26573        pub fn as_str_name(&self) -> &'static str {
26574            match self {
26575                Self::SeqUnspecified => "SEQ_UNSPECIFIED",
26576                Self::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
26577                Self::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
26578            }
26579        }
26580        /// Creates an enum from field names used in the ProtoBuf definition.
26581        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26582            match value {
26583                "SEQ_UNSPECIFIED" => Some(Self::SeqUnspecified),
26584                "SEQ_INCREMENTAL_STATE_CLEARED" => Some(Self::SeqIncrementalStateCleared),
26585                "SEQ_NEEDS_INCREMENTAL_STATE" => Some(Self::SeqNeedsIncrementalState),
26586                _ => None,
26587            }
26588        }
26589    }
26590    /// Bit flags OR-ed together into |previous_packet_dropped| to describe why
26591    /// packets were dropped. DATA_LOSS_PRESENT is set on every loss; the remaining
26592    /// bits attribute the cause and are set either by TraceBufferV2 in the service
26593    /// or by the producer's trace writer.
26594    #[derive(
26595        Clone,
26596        Copy,
26597        Debug,
26598        PartialEq,
26599        Eq,
26600        Hash,
26601        PartialOrd,
26602        Ord,
26603        ::prost::Enumeration
26604    )]
26605    #[repr(i32)]
26606    pub enum DataLossReason {
26607        DataLossUnspecified = 0,
26608        /// A loss was detected (set on every loss). On its own (value 1) it means
26609        /// dropped with no specific cause, e.g. TraceBufferV1 or a producer.
26610        DataLossPresent = 1,
26611        /// A read started on a non-successor ChunkID (a gap in the stream).
26612        DataLossReadGap = 2,
26613        /// A chunk's fragments couldn't be tokenized (malformed / out-of-bounds).
26614        DataLossChunkCorrupted = 4,
26615        /// A continuation/end fragment with no preceding begin fragment.
26616        DataLossOrphanContinuation = 8,
26617        /// Reassembly abandoned because of a ChunkID gap mid-packet.
26618        DataLossReassemblyGap = 16,
26619        /// Reassembly abandoned because the fragment chain was broken even though
26620        /// the ChunkIDs were contiguous.
26621        DataLossReassemblyBrokenChain = 32,
26622        /// Unconsumed fragments were evicted while overwriting (ring buffer wrap).
26623        DataLossOverwrite = 64,
26624        /// The trace writer aborted an in-progress fragmented packet (it stamped
26625        /// the kPacketSizeDropPacket sentinel in the last fragment header).
26626        DataLossWriterAbort = 128,
26627        /// The producer's shared memory buffer was full: the trace writer couldn't
26628        /// acquire a chunk and dropped packets until one became available. Set by
26629        /// the producer, not the service.
26630        DataLossSmbFull = 256,
26631    }
26632    impl DataLossReason {
26633        /// String value of the enum field names used in the ProtoBuf definition.
26634        ///
26635        /// The values are not transformed in any way and thus are considered stable
26636        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26637        pub fn as_str_name(&self) -> &'static str {
26638            match self {
26639                Self::DataLossUnspecified => "DATA_LOSS_UNSPECIFIED",
26640                Self::DataLossPresent => "DATA_LOSS_PRESENT",
26641                Self::DataLossReadGap => "DATA_LOSS_READ_GAP",
26642                Self::DataLossChunkCorrupted => "DATA_LOSS_CHUNK_CORRUPTED",
26643                Self::DataLossOrphanContinuation => "DATA_LOSS_ORPHAN_CONTINUATION",
26644                Self::DataLossReassemblyGap => "DATA_LOSS_REASSEMBLY_GAP",
26645                Self::DataLossReassemblyBrokenChain => {
26646                    "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN"
26647                }
26648                Self::DataLossOverwrite => "DATA_LOSS_OVERWRITE",
26649                Self::DataLossWriterAbort => "DATA_LOSS_WRITER_ABORT",
26650                Self::DataLossSmbFull => "DATA_LOSS_SMB_FULL",
26651            }
26652        }
26653        /// Creates an enum from field names used in the ProtoBuf definition.
26654        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26655            match value {
26656                "DATA_LOSS_UNSPECIFIED" => Some(Self::DataLossUnspecified),
26657                "DATA_LOSS_PRESENT" => Some(Self::DataLossPresent),
26658                "DATA_LOSS_READ_GAP" => Some(Self::DataLossReadGap),
26659                "DATA_LOSS_CHUNK_CORRUPTED" => Some(Self::DataLossChunkCorrupted),
26660                "DATA_LOSS_ORPHAN_CONTINUATION" => Some(Self::DataLossOrphanContinuation),
26661                "DATA_LOSS_REASSEMBLY_GAP" => Some(Self::DataLossReassemblyGap),
26662                "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN" => {
26663                    Some(Self::DataLossReassemblyBrokenChain)
26664                }
26665                "DATA_LOSS_OVERWRITE" => Some(Self::DataLossOverwrite),
26666                "DATA_LOSS_WRITER_ABORT" => Some(Self::DataLossWriterAbort),
26667                "DATA_LOSS_SMB_FULL" => Some(Self::DataLossSmbFull),
26668                _ => None,
26669            }
26670        }
26671    }
26672    #[derive(Clone, PartialEq, ::prost::Oneof)]
26673    pub enum Data {
26674        ///
26675        /// == STABLE PUBLIC API: TrackEvent ==
26676        ///
26677        /// TrackEvent is the stable, extensible API for recording trace events.
26678        /// See docs/instrumentation/track-events.md for details.
26679        #[prost(message, tag = "11")]
26680        TrackEvent(super::TrackEvent),
26681        #[prost(message, tag = "60")]
26682        TrackDescriptor(super::TrackDescriptor),
26683        ///
26684        /// == STABLE PUBLIC API: GENERIC KERNEL EVENTS ==
26685        ///
26686        /// Stable API for OS-level and hardware events from non-ftrace data
26687        /// sources.
26688        #[prost(message, tag = "117")]
26689        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
26690        #[prost(message, tag = "118")]
26691        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
26692        #[prost(message, tag = "120")]
26693        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
26694        #[prost(message, tag = "122")]
26695        GenericKernelProcessTree(super::GenericKernelProcessTree),
26696        #[prost(message, tag = "129")]
26697        GenericGpuFrequencyEvent(super::GenericGpuFrequencyEvent),
26698        /// IDs up to 15 are reserved. They take only one byte to encode their
26699        /// preamble so should be used for frequent events.
26700        #[prost(message, tag = "2")]
26701        ProcessTree(super::ProcessTree),
26702        #[prost(message, tag = "90")]
26703        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
26704        #[prost(message, tag = "9")]
26705        ProcessStats(super::ProcessStats),
26706        #[prost(message, tag = "4")]
26707        InodeFileMap(super::InodeFileMap),
26708        #[prost(message, tag = "5")]
26709        ChromeEvents(super::ChromeEventBundle),
26710        #[prost(message, tag = "6")]
26711        ClockSnapshot(super::ClockSnapshot),
26712        #[prost(message, tag = "7")]
26713        SysStats(super::SysStats),
26714        #[prost(message, tag = "89")]
26715        TraceUuid(super::TraceUuid),
26716        #[prost(message, tag = "33")]
26717        TraceConfig(super::TraceConfig),
26718        #[prost(message, tag = "34")]
26719        FtraceStats(super::FtraceStats),
26720        #[prost(message, tag = "35")]
26721        TraceStats(super::TraceStats),
26722        #[prost(message, tag = "37")]
26723        ProfilePacket(super::ProfilePacket),
26724        #[prost(message, tag = "74")]
26725        StreamingAllocation(super::StreamingAllocation),
26726        #[prost(message, tag = "75")]
26727        StreamingFree(super::StreamingFree),
26728        #[prost(message, tag = "38")]
26729        Battery(super::BatteryCounters),
26730        #[prost(message, tag = "40")]
26731        PowerRails(super::PowerRails),
26732        #[prost(message, tag = "39")]
26733        AndroidLog(super::AndroidLogPacket),
26734        #[prost(message, tag = "45")]
26735        SystemInfo(super::SystemInfo),
26736        #[prost(message, tag = "46")]
26737        Trigger(super::Trigger),
26738        #[prost(message, tag = "109")]
26739        ChromeTrigger(super::ChromeTrigger),
26740        #[prost(message, tag = "47")]
26741        PackagesList(super::PackagesList),
26742        #[prost(message, tag = "48")]
26743        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
26744        #[prost(message, tag = "49")]
26745        PerfettoMetatrace(super::PerfettoMetatrace),
26746        #[prost(message, tag = "51")]
26747        ChromeMetadata(super::ChromeMetadataPacket),
26748        #[prost(message, tag = "52")]
26749        GpuCounterEvent(super::GpuCounterEvent),
26750        #[prost(message, tag = "53")]
26751        GpuRenderStageEvent(super::GpuRenderStageEvent),
26752        #[prost(message, tag = "54")]
26753        StreamingProfilePacket(super::StreamingProfilePacket),
26754        #[prost(message, tag = "131")]
26755        ArtProcessMetadata(super::ArtProcessMetadata),
26756        #[prost(message, tag = "57")]
26757        GraphicsFrameEvent(super::GraphicsFrameEvent),
26758        #[prost(message, tag = "62")]
26759        VulkanMemoryEvent(super::VulkanMemoryEvent),
26760        #[prost(message, tag = "63")]
26761        GpuLog(super::GpuLog),
26762        #[prost(message, tag = "65")]
26763        VulkanApiEvent(super::VulkanApiEvent),
26764        #[prost(message, tag = "66")]
26765        PerfSample(super::PerfSample),
26766        #[prost(message, tag = "67")]
26767        CpuInfo(super::CpuInfo),
26768        #[prost(message, tag = "68")]
26769        SmapsPacket(super::SmapsPacket),
26770        #[prost(message, tag = "69")]
26771        ServiceEvent(super::TracingServiceEvent),
26772        #[prost(message, tag = "134")]
26773        ConcurrentSessionEvent(super::ConcurrentSessionEvent),
26774        /// Transport-neutral stack sampling (see profiling/stack_sample.proto).
26775        /// Independent of PerfSample.
26776        #[prost(message, tag = "135")]
26777        StackSample(super::StackSample),
26778        #[prost(message, tag = "70")]
26779        InitialDisplayState(super::InitialDisplayState),
26780        #[prost(message, tag = "71")]
26781        GpuMemTotalEvent(super::GpuMemTotalEvent),
26782        #[prost(message, tag = "73")]
26783        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
26784        #[prost(message, tag = "77")]
26785        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
26786        #[prost(message, tag = "78")]
26787        UiState(super::UiState),
26788        #[prost(message, tag = "82")]
26789        TranslationTable(super::TranslationTable),
26790        #[prost(message, tag = "83")]
26791        AndroidGameInterventionList(super::AndroidGameInterventionList),
26792        #[prost(message, tag = "84")]
26793        StatsdAtom(super::StatsdAtom),
26794        #[prost(message, tag = "86")]
26795        AndroidSystemProperty(super::AndroidSystemProperty),
26796        #[prost(message, tag = "91")]
26797        EntityStateResidency(super::EntityStateResidency),
26798        #[prost(message, tag = "124")]
26799        TraceProvenance(super::TraceProvenance),
26800        #[prost(message, tag = "125")]
26801        Protovms(ProtoVms),
26802        #[prost(message, tag = "126")]
26803        TraceAttributes(super::TraceAttributes),
26804        #[prost(message, tag = "127")]
26805        AndroidAflags(super::AndroidAflags),
26806        #[prost(message, tag = "128")]
26807        GpuInfo(super::GpuInfo),
26808        #[prost(message, tag = "130")]
26809        InterruptInfo(super::InterruptInfo),
26810        /// Only used in profile packets.
26811        #[prost(message, tag = "61")]
26812        ModuleSymbols(super::ModuleSymbols),
26813        #[prost(message, tag = "64")]
26814        DeobfuscationMapping(super::DeobfuscationMapping),
26815        /// Deprecated, use TrackDescriptor instead.
26816        #[prost(message, tag = "43")]
26817        ProcessDescriptor(super::ProcessDescriptor),
26818        /// Deprecated, use TrackDescriptor instead.
26819        #[prost(message, tag = "44")]
26820        ThreadDescriptor(super::ThreadDescriptor),
26821        /// Events from the Linux kernel ftrace infrastructure.
26822        #[prost(message, tag = "1")]
26823        FtraceEvents(super::FtraceEventBundle),
26824        /// This field is emitted at periodic intervals (~10s) and
26825        /// contains always the binary representation of the UUID
26826        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
26827        /// efficiently partition long traces without having to fully parse them.
26828        #[prost(bytes, tag = "36")]
26829        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
26830        /// Zero or more proto encoded trace packets compressed using deflate.
26831        /// Each compressed_packets TracePacket (including the two field ids and
26832        /// sizes) should be less than 512KB.
26833        #[prost(bytes, tag = "50")]
26834        CompressedPackets(::prost::alloc::vec::Vec<u8>),
26835        /// The zstd counterpart of |compressed_packets|.
26836        #[prost(bytes, tag = "133")]
26837        ZstdCompressedPackets(::prost::alloc::vec::Vec<u8>),
26838        /// Data sources can extend the trace proto with custom extension protos (see
26839        /// docs/instrumentation/extensions.md). When they do that, the descriptor of
26840        /// their extension proto descriptor is serialized in this packet. This
26841        /// allows trace_processor to deserialize extended messages using reflection
26842        /// even if the extension proto is not checked in the Perfetto repo.
26843        #[prost(message, tag = "72")]
26844        ExtensionDescriptor(super::ExtensionDescriptor),
26845        /// Events from the Windows etw infrastructure.
26846        #[prost(message, tag = "95")]
26847        EtwEvents(super::EtwTraceEventBundle),
26848        #[prost(message, tag = "99")]
26849        V8JsCode(super::V8JsCode),
26850        #[prost(message, tag = "100")]
26851        V8InternalCode(super::V8InternalCode),
26852        #[prost(message, tag = "101")]
26853        V8WasmCode(super::V8WasmCode),
26854        #[prost(message, tag = "102")]
26855        V8RegExpCode(super::V8RegExpCode),
26856        #[prost(message, tag = "103")]
26857        V8CodeMove(super::V8CodeMove),
26858        /// Clock synchronization with remote machines.
26859        #[prost(message, tag = "107")]
26860        RemoteClockSync(super::RemoteClockSync),
26861        #[prost(message, tag = "110")]
26862        PixelModemEvents(super::PixelModemEvents),
26863        #[prost(message, tag = "111")]
26864        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
26865        #[prost(message, tag = "113")]
26866        CloneSnapshotTrigger(super::Trigger),
26867        #[prost(message, tag = "115")]
26868        KernelWakelockData(super::KernelWakelockData),
26869        #[prost(message, tag = "119")]
26870        CpuPerUidData(super::CpuPerUidData),
26871        #[prost(message, tag = "123")]
26872        UserList(super::AndroidUserList),
26873        #[prost(message, tag = "132")]
26874        JournaldEvent(super::SystemdJournaldEvent),
26875        /// Injected into TracePacket by perfetto post-reboot recovery to record
26876        /// recovered trace metadata.
26877        #[prost(message, tag = "138")]
26878        RecoveredTraceInfo(super::RecoveredTraceInfo),
26879        /// This field is only used for testing.
26880        /// In previous versions of this proto this field had the id 268435455
26881        /// This caused many problems:
26882        /// - protozero decoder does not handle field ids larger than 999.
26883        /// - old versions of protoc produce Java bindings with syntax errors when
26884        ///    the field id is large enough.
26885        #[prost(message, tag = "900")]
26886        ForTesting(super::TestEvent),
26887        #[prost(message, tag = "76")]
26888        FrameTimelineEvent(super::FrameTimelineEvent),
26889    }
26890    /// Trusted user id of the producer which generated this packet. Keep in sync
26891    /// with TrustedPacket.trusted_uid.
26892    ///
26893    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
26894    /// instead.
26895    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
26896    pub enum OptionalTrustedUid {
26897        #[prost(int32, tag = "3")]
26898        TrustedUid(i32),
26899    }
26900    /// Service-assigned identifier of the packet sequence this packet belongs to.
26901    /// Uniquely identifies a producer + writer pair within the tracing session. A
26902    /// value of zero denotes an invalid ID. Keep in sync with
26903    /// TrustedPacket.trusted_packet_sequence_id.
26904    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
26905    pub enum OptionalTrustedPacketSequenceId {
26906        #[prost(uint32, tag = "10")]
26907        TrustedPacketSequenceId(u32),
26908    }
26909}
26910#[derive(Clone, PartialEq, ::prost::Message)]
26911pub struct Trace {
26912    #[prost(message, repeated, tag = "1")]
26913    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
26914}
26915/// Re-added for Fuchsia/Starnix compatibility:
26916#[derive(Clone, PartialEq, ::prost::Message)]
26917pub struct FrameTimelineEvent {
26918    #[prost(oneof = "frame_timeline_event::Event", tags = "1, 2, 3, 4, 5")]
26919    pub event: ::core::option::Option<frame_timeline_event::Event>,
26920}
26921/// Nested message and enum types in `FrameTimelineEvent`.
26922pub mod frame_timeline_event {
26923    /// Indicates the start of expected timeline slice for SurfaceFrames.
26924    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26925    pub struct ExpectedSurfaceFrameStart {
26926        /// Cookie used to correlate between the start and end messages of the same
26927        /// frame. Since all values except the ts are same for start and end, cookie
26928        /// helps in preventing redundant data transmission.
26929        /// The same cookie is used only by start and end messages of a single frame
26930        /// and is otherwise unique.
26931        #[prost(int64, optional, tag = "1")]
26932        pub cookie: ::core::option::Option<i64>,
26933        /// Token received by the app for its work. Can be shared between multiple
26934        /// layers of the same app (example: pip mode).
26935        #[prost(int64, optional, tag = "2")]
26936        pub token: ::core::option::Option<i64>,
26937        /// The corresponding DisplayFrame token is required to link the App's work
26938        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
26939        /// DisplayFrame.
26940        /// this.display_frame_token = DisplayFrame.token
26941        #[prost(int64, optional, tag = "3")]
26942        pub display_frame_token: ::core::option::Option<i64>,
26943        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
26944        /// the respective process track group.
26945        #[prost(int32, optional, tag = "4")]
26946        pub pid: ::core::option::Option<i32>,
26947        #[prost(string, optional, tag = "5")]
26948        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
26949    }
26950    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
26951    /// includes the jank information.
26952    #[derive(Clone, PartialEq, ::prost::Message)]
26953    pub struct ActualSurfaceFrameStart {
26954        /// Cookie used to correlate between the start and end messages of the same
26955        /// frame. Since all values except the ts are same for start and end, cookie
26956        /// helps in preventing redundant data transmission.
26957        /// The same cookie is used only by start and end messages of a single frame
26958        /// and is otherwise unique.
26959        #[prost(int64, optional, tag = "1")]
26960        pub cookie: ::core::option::Option<i64>,
26961        /// Token received by the app for its work. Can be shared between multiple
26962        /// layers of the same app (example: pip mode).
26963        #[prost(int64, optional, tag = "2")]
26964        pub token: ::core::option::Option<i64>,
26965        /// The corresponding DisplayFrame token is required to link the App's work
26966        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
26967        /// DisplayFrame.
26968        /// this.display_frame_token = DisplayFrame.token
26969        #[prost(int64, optional, tag = "3")]
26970        pub display_frame_token: ::core::option::Option<i64>,
26971        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
26972        /// the respective process track group.
26973        #[prost(int32, optional, tag = "4")]
26974        pub pid: ::core::option::Option<i32>,
26975        #[prost(string, optional, tag = "5")]
26976        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
26977        #[prost(enumeration = "PresentType", optional, tag = "6")]
26978        pub present_type: ::core::option::Option<i32>,
26979        #[prost(bool, optional, tag = "7")]
26980        pub on_time_finish: ::core::option::Option<bool>,
26981        #[prost(bool, optional, tag = "8")]
26982        pub gpu_composition: ::core::option::Option<bool>,
26983        /// A bitmask of JankType. More than one reason can be attributed to a janky
26984        /// frame.
26985        #[prost(int32, optional, tag = "9")]
26986        pub jank_type: ::core::option::Option<i32>,
26987        #[prost(enumeration = "PredictionType", optional, tag = "10")]
26988        pub prediction_type: ::core::option::Option<i32>,
26989        #[prost(bool, optional, tag = "11")]
26990        pub is_buffer: ::core::option::Option<bool>,
26991        #[prost(enumeration = "JankSeverityType", optional, tag = "12")]
26992        pub jank_severity_type: ::core::option::Option<i32>,
26993        #[prost(float, optional, tag = "13")]
26994        pub present_delay_millis: ::core::option::Option<f32>,
26995        #[prost(float, optional, tag = "14")]
26996        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
26997        #[prost(float, optional, tag = "15")]
26998        pub jank_severity_score: ::core::option::Option<f32>,
26999        /// experimental value for jank_type. Do not consider in jank analysis.
27000        #[prost(int32, optional, tag = "16")]
27001        pub jank_type_experimental: ::core::option::Option<i32>,
27002        /// experimental value for present_type. Do not consider in jank analysis.
27003        #[prost(enumeration = "PresentType", optional, tag = "17")]
27004        pub present_type_experimental: ::core::option::Option<i32>,
27005        /// jank metadata information (for debug).
27006        #[prost(float, optional, tag = "18")]
27007        pub jank_debug_metadata: ::core::option::Option<f32>,
27008        #[prost(
27009            enumeration = "actual_surface_frame_start::LatchedFenceState",
27010            optional,
27011            tag = "19"
27012        )]
27013        pub latched_fence_state: ::core::option::Option<i32>,
27014        /// animation time (ms) used when drawing this frame.
27015        #[prost(float, optional, tag = "20")]
27016        pub animation_time_millis: ::core::option::Option<f32>,
27017    }
27018    /// Nested message and enum types in `ActualSurfaceFrameStart`.
27019    pub mod actual_surface_frame_start {
27020        #[derive(
27021            Clone,
27022            Copy,
27023            Debug,
27024            PartialEq,
27025            Eq,
27026            Hash,
27027            PartialOrd,
27028            Ord,
27029            ::prost::Enumeration
27030        )]
27031        #[repr(i32)]
27032        pub enum LatchedFenceState {
27033            LatchedUnknown = 0,
27034            LatchedSignaled = 1,
27035            LatchedUnsignaled = 2,
27036            LatchedDelayedLatchUnsignaled = 3,
27037        }
27038        impl LatchedFenceState {
27039            /// String value of the enum field names used in the ProtoBuf definition.
27040            ///
27041            /// The values are not transformed in any way and thus are considered stable
27042            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27043            pub fn as_str_name(&self) -> &'static str {
27044                match self {
27045                    Self::LatchedUnknown => "LATCHED_UNKNOWN",
27046                    Self::LatchedSignaled => "LATCHED_SIGNALED",
27047                    Self::LatchedUnsignaled => "LATCHED_UNSIGNALED",
27048                    Self::LatchedDelayedLatchUnsignaled => {
27049                        "LATCHED_DELAYED_LATCH_UNSIGNALED"
27050                    }
27051                }
27052            }
27053            /// Creates an enum from field names used in the ProtoBuf definition.
27054            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27055                match value {
27056                    "LATCHED_UNKNOWN" => Some(Self::LatchedUnknown),
27057                    "LATCHED_SIGNALED" => Some(Self::LatchedSignaled),
27058                    "LATCHED_UNSIGNALED" => Some(Self::LatchedUnsignaled),
27059                    "LATCHED_DELAYED_LATCH_UNSIGNALED" => {
27060                        Some(Self::LatchedDelayedLatchUnsignaled)
27061                    }
27062                    _ => None,
27063                }
27064            }
27065        }
27066    }
27067    /// Indicates the start of expected timeline slice for DisplayFrames.
27068    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
27069    pub struct ExpectedDisplayFrameStart {
27070        /// Cookie used to correlate between the start and end messages of the same
27071        /// frame. Since all values except the ts are same for start and end, cookie
27072        /// helps in preventing redundant data transmission.
27073        /// The same cookie is used only by start and end messages of a single frame
27074        /// and is otherwise unique.
27075        #[prost(int64, optional, tag = "1")]
27076        pub cookie: ::core::option::Option<i64>,
27077        /// Token received by SurfaceFlinger for its work
27078        /// this.token = SurfaceFrame.display_frame_token
27079        #[prost(int64, optional, tag = "2")]
27080        pub token: ::core::option::Option<i64>,
27081        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
27082        /// inside the SurfaceFlinger process group.
27083        #[prost(int32, optional, tag = "3")]
27084        pub pid: ::core::option::Option<i32>,
27085    }
27086    /// Indicates the start of actual timeline slice for DisplayFrames. Also
27087    /// includes the jank information.
27088    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
27089    pub struct ActualDisplayFrameStart {
27090        /// Cookie used to correlate between the start and end messages of the same
27091        /// frame. Since all values except the ts are same for start and end, cookie
27092        /// helps in preventing redundant data transmission.
27093        /// The same cookie is used only by start and end messages of a single frame
27094        /// and is otherwise unique.
27095        #[prost(int64, optional, tag = "1")]
27096        pub cookie: ::core::option::Option<i64>,
27097        /// Token received by SurfaceFlinger for its work
27098        /// this.token = SurfaceFrame.display_frame_token
27099        #[prost(int64, optional, tag = "2")]
27100        pub token: ::core::option::Option<i64>,
27101        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
27102        /// inside the SurfaceFlinger process group.
27103        #[prost(int32, optional, tag = "3")]
27104        pub pid: ::core::option::Option<i32>,
27105        #[prost(enumeration = "PresentType", optional, tag = "4")]
27106        pub present_type: ::core::option::Option<i32>,
27107        #[prost(bool, optional, tag = "5")]
27108        pub on_time_finish: ::core::option::Option<bool>,
27109        #[prost(bool, optional, tag = "6")]
27110        pub gpu_composition: ::core::option::Option<bool>,
27111        /// A bitmask of JankType. More than one reason can be attributed to a janky
27112        /// frame.
27113        #[prost(int32, optional, tag = "7")]
27114        pub jank_type: ::core::option::Option<i32>,
27115        #[prost(enumeration = "PredictionType", optional, tag = "8")]
27116        pub prediction_type: ::core::option::Option<i32>,
27117        #[prost(enumeration = "JankSeverityType", optional, tag = "9")]
27118        pub jank_severity_type: ::core::option::Option<i32>,
27119        #[prost(float, optional, tag = "10")]
27120        pub present_delay_millis: ::core::option::Option<f32>,
27121        #[prost(float, optional, tag = "11")]
27122        pub jank_severity_score: ::core::option::Option<f32>,
27123        /// experimental value for jank_type. Do not consider in jank analysis.
27124        #[prost(int32, optional, tag = "12")]
27125        pub jank_type_experimental: ::core::option::Option<i32>,
27126        /// experimental value for present_type. Do not consider in jank analysis.
27127        #[prost(enumeration = "PresentType", optional, tag = "13")]
27128        pub present_type_experimental: ::core::option::Option<i32>,
27129        /// jank metadata information (for debug).
27130        #[prost(float, optional, tag = "14")]
27131        pub jank_debug_metadata: ::core::option::Option<f32>,
27132        #[prost(int64, optional, tag = "15")]
27133        pub latched_unsignaled_count: ::core::option::Option<i64>,
27134        #[prost(int64, optional, tag = "16")]
27135        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
27136    }
27137    /// FrameEnd just sends the cookie to indicate that the corresponding
27138    /// <display/surface>frame slice's end.
27139    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
27140    pub struct FrameEnd {
27141        #[prost(int64, optional, tag = "1")]
27142        pub cookie: ::core::option::Option<i64>,
27143    }
27144    /// Specifies the reason(s) most likely to have caused the jank.
27145    /// Used as a bitmask.
27146    #[derive(
27147        Clone,
27148        Copy,
27149        Debug,
27150        PartialEq,
27151        Eq,
27152        Hash,
27153        PartialOrd,
27154        Ord,
27155        ::prost::Enumeration
27156    )]
27157    #[repr(i32)]
27158    pub enum JankType {
27159        JankUnspecified = 0,
27160        JankNone = 1,
27161        JankSfScheduling = 2,
27162        JankPredictionError = 4,
27163        JankDisplayHal = 8,
27164        JankSfCpuDeadlineMissed = 16,
27165        JankSfGpuDeadlineMissed = 32,
27166        JankAppDeadlineMissed = 64,
27167        JankBufferStuffing = 128,
27168        JankUnknown = 256,
27169        JankSfStuffing = 512,
27170        JankDropped = 1024,
27171        JankNonAnimating = 2048,
27172        JankAppResyncedJitter = 4096,
27173        JankDisplayNotOn = 8192,
27174        JankDisplayModeChangeInProgress = 16384,
27175        JankDisplayPowerModeChangeInProgress = 32768,
27176    }
27177    impl JankType {
27178        /// String value of the enum field names used in the ProtoBuf definition.
27179        ///
27180        /// The values are not transformed in any way and thus are considered stable
27181        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27182        pub fn as_str_name(&self) -> &'static str {
27183            match self {
27184                Self::JankUnspecified => "JANK_UNSPECIFIED",
27185                Self::JankNone => "JANK_NONE",
27186                Self::JankSfScheduling => "JANK_SF_SCHEDULING",
27187                Self::JankPredictionError => "JANK_PREDICTION_ERROR",
27188                Self::JankDisplayHal => "JANK_DISPLAY_HAL",
27189                Self::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
27190                Self::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
27191                Self::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
27192                Self::JankBufferStuffing => "JANK_BUFFER_STUFFING",
27193                Self::JankUnknown => "JANK_UNKNOWN",
27194                Self::JankSfStuffing => "JANK_SF_STUFFING",
27195                Self::JankDropped => "JANK_DROPPED",
27196                Self::JankNonAnimating => "JANK_NON_ANIMATING",
27197                Self::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
27198                Self::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
27199                Self::JankDisplayModeChangeInProgress => {
27200                    "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS"
27201                }
27202                Self::JankDisplayPowerModeChangeInProgress => {
27203                    "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS"
27204                }
27205            }
27206        }
27207        /// Creates an enum from field names used in the ProtoBuf definition.
27208        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27209            match value {
27210                "JANK_UNSPECIFIED" => Some(Self::JankUnspecified),
27211                "JANK_NONE" => Some(Self::JankNone),
27212                "JANK_SF_SCHEDULING" => Some(Self::JankSfScheduling),
27213                "JANK_PREDICTION_ERROR" => Some(Self::JankPredictionError),
27214                "JANK_DISPLAY_HAL" => Some(Self::JankDisplayHal),
27215                "JANK_SF_CPU_DEADLINE_MISSED" => Some(Self::JankSfCpuDeadlineMissed),
27216                "JANK_SF_GPU_DEADLINE_MISSED" => Some(Self::JankSfGpuDeadlineMissed),
27217                "JANK_APP_DEADLINE_MISSED" => Some(Self::JankAppDeadlineMissed),
27218                "JANK_BUFFER_STUFFING" => Some(Self::JankBufferStuffing),
27219                "JANK_UNKNOWN" => Some(Self::JankUnknown),
27220                "JANK_SF_STUFFING" => Some(Self::JankSfStuffing),
27221                "JANK_DROPPED" => Some(Self::JankDropped),
27222                "JANK_NON_ANIMATING" => Some(Self::JankNonAnimating),
27223                "JANK_APP_RESYNCED_JITTER" => Some(Self::JankAppResyncedJitter),
27224                "JANK_DISPLAY_NOT_ON" => Some(Self::JankDisplayNotOn),
27225                "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS" => {
27226                    Some(Self::JankDisplayModeChangeInProgress)
27227                }
27228                "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS" => {
27229                    Some(Self::JankDisplayPowerModeChangeInProgress)
27230                }
27231                _ => None,
27232            }
27233        }
27234    }
27235    /// Specifies the severity of a jank.
27236    #[derive(
27237        Clone,
27238        Copy,
27239        Debug,
27240        PartialEq,
27241        Eq,
27242        Hash,
27243        PartialOrd,
27244        Ord,
27245        ::prost::Enumeration
27246    )]
27247    #[repr(i32)]
27248    pub enum JankSeverityType {
27249        SeverityUnknown = 0,
27250        SeverityNone = 1,
27251        SeverityPartial = 2,
27252        SeverityFull = 3,
27253    }
27254    impl JankSeverityType {
27255        /// String value of the enum field names used in the ProtoBuf definition.
27256        ///
27257        /// The values are not transformed in any way and thus are considered stable
27258        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27259        pub fn as_str_name(&self) -> &'static str {
27260            match self {
27261                Self::SeverityUnknown => "SEVERITY_UNKNOWN",
27262                Self::SeverityNone => "SEVERITY_NONE",
27263                Self::SeverityPartial => "SEVERITY_PARTIAL",
27264                Self::SeverityFull => "SEVERITY_FULL",
27265            }
27266        }
27267        /// Creates an enum from field names used in the ProtoBuf definition.
27268        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27269            match value {
27270                "SEVERITY_UNKNOWN" => Some(Self::SeverityUnknown),
27271                "SEVERITY_NONE" => Some(Self::SeverityNone),
27272                "SEVERITY_PARTIAL" => Some(Self::SeverityPartial),
27273                "SEVERITY_FULL" => Some(Self::SeverityFull),
27274                _ => None,
27275            }
27276        }
27277    }
27278    /// Specifies how a frame was presented on screen w.r.t. timing.
27279    /// Can be different for SurfaceFrame and DisplayFrame.
27280    #[derive(
27281        Clone,
27282        Copy,
27283        Debug,
27284        PartialEq,
27285        Eq,
27286        Hash,
27287        PartialOrd,
27288        Ord,
27289        ::prost::Enumeration
27290    )]
27291    #[repr(i32)]
27292    pub enum PresentType {
27293        PresentUnspecified = 0,
27294        PresentOnTime = 1,
27295        PresentLate = 2,
27296        PresentEarly = 3,
27297        PresentDropped = 4,
27298        PresentUnknown = 5,
27299    }
27300    impl PresentType {
27301        /// String value of the enum field names used in the ProtoBuf definition.
27302        ///
27303        /// The values are not transformed in any way and thus are considered stable
27304        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27305        pub fn as_str_name(&self) -> &'static str {
27306            match self {
27307                Self::PresentUnspecified => "PRESENT_UNSPECIFIED",
27308                Self::PresentOnTime => "PRESENT_ON_TIME",
27309                Self::PresentLate => "PRESENT_LATE",
27310                Self::PresentEarly => "PRESENT_EARLY",
27311                Self::PresentDropped => "PRESENT_DROPPED",
27312                Self::PresentUnknown => "PRESENT_UNKNOWN",
27313            }
27314        }
27315        /// Creates an enum from field names used in the ProtoBuf definition.
27316        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27317            match value {
27318                "PRESENT_UNSPECIFIED" => Some(Self::PresentUnspecified),
27319                "PRESENT_ON_TIME" => Some(Self::PresentOnTime),
27320                "PRESENT_LATE" => Some(Self::PresentLate),
27321                "PRESENT_EARLY" => Some(Self::PresentEarly),
27322                "PRESENT_DROPPED" => Some(Self::PresentDropped),
27323                "PRESENT_UNKNOWN" => Some(Self::PresentUnknown),
27324                _ => None,
27325            }
27326        }
27327    }
27328    /// Specifies if the predictions for the frame are still valid, expired or
27329    /// unknown.
27330    #[derive(
27331        Clone,
27332        Copy,
27333        Debug,
27334        PartialEq,
27335        Eq,
27336        Hash,
27337        PartialOrd,
27338        Ord,
27339        ::prost::Enumeration
27340    )]
27341    #[repr(i32)]
27342    pub enum PredictionType {
27343        PredictionUnspecified = 0,
27344        PredictionValid = 1,
27345        PredictionExpired = 2,
27346        PredictionUnknown = 3,
27347    }
27348    impl PredictionType {
27349        /// String value of the enum field names used in the ProtoBuf definition.
27350        ///
27351        /// The values are not transformed in any way and thus are considered stable
27352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27353        pub fn as_str_name(&self) -> &'static str {
27354            match self {
27355                Self::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
27356                Self::PredictionValid => "PREDICTION_VALID",
27357                Self::PredictionExpired => "PREDICTION_EXPIRED",
27358                Self::PredictionUnknown => "PREDICTION_UNKNOWN",
27359            }
27360        }
27361        /// Creates an enum from field names used in the ProtoBuf definition.
27362        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27363            match value {
27364                "PREDICTION_UNSPECIFIED" => Some(Self::PredictionUnspecified),
27365                "PREDICTION_VALID" => Some(Self::PredictionValid),
27366                "PREDICTION_EXPIRED" => Some(Self::PredictionExpired),
27367                "PREDICTION_UNKNOWN" => Some(Self::PredictionUnknown),
27368                _ => None,
27369            }
27370        }
27371    }
27372    #[derive(Clone, PartialEq, ::prost::Oneof)]
27373    pub enum Event {
27374        #[prost(message, tag = "1")]
27375        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
27376        #[prost(message, tag = "2")]
27377        ActualDisplayFrameStart(ActualDisplayFrameStart),
27378        #[prost(message, tag = "3")]
27379        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
27380        #[prost(message, tag = "4")]
27381        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
27382        #[prost(message, tag = "5")]
27383        FrameEnd(FrameEnd),
27384    }
27385}
27386#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27387#[repr(i32)]
27388pub enum VmCursorEnum {
27389    VmCursorUnspecified = 0,
27390    VmCursorSrc = 1,
27391    VmCursorDst = 2,
27392    VmCursorBoth = 3,
27393}
27394impl VmCursorEnum {
27395    /// String value of the enum field names used in the ProtoBuf definition.
27396    ///
27397    /// The values are not transformed in any way and thus are considered stable
27398    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27399    pub fn as_str_name(&self) -> &'static str {
27400        match self {
27401            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
27402            Self::VmCursorSrc => "VM_CURSOR_SRC",
27403            Self::VmCursorDst => "VM_CURSOR_DST",
27404            Self::VmCursorBoth => "VM_CURSOR_BOTH",
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            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
27411            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
27412            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
27413            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
27414            _ => None,
27415        }
27416    }
27417}
27418/// Builtin clock domains used in Perfetto traces.
27419///
27420/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
27421/// representing the trace file's own timeline. Each trace file gets its own
27422/// instance (scoped by trace file index).
27423///
27424/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
27425/// fallback: if the first timestamp conversion uses a clock other than the
27426/// trace file clock and no explicit clock snapshot data exists, the trace time
27427/// is switched to BOOTTIME. This fallback does not fire for modern traces that
27428/// include ClockSnapshots or that only use the trace file clock directly.
27429///
27430/// The `primary_trace_clock` field in ClockSnapshot can definitively override
27431/// the trace time clock regardless of the above.
27432#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27433#[repr(i32)]
27434pub enum BuiltinClock {
27435    Unknown = 0,
27436    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
27437    Realtime = 1,
27438    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
27439    RealtimeCoarse = 2,
27440    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
27441    Monotonic = 3,
27442    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
27443    MonotonicCoarse = 4,
27444    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
27445    MonotonicRaw = 5,
27446    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
27447    /// For proto traces, this is used as a backwards-compatible fallback trace
27448    /// time clock when no explicit clock snapshots are present.
27449    Boottime = 6,
27450    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
27451    Tsc = 9,
27452    /// Corresponds to the perf event clock (PERF_CLOCK).
27453    Perf = 10,
27454    /// A synthetic clock representing the trace file's own timeline. Each trace
27455    /// file gets its own instance (scoped by trace file index). This is the
27456    /// default trace time clock before any clock snapshot or format-specific
27457    /// override takes effect.
27458    TraceFile = 11,
27459    MaxId = 63,
27460}
27461impl BuiltinClock {
27462    /// String value of the enum field names used in the ProtoBuf definition.
27463    ///
27464    /// The values are not transformed in any way and thus are considered stable
27465    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27466    pub fn as_str_name(&self) -> &'static str {
27467        match self {
27468            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
27469            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
27470            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
27471            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
27472            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
27473            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
27474            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
27475            Self::Tsc => "BUILTIN_CLOCK_TSC",
27476            Self::Perf => "BUILTIN_CLOCK_PERF",
27477            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
27478            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
27479        }
27480    }
27481    /// Creates an enum from field names used in the ProtoBuf definition.
27482    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27483        match value {
27484            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
27485            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
27486            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
27487            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
27488            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
27489            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
27490            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
27491            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
27492            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
27493            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
27494            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
27495            _ => None,
27496        }
27497    }
27498}
27499/// Semantic types for string fields. This tells the filter what kind of
27500/// data the field contains, so it can apply the right filtering rules.
27501/// See /rfcs/0011-subset-string-filter-rules.md for design details.
27502/// Introduced in: Perfetto v54.
27503#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27504#[repr(i32)]
27505pub enum SemanticType {
27506    Unspecified = 0,
27507    Atrace = 1,
27508    Job = 2,
27509    Wakelock = 3,
27510}
27511impl SemanticType {
27512    /// String value of the enum field names used in the ProtoBuf definition.
27513    ///
27514    /// The values are not transformed in any way and thus are considered stable
27515    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27516    pub fn as_str_name(&self) -> &'static str {
27517        match self {
27518            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
27519            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
27520            Self::Job => "SEMANTIC_TYPE_JOB",
27521            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
27522        }
27523    }
27524    /// Creates an enum from field names used in the ProtoBuf definition.
27525    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27526        match value {
27527            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
27528            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
27529            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
27530            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
27531            _ => None,
27532        }
27533    }
27534}
27535/// Values from NDK's android/log.h.
27536#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27537#[repr(i32)]
27538pub enum AndroidLogId {
27539    /// MAIN.
27540    LidDefault = 0,
27541    LidRadio = 1,
27542    LidEvents = 2,
27543    LidSystem = 3,
27544    LidCrash = 4,
27545    LidStats = 5,
27546    LidSecurity = 6,
27547    LidKernel = 7,
27548}
27549impl AndroidLogId {
27550    /// String value of the enum field names used in the ProtoBuf definition.
27551    ///
27552    /// The values are not transformed in any way and thus are considered stable
27553    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27554    pub fn as_str_name(&self) -> &'static str {
27555        match self {
27556            Self::LidDefault => "LID_DEFAULT",
27557            Self::LidRadio => "LID_RADIO",
27558            Self::LidEvents => "LID_EVENTS",
27559            Self::LidSystem => "LID_SYSTEM",
27560            Self::LidCrash => "LID_CRASH",
27561            Self::LidStats => "LID_STATS",
27562            Self::LidSecurity => "LID_SECURITY",
27563            Self::LidKernel => "LID_KERNEL",
27564        }
27565    }
27566    /// Creates an enum from field names used in the ProtoBuf definition.
27567    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27568        match value {
27569            "LID_DEFAULT" => Some(Self::LidDefault),
27570            "LID_RADIO" => Some(Self::LidRadio),
27571            "LID_EVENTS" => Some(Self::LidEvents),
27572            "LID_SYSTEM" => Some(Self::LidSystem),
27573            "LID_CRASH" => Some(Self::LidCrash),
27574            "LID_STATS" => Some(Self::LidStats),
27575            "LID_SECURITY" => Some(Self::LidSecurity),
27576            "LID_KERNEL" => Some(Self::LidKernel),
27577            _ => None,
27578        }
27579    }
27580}
27581#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27582#[repr(i32)]
27583pub enum AndroidLogPriority {
27584    PrioUnspecified = 0,
27585    /// _DEFAULT, but should never be seen in logs.
27586    PrioUnused = 1,
27587    PrioVerbose = 2,
27588    PrioDebug = 3,
27589    PrioInfo = 4,
27590    PrioWarn = 5,
27591    PrioError = 6,
27592    PrioFatal = 7,
27593}
27594impl AndroidLogPriority {
27595    /// String value of the enum field names used in the ProtoBuf definition.
27596    ///
27597    /// The values are not transformed in any way and thus are considered stable
27598    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27599    pub fn as_str_name(&self) -> &'static str {
27600        match self {
27601            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
27602            Self::PrioUnused => "PRIO_UNUSED",
27603            Self::PrioVerbose => "PRIO_VERBOSE",
27604            Self::PrioDebug => "PRIO_DEBUG",
27605            Self::PrioInfo => "PRIO_INFO",
27606            Self::PrioWarn => "PRIO_WARN",
27607            Self::PrioError => "PRIO_ERROR",
27608            Self::PrioFatal => "PRIO_FATAL",
27609        }
27610    }
27611    /// Creates an enum from field names used in the ProtoBuf definition.
27612    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27613        match value {
27614            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
27615            "PRIO_UNUSED" => Some(Self::PrioUnused),
27616            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
27617            "PRIO_DEBUG" => Some(Self::PrioDebug),
27618            "PRIO_INFO" => Some(Self::PrioInfo),
27619            "PRIO_WARN" => Some(Self::PrioWarn),
27620            "PRIO_ERROR" => Some(Self::PrioError),
27621            "PRIO_FATAL" => Some(Self::PrioFatal),
27622            _ => None,
27623        }
27624    }
27625}
27626#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27627#[repr(i32)]
27628pub enum ProtoLogLevel {
27629    ProtologLevelUndefined = 0,
27630    ProtologLevelDebug = 1,
27631    ProtologLevelVerbose = 2,
27632    ProtologLevelInfo = 3,
27633    ProtologLevelWarn = 4,
27634    ProtologLevelError = 5,
27635    ProtologLevelWtf = 6,
27636}
27637impl ProtoLogLevel {
27638    /// String value of the enum field names used in the ProtoBuf definition.
27639    ///
27640    /// The values are not transformed in any way and thus are considered stable
27641    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27642    pub fn as_str_name(&self) -> &'static str {
27643        match self {
27644            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
27645            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
27646            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
27647            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
27648            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
27649            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
27650            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
27651        }
27652    }
27653    /// Creates an enum from field names used in the ProtoBuf definition.
27654    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27655        match value {
27656            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
27657            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
27658            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
27659            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
27660            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
27661            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
27662            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
27663            _ => None,
27664        }
27665    }
27666}
27667/// This enum is obtained by post-processing
27668/// AOSP/frameworks/proto_logging/stats/atoms.proto through
27669/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
27670/// enum value for each proto field defined in the upstream atoms.proto.
27671#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27672#[repr(i32)]
27673pub enum AtomId {
27674    AtomUnspecified = 0,
27675    AtomBleScanStateChanged = 2,
27676    AtomProcessStateChanged = 3,
27677    AtomBleScanResultReceived = 4,
27678    AtomSensorStateChanged = 5,
27679    AtomGpsScanStateChanged = 6,
27680    AtomSyncStateChanged = 7,
27681    AtomScheduledJobStateChanged = 8,
27682    AtomScreenBrightnessChanged = 9,
27683    AtomWakelockStateChanged = 10,
27684    AtomLongPartialWakelockStateChanged = 11,
27685    AtomMobileRadioPowerStateChanged = 12,
27686    AtomWifiRadioPowerStateChanged = 13,
27687    AtomActivityManagerSleepStateChanged = 14,
27688    AtomMemoryFactorStateChanged = 15,
27689    AtomExcessiveCpuUsageReported = 16,
27690    AtomCachedKillReported = 17,
27691    AtomProcessMemoryStatReported = 18,
27692    AtomLauncherEvent = 19,
27693    AtomBatterySaverModeStateChanged = 20,
27694    AtomDeviceIdleModeStateChanged = 21,
27695    AtomDeviceIdlingModeStateChanged = 22,
27696    AtomAudioStateChanged = 23,
27697    AtomMediaCodecStateChanged = 24,
27698    AtomCameraStateChanged = 25,
27699    AtomFlashlightStateChanged = 26,
27700    AtomUidProcessStateChanged = 27,
27701    AtomProcessLifeCycleStateChanged = 28,
27702    AtomScreenStateChanged = 29,
27703    AtomBatteryLevelChanged = 30,
27704    AtomChargingStateChanged = 31,
27705    AtomPluggedStateChanged = 32,
27706    AtomInteractiveStateChanged = 33,
27707    AtomTouchEventReported = 34,
27708    AtomWakeupAlarmOccurred = 35,
27709    AtomKernelWakeupReported = 36,
27710    AtomWifiLockStateChanged = 37,
27711    AtomWifiSignalStrengthChanged = 38,
27712    AtomWifiScanStateChanged = 39,
27713    AtomPhoneSignalStrengthChanged = 40,
27714    AtomSettingChanged = 41,
27715    AtomActivityForegroundStateChanged = 42,
27716    AtomIsolatedUidChanged = 43,
27717    AtomPacketWakeupOccurred = 44,
27718    AtomWallClockTimeShifted = 45,
27719    AtomAnomalyDetected = 46,
27720    AtomAppBreadcrumbReported = 47,
27721    AtomAppStartOccurred = 48,
27722    AtomAppStartCanceled = 49,
27723    AtomAppStartFullyDrawn = 50,
27724    AtomLmkKillOccurred = 51,
27725    AtomPictureInPictureStateChanged = 52,
27726    AtomWifiMulticastLockStateChanged = 53,
27727    AtomAppStartMemoryStateCaptured = 55,
27728    AtomShutdownSequenceReported = 56,
27729    AtomBootSequenceReported = 57,
27730    AtomOverlayStateChanged = 59,
27731    AtomForegroundServiceStateChanged = 60,
27732    AtomCallStateChanged = 61,
27733    AtomKeyguardStateChanged = 62,
27734    AtomKeyguardBouncerStateChanged = 63,
27735    AtomKeyguardBouncerPasswordEntered = 64,
27736    AtomAppDied = 65,
27737    AtomResourceConfigurationChanged = 66,
27738    AtomBluetoothEnabledStateChanged = 67,
27739    AtomBluetoothConnectionStateChanged = 68,
27740    AtomGpsSignalQualityChanged = 69,
27741    AtomUsbConnectorStateChanged = 70,
27742    AtomSpeakerImpedanceReported = 71,
27743    AtomHardwareFailed = 72,
27744    AtomPhysicalDropDetected = 73,
27745    AtomChargeCyclesReported = 74,
27746    AtomMobileConnectionStateChanged = 75,
27747    AtomMobileRadioTechnologyChanged = 76,
27748    AtomUsbDeviceAttached = 77,
27749    AtomAppCrashOccurred = 78,
27750    AtomAnrOccurred = 79,
27751    AtomWtfOccurred = 80,
27752    AtomLowMemReported = 81,
27753    AtomGenericAtom = 82,
27754    AtomVibratorStateChanged = 84,
27755    AtomDeferredJobStatsReported = 85,
27756    AtomThermalThrottling = 86,
27757    AtomBiometricAcquired = 87,
27758    AtomBiometricAuthenticated = 88,
27759    AtomBiometricErrorOccurred = 89,
27760    AtomUiEventReported = 90,
27761    AtomBatteryHealthSnapshot = 91,
27762    AtomSlowIo = 92,
27763    AtomBatteryCausedShutdown = 93,
27764    AtomPhoneServiceStateChanged = 94,
27765    AtomPhoneStateChanged = 95,
27766    AtomUserRestrictionChanged = 96,
27767    AtomSettingsUiChanged = 97,
27768    AtomConnectivityStateChanged = 98,
27769    AtomServiceStateChanged = 99,
27770    AtomServiceLaunchReported = 100,
27771    AtomFlagFlipUpdateOccurred = 101,
27772    AtomBinaryPushStateChanged = 102,
27773    AtomDevicePolicyEvent = 103,
27774    AtomDocsUiFileOpCanceled = 104,
27775    AtomDocsUiFileOpCopyMoveModeReported = 105,
27776    AtomDocsUiFileOpFailure = 106,
27777    AtomDocsUiProviderFileOp = 107,
27778    AtomDocsUiInvalidScopedAccessRequest = 108,
27779    AtomDocsUiLaunchReported = 109,
27780    AtomDocsUiRootVisited = 110,
27781    AtomDocsUiStartupMs = 111,
27782    AtomDocsUiUserActionReported = 112,
27783    AtomWifiEnabledStateChanged = 113,
27784    AtomWifiRunningStateChanged = 114,
27785    AtomAppCompacted = 115,
27786    AtomNetworkDnsEventReported = 116,
27787    AtomDocsUiPickerLaunchedFromReported = 117,
27788    AtomDocsUiPickResultReported = 118,
27789    AtomDocsUiSearchModeReported = 119,
27790    AtomDocsUiSearchTypeReported = 120,
27791    AtomDataStallEvent = 121,
27792    AtomRescuePartyResetReported = 122,
27793    AtomSignedConfigReported = 123,
27794    AtomGnssNiEventReported = 124,
27795    AtomBluetoothLinkLayerConnectionEvent = 125,
27796    AtomBluetoothAclConnectionStateChanged = 126,
27797    AtomBluetoothScoConnectionStateChanged = 127,
27798    AtomAppDowngraded = 128,
27799    AtomAppOptimizedAfterDowngraded = 129,
27800    AtomLowStorageStateChanged = 130,
27801    AtomGnssNfwNotificationReported = 131,
27802    AtomGnssConfigurationReported = 132,
27803    AtomUsbPortOverheatEventReported = 133,
27804    AtomNfcErrorOccurred = 134,
27805    AtomNfcStateChanged = 135,
27806    AtomNfcBeamOccurred = 136,
27807    AtomNfcCardemulationOccurred = 137,
27808    AtomNfcTagOccurred = 138,
27809    AtomNfcHceTransactionOccurred = 139,
27810    AtomSeStateChanged = 140,
27811    AtomSeOmapiReported = 141,
27812    AtomBroadcastDispatchLatencyReported = 142,
27813    AtomAttentionManagerServiceResultReported = 143,
27814    AtomAdbConnectionChanged = 144,
27815    AtomSpeechDspStatReported = 145,
27816    AtomUsbContaminantReported = 146,
27817    AtomWatchdogRollbackOccurred = 147,
27818    AtomBiometricSystemHealthIssueDetected = 148,
27819    AtomBubbleUiChanged = 149,
27820    AtomScheduledJobConstraintChanged = 150,
27821    AtomBluetoothActiveDeviceChanged = 151,
27822    AtomBluetoothA2dpPlaybackStateChanged = 152,
27823    AtomBluetoothA2dpCodecConfigChanged = 153,
27824    AtomBluetoothA2dpCodecCapabilityChanged = 154,
27825    AtomBluetoothA2dpAudioUnderrunReported = 155,
27826    AtomBluetoothA2dpAudioOverrunReported = 156,
27827    AtomBluetoothDeviceRssiReported = 157,
27828    AtomBluetoothDeviceFailedContactCounterReported = 158,
27829    AtomBluetoothDeviceTxPowerLevelReported = 159,
27830    AtomBluetoothHciTimeoutReported = 160,
27831    AtomBluetoothQualityReportReported = 161,
27832    AtomBluetoothDeviceInfoReported = 162,
27833    AtomBluetoothRemoteVersionInfoReported = 163,
27834    AtomBluetoothSdpAttributeReported = 164,
27835    AtomBluetoothBondStateChanged = 165,
27836    AtomBluetoothClassicPairingEventReported = 166,
27837    AtomBluetoothSmpPairingEventReported = 167,
27838    AtomScreenTimeoutExtensionReported = 168,
27839    AtomProcessStartTime = 169,
27840    AtomPermissionGrantRequestResultReported = 170,
27841    AtomBluetoothSocketConnectionStateChanged = 171,
27842    AtomDeviceIdentifierAccessDenied = 172,
27843    AtomBubbleDeveloperErrorReported = 173,
27844    AtomAssistGestureStageReported = 174,
27845    AtomAssistGestureFeedbackReported = 175,
27846    AtomAssistGestureProgressReported = 176,
27847    AtomTouchGestureClassified = 177,
27848    AtomHiddenApiUsed = 178,
27849    AtomStyleUiChanged = 179,
27850    AtomPrivacyIndicatorsInteracted = 180,
27851    AtomAppInstallOnExternalStorageReported = 181,
27852    AtomNetworkStackReported = 182,
27853    AtomAppMovedStorageReported = 183,
27854    AtomBiometricEnrolled = 184,
27855    AtomSystemServerWatchdogOccurred = 185,
27856    AtomTombStoneOccurred = 186,
27857    AtomBluetoothClassOfDeviceReported = 187,
27858    AtomIntelligenceEventReported = 188,
27859    AtomThermalThrottlingSeverityStateChanged = 189,
27860    AtomRoleRequestResultReported = 190,
27861    AtomMediametricsAudiopolicyReported = 191,
27862    AtomMediametricsAudiorecordReported = 192,
27863    AtomMediametricsAudiothreadReported = 193,
27864    AtomMediametricsAudiotrackReported = 194,
27865    AtomMediametricsCodecReported = 195,
27866    AtomMediametricsDrmWidevineReported = 196,
27867    AtomMediametricsExtractorReported = 197,
27868    AtomMediametricsMediadrmReported = 198,
27869    AtomMediametricsNuplayerReported = 199,
27870    AtomMediametricsRecorderReported = 200,
27871    AtomMediametricsDrmmanagerReported = 201,
27872    AtomCarPowerStateChanged = 203,
27873    AtomGarageModeInfo = 204,
27874    AtomTestAtomReported = 205,
27875    AtomContentCaptureCallerMismatchReported = 206,
27876    AtomContentCaptureServiceEvents = 207,
27877    AtomContentCaptureSessionEvents = 208,
27878    AtomContentCaptureFlushed = 209,
27879    AtomLocationManagerApiUsageReported = 210,
27880    AtomReviewPermissionsFragmentResultReported = 211,
27881    AtomRuntimePermissionsUpgradeResult = 212,
27882    AtomGrantPermissionsActivityButtonActions = 213,
27883    AtomLocationAccessCheckNotificationAction = 214,
27884    AtomAppPermissionFragmentActionReported = 215,
27885    AtomAppPermissionFragmentViewed = 216,
27886    AtomAppPermissionsFragmentViewed = 217,
27887    AtomPermissionAppsFragmentViewed = 218,
27888    AtomTextSelectionEvent = 219,
27889    AtomTextLinkifyEvent = 220,
27890    AtomConversationActionsEvent = 221,
27891    AtomLanguageDetectionEvent = 222,
27892    AtomExclusionRectStateChanged = 223,
27893    AtomBackGestureReportedReported = 224,
27894    AtomUpdateEngineUpdateAttemptReported = 225,
27895    AtomUpdateEngineSuccessfulUpdateReported = 226,
27896    AtomCameraActionEvent = 227,
27897    AtomAppCompatibilityChangeReported = 228,
27898    AtomPerfettoUploaded = 229,
27899    AtomVmsClientConnectionStateChanged = 230,
27900    AtomMediaProviderScanOccurred = 233,
27901    AtomMediaContentDeleted = 234,
27902    AtomMediaProviderPermissionRequested = 235,
27903    AtomMediaProviderSchemaChanged = 236,
27904    AtomMediaProviderIdleMaintenanceFinished = 237,
27905    AtomRebootEscrowRecoveryReported = 238,
27906    AtomBootTimeEventDurationReported = 239,
27907    AtomBootTimeEventElapsedTimeReported = 240,
27908    AtomBootTimeEventUtcTimeReported = 241,
27909    AtomBootTimeEventErrorCodeReported = 242,
27910    AtomUserspaceRebootReported = 243,
27911    AtomNotificationReported = 244,
27912    AtomNotificationPanelReported = 245,
27913    AtomNotificationChannelModified = 246,
27914    AtomIntegrityCheckResultReported = 247,
27915    AtomIntegrityRulesPushed = 248,
27916    AtomCbMessageReported = 249,
27917    AtomCbMessageError = 250,
27918    AtomWifiHealthStatReported = 251,
27919    AtomWifiFailureStatReported = 252,
27920    AtomWifiConnectionResultReported = 253,
27921    AtomAppFreezeChanged = 254,
27922    AtomSnapshotMergeReported = 255,
27923    AtomForegroundServiceAppOpSessionEnded = 256,
27924    AtomDisplayJankReported = 257,
27925    AtomAppStandbyBucketChanged = 258,
27926    AtomSharesheetStarted = 259,
27927    AtomRankingSelected = 260,
27928    AtomTvsettingsUiInteracted = 261,
27929    AtomLauncherSnapshot = 262,
27930    AtomPackageInstallerV2Reported = 263,
27931    AtomUserLifecycleJourneyReported = 264,
27932    AtomUserLifecycleEventOccurred = 265,
27933    AtomAccessibilityShortcutReported = 266,
27934    AtomAccessibilityServiceReported = 267,
27935    AtomDocsUiDragAndDropReported = 268,
27936    AtomAppUsageEventOccurred = 269,
27937    AtomAutoRevokeNotificationClicked = 270,
27938    AtomAutoRevokeFragmentAppViewed = 271,
27939    AtomAutoRevokedAppInteraction = 272,
27940    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
27941    AtomEvsUsageStatsReported = 274,
27942    AtomAudioPowerUsageDataReported = 275,
27943    AtomTvTunerStateChanged = 276,
27944    AtomMediaoutputOpSwitchReported = 277,
27945    AtomCbMessageFiltered = 278,
27946    AtomTvTunerDvrStatus = 279,
27947    AtomTvCasSessionOpenStatus = 280,
27948    AtomAssistantInvocationReported = 281,
27949    AtomDisplayWakeReported = 282,
27950    AtomCarUserHalModifyUserRequestReported = 283,
27951    AtomCarUserHalModifyUserResponseReported = 284,
27952    AtomCarUserHalPostSwitchResponseReported = 285,
27953    AtomCarUserHalInitialUserInfoRequestReported = 286,
27954    AtomCarUserHalInitialUserInfoResponseReported = 287,
27955    AtomCarUserHalUserAssociationRequestReported = 288,
27956    AtomCarUserHalSetUserAssociationResponseReported = 289,
27957    AtomNetworkIpProvisioningReported = 290,
27958    AtomNetworkDhcpRenewReported = 291,
27959    AtomNetworkValidationReported = 292,
27960    AtomNetworkStackQuirkReported = 293,
27961    AtomMediametricsAudiorecorddeviceusageReported = 294,
27962    AtomMediametricsAudiothreaddeviceusageReported = 295,
27963    AtomMediametricsAudiotrackdeviceusageReported = 296,
27964    AtomMediametricsAudiodeviceconnectionReported = 297,
27965    AtomBlobCommitted = 298,
27966    AtomBlobLeased = 299,
27967    AtomBlobOpened = 300,
27968    AtomContactsProviderStatusReported = 301,
27969    AtomKeystoreKeyEventReported = 302,
27970    AtomNetworkTetheringReported = 303,
27971    AtomImeTouchReported = 304,
27972    AtomUiInteractionFrameInfoReported = 305,
27973    AtomUiActionLatencyReported = 306,
27974    AtomWifiDisconnectReported = 307,
27975    AtomWifiConnectionStateChanged = 308,
27976    AtomHdmiCecActiveSourceChanged = 309,
27977    AtomHdmiCecMessageReported = 310,
27978    AtomAirplaneMode = 311,
27979    AtomModemRestart = 312,
27980    AtomCarrierIdMismatchReported = 313,
27981    AtomCarrierIdTableUpdated = 314,
27982    AtomDataStallRecoveryReported = 315,
27983    AtomMediametricsMediaparserReported = 316,
27984    AtomTlsHandshakeReported = 317,
27985    AtomTextClassifierApiUsageReported = 318,
27986    AtomCarWatchdogKillStatsReported = 319,
27987    AtomMediametricsPlaybackReported = 320,
27988    AtomMediaNetworkInfoChanged = 321,
27989    AtomMediaPlaybackStateChanged = 322,
27990    AtomMediaPlaybackErrorReported = 323,
27991    AtomMediaPlaybackTrackChanged = 324,
27992    AtomWifiScanReported = 325,
27993    AtomWifiPnoScanReported = 326,
27994    AtomTifTuneChanged = 327,
27995    AtomAutoRotateReported = 328,
27996    AtomPerfettoTrigger = 329,
27997    AtomTranscodingData = 330,
27998    AtomImsServiceEntitlementUpdated = 331,
27999    AtomDeviceRotated = 333,
28000    AtomSimSpecificSettingsRestored = 334,
28001    AtomTextClassifierDownloadReported = 335,
28002    AtomPinStorageEvent = 336,
28003    AtomFaceDownReported = 337,
28004    AtomBluetoothHalCrashReasonReported = 338,
28005    AtomRebootEscrowPreparationReported = 339,
28006    AtomRebootEscrowLskfCaptureReported = 340,
28007    AtomRebootEscrowRebootReported = 341,
28008    AtomBinderLatencyReported = 342,
28009    AtomMediametricsAaudiostreamReported = 343,
28010    AtomMediaTranscodingSessionEnded = 344,
28011    AtomMagnificationUsageReported = 345,
28012    AtomMagnificationModeWithImeOnReported = 346,
28013    AtomAppSearchCallStatsReported = 347,
28014    AtomAppSearchPutDocumentStatsReported = 348,
28015    AtomDeviceControlChanged = 349,
28016    AtomDeviceStateChanged = 350,
28017    AtomInputdeviceRegistered = 351,
28018    AtomSmartspaceCardReported = 352,
28019    AtomAuthPromptAuthenticateInvoked = 353,
28020    AtomAuthManagerCanAuthenticateInvoked = 354,
28021    AtomAuthEnrollActionInvoked = 355,
28022    AtomAuthDeprecatedApiUsed = 356,
28023    AtomUnattendedRebootOccurred = 357,
28024    AtomLongRebootBlockingReported = 358,
28025    AtomLocationTimeZoneProviderStateChanged = 359,
28026    AtomFdtrackEventOccurred = 364,
28027    AtomTimeoutAutoExtendedReported = 365,
28028    AtomAlarmBatchDelivered = 367,
28029    AtomAlarmScheduled = 368,
28030    AtomCarWatchdogIoOveruseStatsReported = 369,
28031    AtomUserLevelHibernationStateChanged = 370,
28032    AtomAppSearchInitializeStatsReported = 371,
28033    AtomAppSearchQueryStatsReported = 372,
28034    AtomAppProcessDied = 373,
28035    AtomNetworkIpReachabilityMonitorReported = 374,
28036    AtomSlowInputEventReported = 375,
28037    AtomAnrOccurredProcessingStarted = 376,
28038    AtomAppSearchRemoveStatsReported = 377,
28039    AtomMediaCodecReported = 378,
28040    AtomPermissionUsageFragmentInteraction = 379,
28041    AtomPermissionDetailsInteraction = 380,
28042    AtomPrivacySensorToggleInteraction = 381,
28043    AtomPrivacyToggleDialogInteraction = 382,
28044    AtomAppSearchOptimizeStatsReported = 383,
28045    AtomNonA11yToolServiceWarningReport = 384,
28046    AtomAppCompatStateChanged = 386,
28047    AtomSizeCompatRestartButtonEventReported = 387,
28048    AtomSplitscreenUiChanged = 388,
28049    AtomNetworkDnsHandshakeReported = 389,
28050    AtomBluetoothCodePathCounter = 390,
28051    AtomBluetoothLeBatchScanReportDelay = 392,
28052    AtomAccessibilityFloatingMenuUiChanged = 393,
28053    AtomNeuralnetworksCompilationCompleted = 394,
28054    AtomNeuralnetworksExecutionCompleted = 395,
28055    AtomNeuralnetworksCompilationFailed = 396,
28056    AtomNeuralnetworksExecutionFailed = 397,
28057    AtomContextHubBooted = 398,
28058    AtomContextHubRestarted = 399,
28059    AtomContextHubLoadedNanoappSnapshotReported = 400,
28060    AtomChreCodeDownloadTransacted = 401,
28061    AtomUwbSessionInited = 402,
28062    AtomUwbSessionClosed = 403,
28063    AtomUwbFirstRangingReceived = 404,
28064    AtomUwbRangingMeasurementReceived = 405,
28065    AtomTextClassifierDownloadWorkScheduled = 406,
28066    AtomTextClassifierDownloadWorkCompleted = 407,
28067    AtomClipboardCleared = 408,
28068    AtomVmCreationRequested = 409,
28069    AtomNearbyDeviceScanStateChanged = 410,
28070    AtomApplicationLocalesChanged = 412,
28071    AtomMediametricsAudiotrackstatusReported = 413,
28072    AtomFoldStateDurationReported = 414,
28073    AtomLocationTimeZoneProviderControllerStateChanged = 415,
28074    AtomDisplayHbmStateChanged = 416,
28075    AtomDisplayHbmBrightnessChanged = 417,
28076    AtomPersistentUriPermissionsFlushed = 418,
28077    AtomEarlyBootCompOsArtifactsCheckReported = 419,
28078    AtomVbmetaDigestReported = 420,
28079    AtomApexInfoGathered = 421,
28080    AtomPvmInfoGathered = 422,
28081    AtomWearSettingsUiInteracted = 423,
28082    AtomTracingServiceReportEvent = 424,
28083    AtomMediametricsAudiorecordstatusReported = 425,
28084    AtomLauncherLatency = 426,
28085    AtomDropboxEntryDropped = 427,
28086    AtomWifiP2pConnectionReported = 428,
28087    AtomGameStateChanged = 429,
28088    AtomHotwordDetectorCreateRequested = 430,
28089    AtomHotwordDetectionServiceInitResultReported = 431,
28090    AtomHotwordDetectionServiceRestarted = 432,
28091    AtomHotwordDetectorKeyphraseTriggered = 433,
28092    AtomHotwordDetectorEvents = 434,
28093    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
28094    AtomContactsIndexerUpdateStatsReported = 440,
28095    AtomAppBackgroundRestrictionsInfo = 441,
28096    AtomMmsSmsProviderGetThreadIdFailed = 442,
28097    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
28098    AtomPermissionReminderNotificationInteracted = 444,
28099    AtomRecentPermissionDecisionsInteracted = 445,
28100    AtomGnssPsdsDownloadReported = 446,
28101    AtomLeAudioConnectionSessionReported = 447,
28102    AtomLeAudioBroadcastSessionReported = 448,
28103    AtomDreamUiEventReported = 449,
28104    AtomTaskManagerEventReported = 450,
28105    AtomCdmAssociationAction = 451,
28106    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
28107    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
28108    AtomAccessibilityTextReadingOptionsChanged = 454,
28109    AtomWifiSetupFailureCrashReported = 455,
28110    AtomUwbDeviceErrorReported = 456,
28111    AtomIsolatedCompilationScheduled = 457,
28112    AtomIsolatedCompilationEnded = 458,
28113    AtomOnsOpportunisticEsimProvisioningComplete = 459,
28114    AtomSystemServerPreWatchdogOccurred = 460,
28115    AtomTelephonyAnomalyDetected = 461,
28116    AtomLetterboxPositionChanged = 462,
28117    AtomRemoteKeyProvisioningAttempt = 463,
28118    AtomRemoteKeyProvisioningNetworkInfo = 464,
28119    AtomRemoteKeyProvisioningTiming = 465,
28120    AtomMediaoutputOpInteractionReport = 466,
28121    AtomSyncExemptionOccurred = 468,
28122    AtomAutofillPresentationEventReported = 469,
28123    AtomDockStateChanged = 470,
28124    AtomSafetySourceStateCollected = 471,
28125    AtomSafetyCenterSystemEventReported = 472,
28126    AtomSafetyCenterInteractionReported = 473,
28127    AtomSettingsProviderSettingChanged = 474,
28128    AtomBroadcastDeliveryEventReported = 475,
28129    AtomServiceRequestEventReported = 476,
28130    AtomProviderAcquisitionEventReported = 477,
28131    AtomBluetoothDeviceNameReported = 478,
28132    AtomCbConfigUpdated = 479,
28133    AtomCbModuleErrorReported = 480,
28134    AtomCbServiceFeatureChanged = 481,
28135    AtomCbReceiverFeatureChanged = 482,
28136    AtomPrivacySignalNotificationInteraction = 484,
28137    AtomPrivacySignalIssueCardInteraction = 485,
28138    AtomPrivacySignalsJobFailure = 486,
28139    AtomVibrationReported = 487,
28140    AtomUwbRangingStart = 489,
28141    AtomAppCompactedV2 = 491,
28142    AtomDisplayBrightnessChanged = 494,
28143    AtomActivityActionBlocked = 495,
28144    AtomNetworkDnsServerSupportReported = 504,
28145    AtomVmBooted = 505,
28146    AtomVmExited = 506,
28147    AtomAmbientBrightnessStatsReported = 507,
28148    AtomMediametricsSpatializercapabilitiesReported = 508,
28149    AtomMediametricsSpatializerdeviceenabledReported = 509,
28150    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
28151    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
28152    AtomHearingAidInfoReported = 513,
28153    AtomDeviceWideJobConstraintChanged = 514,
28154    AtomAmbientModeChanged = 515,
28155    AtomAnrLatencyReported = 516,
28156    AtomResourceApiInfo = 517,
28157    AtomSystemDefaultNetworkChanged = 518,
28158    AtomIwlanSetupDataCallResultReported = 519,
28159    AtomIwlanPdnDisconnectedReasonReported = 520,
28160    AtomAirplaneModeSessionReported = 521,
28161    AtomVmCpuStatusReported = 522,
28162    AtomVmMemStatusReported = 523,
28163    AtomPackageInstallationSessionReported = 524,
28164    AtomDefaultNetworkRematchInfo = 525,
28165    AtomNetworkSelectionPerformance = 526,
28166    AtomNetworkNsdReported = 527,
28167    AtomBluetoothDisconnectionReasonReported = 529,
28168    AtomBluetoothLocalVersionsReported = 530,
28169    AtomBluetoothRemoteSupportedFeaturesReported = 531,
28170    AtomBluetoothLocalSupportedFeaturesReported = 532,
28171    AtomBluetoothGattAppInfo = 533,
28172    AtomBrightnessConfigurationUpdated = 534,
28173    AtomWearMediaOutputSwitcherLaunched = 538,
28174    AtomWearMediaOutputSwitcherFinished = 539,
28175    AtomWearMediaOutputSwitcherConnectionReported = 540,
28176    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
28177    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
28178    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
28179    AtomPackageManagerSnapshotReported = 544,
28180    AtomPackageManagerAppsFilterCacheBuildReported = 545,
28181    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
28182    AtomLauncherImpressionEvent = 547,
28183    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
28184    AtomWsWatchFaceEdited = 551,
28185    AtomWsWatchFaceFavoriteActionReported = 552,
28186    AtomWsWatchFaceSetActionReported = 553,
28187    AtomPackageUninstallationReported = 554,
28188    AtomGameModeChanged = 555,
28189    AtomGameModeConfigurationChanged = 556,
28190    AtomBedtimeModeStateChanged = 557,
28191    AtomNetworkSliceSessionEnded = 558,
28192    AtomNetworkSliceDailyDataUsageReported = 559,
28193    AtomNfcTagTypeOccurred = 560,
28194    AtomNfcAidConflictOccurred = 561,
28195    AtomNfcReaderConflictOccurred = 562,
28196    AtomWsTileListChanged = 563,
28197    AtomGetTypeAccessedWithoutPermission = 564,
28198    AtomMobileBundledAppInfoGathered = 566,
28199    AtomWsWatchFaceComplicationSetChanged = 567,
28200    AtomMediaDrmCreated = 568,
28201    AtomMediaDrmErrored = 569,
28202    AtomMediaDrmSessionOpened = 570,
28203    AtomMediaDrmSessionClosed = 571,
28204    AtomUserSelectedResolution = 572,
28205    AtomUnsafeIntentEventReported = 573,
28206    AtomPerformanceHintSessionReported = 574,
28207    AtomMediametricsMidiDeviceCloseReported = 576,
28208    AtomBiometricTouchReported = 577,
28209    AtomHotwordAudioEgressEventReported = 578,
28210    AtomLocationEnabledStateChanged = 580,
28211    AtomImeRequestFinished = 581,
28212    AtomUsbComplianceWarningsReported = 582,
28213    AtomAppSupportedLocalesChanged = 583,
28214    AtomMediaProviderVolumeRecoveryReported = 586,
28215    AtomBiometricPropertiesCollected = 587,
28216    AtomKernelWakeupAttributed = 588,
28217    AtomScreenStateChangedV2 = 589,
28218    AtomWsBackupActionReported = 590,
28219    AtomWsRestoreActionReported = 591,
28220    AtomDeviceLogAccessEventReported = 592,
28221    AtomMediaSessionUpdated = 594,
28222    AtomWearOobeStateChanged = 595,
28223    AtomWsNotificationUpdated = 596,
28224    AtomNetworkValidationFailureStatsDailyReported = 601,
28225    AtomWsComplicationTapped = 602,
28226    AtomWsNotificationBlocking = 780,
28227    AtomWsNotificationBridgemodeUpdated = 822,
28228    AtomWsNotificationDismissalActioned = 823,
28229    AtomWsNotificationActioned = 824,
28230    AtomWsNotificationLatency = 880,
28231    AtomWifiBytesTransfer = 10000,
28232    AtomWifiBytesTransferByFgBg = 10001,
28233    AtomMobileBytesTransfer = 10002,
28234    AtomMobileBytesTransferByFgBg = 10003,
28235    AtomBluetoothBytesTransfer = 10006,
28236    AtomKernelWakelock = 10004,
28237    AtomSubsystemSleepState = 10005,
28238    AtomCpuTimePerUid = 10009,
28239    AtomCpuTimePerUidFreq = 10010,
28240    AtomWifiActivityInfo = 10011,
28241    AtomModemActivityInfo = 10012,
28242    AtomBluetoothActivityInfo = 10007,
28243    AtomProcessMemoryState = 10013,
28244    AtomSystemElapsedRealtime = 10014,
28245    AtomSystemUptime = 10015,
28246    AtomCpuActiveTime = 10016,
28247    AtomCpuClusterTime = 10017,
28248    AtomDiskSpace = 10018,
28249    AtomRemainingBatteryCapacity = 10019,
28250    AtomFullBatteryCapacity = 10020,
28251    AtomTemperature = 10021,
28252    AtomBinderCalls = 10022,
28253    AtomBinderCallsExceptions = 10023,
28254    AtomLooperStats = 10024,
28255    AtomDiskStats = 10025,
28256    AtomDirectoryUsage = 10026,
28257    AtomAppSize = 10027,
28258    AtomCategorySize = 10028,
28259    AtomProcStats = 10029,
28260    AtomBatteryVoltage = 10030,
28261    AtomNumFingerprintsEnrolled = 10031,
28262    AtomDiskIo = 10032,
28263    AtomPowerProfile = 10033,
28264    AtomProcStatsPkgProc = 10034,
28265    AtomProcessCpuTime = 10035,
28266    AtomCpuTimePerThreadFreq = 10037,
28267    AtomOnDevicePowerMeasurement = 10038,
28268    AtomDeviceCalculatedPowerUse = 10039,
28269    AtomProcessMemoryHighWaterMark = 10042,
28270    AtomBatteryLevel = 10043,
28271    AtomBuildInformation = 10044,
28272    AtomBatteryCycleCount = 10045,
28273    AtomDebugElapsedClock = 10046,
28274    AtomDebugFailingElapsedClock = 10047,
28275    AtomNumFacesEnrolled = 10048,
28276    AtomRoleHolder = 10049,
28277    AtomDangerousPermissionState = 10050,
28278    AtomTrainInfo = 10051,
28279    AtomTimeZoneDataInfo = 10052,
28280    AtomExternalStorageInfo = 10053,
28281    AtomGpuStatsGlobalInfo = 10054,
28282    AtomGpuStatsAppInfo = 10055,
28283    AtomSystemIonHeapSize = 10056,
28284    AtomAppsOnExternalStorageInfo = 10057,
28285    AtomFaceSettings = 10058,
28286    AtomCoolingDevice = 10059,
28287    AtomAppOps = 10060,
28288    AtomProcessSystemIonHeapSize = 10061,
28289    AtomSurfaceflingerStatsGlobalInfo = 10062,
28290    AtomSurfaceflingerStatsLayerInfo = 10063,
28291    AtomProcessMemorySnapshot = 10064,
28292    AtomVmsClientStats = 10065,
28293    AtomNotificationRemoteViews = 10066,
28294    AtomDangerousPermissionStateSampled = 10067,
28295    AtomGraphicsStats = 10068,
28296    AtomRuntimeAppOpAccess = 10069,
28297    AtomIonHeapSize = 10070,
28298    AtomPackageNotificationPreferences = 10071,
28299    AtomPackageNotificationChannelPreferences = 10072,
28300    AtomPackageNotificationChannelGroupPreferences = 10073,
28301    AtomGnssStats = 10074,
28302    AtomAttributedAppOps = 10075,
28303    AtomVoiceCallSession = 10076,
28304    AtomVoiceCallRatUsage = 10077,
28305    AtomSimSlotState = 10078,
28306    AtomSupportedRadioAccessFamily = 10079,
28307    AtomSettingSnapshot = 10080,
28308    AtomBlobInfo = 10081,
28309    AtomDataUsageBytesTransfer = 10082,
28310    AtomBytesTransferByTagAndMetered = 10083,
28311    AtomDndModeRule = 10084,
28312    AtomGeneralExternalStorageAccessStats = 10085,
28313    AtomIncomingSms = 10086,
28314    AtomOutgoingSms = 10087,
28315    AtomCarrierIdTableVersion = 10088,
28316    AtomDataCallSession = 10089,
28317    AtomCellularServiceState = 10090,
28318    AtomCellularDataServiceSwitch = 10091,
28319    AtomSystemMemory = 10092,
28320    AtomImsRegistrationTermination = 10093,
28321    AtomImsRegistrationStats = 10094,
28322    AtomCpuTimePerClusterFreq = 10095,
28323    AtomCpuCyclesPerUidCluster = 10096,
28324    AtomDeviceRotatedData = 10097,
28325    AtomCpuCyclesPerThreadGroupCluster = 10098,
28326    AtomMediaDrmActivityInfo = 10099,
28327    AtomOemManagedBytesTransfer = 10100,
28328    AtomGnssPowerStats = 10101,
28329    AtomTimeZoneDetectorState = 10102,
28330    AtomKeystore2StorageStats = 10103,
28331    AtomRkpPoolStats = 10104,
28332    AtomProcessDmabufMemory = 10105,
28333    AtomPendingAlarmInfo = 10106,
28334    AtomUserLevelHibernatedApps = 10107,
28335    AtomLauncherLayoutSnapshot = 10108,
28336    AtomGlobalHibernatedApps = 10109,
28337    AtomInputEventLatencySketch = 10110,
28338    AtomBatteryUsageStatsBeforeReset = 10111,
28339    AtomBatteryUsageStatsSinceReset = 10112,
28340    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
28341    AtomInstalledIncrementalPackage = 10114,
28342    AtomTelephonyNetworkRequests = 10115,
28343    AtomAppSearchStorageInfo = 10116,
28344    AtomVmstat = 10117,
28345    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
28346    AtomKeystore2KeyCreationWithAuthInfo = 10119,
28347    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
28348    AtomKeystore2AtomWithOverflow = 10121,
28349    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
28350    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
28351    AtomRkpErrorStats = 10124,
28352    AtomKeystore2CrashStats = 10125,
28353    AtomVendorApexInfo = 10126,
28354    AtomAccessibilityShortcutStats = 10127,
28355    AtomAccessibilityFloatingMenuStats = 10128,
28356    AtomDataUsageBytesTransferV2 = 10129,
28357    AtomMediaCapabilities = 10130,
28358    AtomCarWatchdogSystemIoUsageSummary = 10131,
28359    AtomCarWatchdogUidIoUsageSummary = 10132,
28360    AtomImsRegistrationFeatureTagStats = 10133,
28361    AtomRcsClientProvisioningStats = 10134,
28362    AtomRcsAcsProvisioningStats = 10135,
28363    AtomSipDelegateStats = 10136,
28364    AtomSipTransportFeatureTagStats = 10137,
28365    AtomSipMessageResponse = 10138,
28366    AtomSipTransportSession = 10139,
28367    AtomImsDedicatedBearerListenerEvent = 10140,
28368    AtomImsDedicatedBearerEvent = 10141,
28369    AtomImsRegistrationServiceDescStats = 10142,
28370    AtomUceEventStats = 10143,
28371    AtomPresenceNotifyEvent = 10144,
28372    AtomGbaEvent = 10145,
28373    AtomPerSimStatus = 10146,
28374    AtomGpuWorkPerUid = 10147,
28375    AtomPersistentUriPermissionsAmountPerPackage = 10148,
28376    AtomSignedPartitionInfo = 10149,
28377    AtomPinnedFileSizesPerPackage = 10150,
28378    AtomPendingIntentsPerPackage = 10151,
28379    AtomUserInfo = 10152,
28380    AtomTelephonyNetworkRequestsV2 = 10153,
28381    AtomDeviceTelephonyProperties = 10154,
28382    AtomRemoteKeyProvisioningErrorCounts = 10155,
28383    AtomSafetyState = 10156,
28384    AtomIncomingMms = 10157,
28385    AtomOutgoingMms = 10158,
28386    AtomMultiUserInfo = 10160,
28387    AtomNetworkBpfMapInfo = 10161,
28388    AtomOutgoingShortCodeSms = 10162,
28389    AtomConnectivityStateSample = 10163,
28390    AtomNetworkSelectionRematchReasonsInfo = 10164,
28391    AtomGameModeInfo = 10165,
28392    AtomGameModeConfiguration = 10166,
28393    AtomGameModeListener = 10167,
28394    AtomNetworkSliceRequestCount = 10168,
28395    AtomWsTileSnapshot = 10169,
28396    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
28397    AtomProcessState = 10171,
28398    AtomProcessAssociation = 10172,
28399    AtomAdpfSystemComponentInfo = 10173,
28400    AtomNotificationMemoryUse = 10174,
28401    AtomHdrCapabilities = 10175,
28402    AtomWsFavouriteWatchFaceListSnapshot = 10176,
28403    AtomWifiAwareNdpReported = 638,
28404    AtomWifiAwareAttachReported = 639,
28405    AtomWifiSelfRecoveryTriggered = 661,
28406    AtomSoftApStarted = 680,
28407    AtomSoftApStopped = 681,
28408    AtomWifiLockReleased = 687,
28409    AtomWifiLockDeactivated = 688,
28410    AtomWifiConfigSaved = 689,
28411    AtomWifiAwareResourceUsingChanged = 690,
28412    AtomWifiAwareHalApiCalled = 691,
28413    AtomWifiLocalOnlyRequestReceived = 692,
28414    AtomWifiLocalOnlyRequestScanTriggered = 693,
28415    AtomWifiThreadTaskExecuted = 694,
28416    AtomWifiStateChanged = 700,
28417    AtomPnoScanStarted = 719,
28418    AtomPnoScanStopped = 720,
28419    AtomWifiIsUnusableReported = 722,
28420    AtomWifiApCapabilitiesReported = 723,
28421    AtomSoftApStateChanged = 805,
28422    AtomScorerPredictionResultReported = 884,
28423    AtomWifiAwareCapabilities = 10190,
28424    AtomWifiModuleInfo = 10193,
28425    AtomWifiSettingInfo = 10194,
28426    AtomWifiComplexSettingInfo = 10195,
28427    AtomWifiConfiguredNetworkInfo = 10198,
28428    AtomWearPowerMenuOpened = 731,
28429    AtomWearAssistantOpened = 755,
28430    AtomFirstOverlayStateChanged = 917,
28431    AtomWsWearTimeSession = 610,
28432    AtomWsIncomingCallActionReported = 626,
28433    AtomWsCallDisconnectionReported = 627,
28434    AtomWsCallDurationReported = 628,
28435    AtomWsCallUserExperienceLatencyReported = 629,
28436    AtomWsCallInteractionReported = 630,
28437    AtomWsOnBodyStateChanged = 787,
28438    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
28439    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
28440    AtomWsComplicationsImpactedNotificationEventReported = 804,
28441    AtomWsRemoteEventUsageReported = 920,
28442    AtomWsNotificationManagedDismissalSync = 941,
28443    AtomWsBugreportEventReported = 964,
28444    AtomWsStandaloneModeSnapshot = 10197,
28445    AtomWsFavoriteWatchFaceSnapshot = 10206,
28446    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
28447    AtomWsWatchFaceCustomizationSnapshot = 10227,
28448    AtomWearAdaptiveSuspendStatsReported = 619,
28449    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
28450    AtomWearPowerAnomalyServiceEventStatsReported = 621,
28451    AtomWearTimeSyncRequested = 911,
28452    AtomWearTimeUpdateStarted = 912,
28453    AtomWearTimeSyncAttemptCompleted = 913,
28454    AtomWearTimeChanged = 914,
28455    AtomWearSetupWizardDeviceStatusReported = 953,
28456    AtomWearSetupWizardPairingCompleted = 954,
28457    AtomWearSetupWizardConnectionEstablished = 955,
28458    AtomWearSetupWizardCheckinCompleted = 956,
28459    AtomWearSetupWizardCompanionTimeReported = 957,
28460    AtomWearSetupWizardStatusReported = 958,
28461    AtomWearSetupWizardHeartbeatReported = 959,
28462    AtomWearSetupWizardFrpTriggered = 960,
28463    AtomWearSetupWizardSystemUpdateTriggered = 961,
28464    AtomWearSetupWizardPhoneSwitchTriggered = 962,
28465    AtomRendererInitialized = 736,
28466    AtomSchemaVersionReceived = 737,
28467    AtomLayoutInspected = 741,
28468    AtomLayoutExpressionInspected = 742,
28469    AtomLayoutAnimationsInspected = 743,
28470    AtomMaterialComponentsInspected = 744,
28471    AtomTileRequested = 745,
28472    AtomStateResponseReceived = 746,
28473    AtomTileResponseReceived = 747,
28474    AtomInflationFinished = 748,
28475    AtomInflationFailed = 749,
28476    AtomIgnoredInflationFailuresReported = 750,
28477    AtomDrawableRendered = 751,
28478    AtomWearModeStateChanged = 715,
28479    AtomMediaActionReported = 608,
28480    AtomMediaControlsLaunched = 609,
28481    AtomMediaSessionStateChanged = 677,
28482    AtomMediaControlApiUsageReported = 966,
28483    AtomMediaSubscriptionChanged = 990,
28484    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
28485    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
28486    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
28487    AtomMediatorUpdated = 721,
28488    AtomSysproxyBluetoothBytesTransfer = 10196,
28489    AtomSysproxyConnectionUpdated = 786,
28490    AtomWearCompanionConnectionState = 921,
28491    AtomSysproxyServiceStateUpdated = 949,
28492    AtomUwbActivityInfo = 10188,
28493    AtomTestUprobestatsAtomReported = 915,
28494    AtomTvLowPowerStandbyPolicy = 679,
28495    AtomExternalTvInputEvent = 717,
28496    AtomBootIntegrityInfoReported = 775,
28497    AtomThreadnetworkTelemetryDataReported = 738,
28498    AtomThreadnetworkTopoEntryRepeated = 739,
28499    AtomThreadnetworkDeviceInfoReported = 740,
28500    AtomCellularRadioPowerStateChanged = 713,
28501    AtomEmergencyNumbersInfo = 10180,
28502    AtomDataNetworkValidation = 10207,
28503    AtomDataRatStateChanged = 854,
28504    AtomConnectedChannelChanged = 882,
28505    AtomCellularIdentifierDisclosed = 800,
28506    AtomSatelliteController = 10182,
28507    AtomSatelliteSession = 10183,
28508    AtomSatelliteIncomingDatagram = 10184,
28509    AtomSatelliteOutgoingDatagram = 10185,
28510    AtomSatelliteProvision = 10186,
28511    AtomSatelliteSosMessageRecommender = 10187,
28512    AtomCarrierRoamingSatelliteSession = 10211,
28513    AtomCarrierRoamingSatelliteControllerStats = 10212,
28514    AtomControllerStatsPerPackage = 10213,
28515    AtomSatelliteEntitlement = 10214,
28516    AtomSatelliteConfigUpdater = 10215,
28517    AtomSatelliteAccessController = 10219,
28518    AtomQualifiedRatListChanged = 634,
28519    AtomQnsImsCallDropStats = 635,
28520    AtomQnsFallbackRestrictionChanged = 636,
28521    AtomQnsRatPreferenceMismatchInfo = 10177,
28522    AtomQnsHandoverTimeMillis = 10178,
28523    AtomQnsHandoverPingpong = 10179,
28524    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
28525    AtomEmergencyNumberDialed = 637,
28526    AtomCallStats = 10221,
28527    AtomCallAudioRouteStats = 10222,
28528    AtomTelecomApiStats = 10223,
28529    AtomTelecomErrorStats = 10224,
28530    AtomLockscreenShortcutSelected = 611,
28531    AtomLockscreenShortcutTriggered = 612,
28532    AtomLauncherImpressionEventV2 = 716,
28533    AtomDisplaySwitchLatencyTracked = 753,
28534    AtomNotificationListenerService = 829,
28535    AtomNavHandleTouchPoints = 869,
28536    AtomCommunalHubWidgetEventReported = 908,
28537    AtomPeripheralTutorialLaunched = 942,
28538    AtomContextualEducationTriggered = 971,
28539    AtomCommunalHubSnapshot = 10226,
28540    AtomTestExtensionAtomReported = 660,
28541    AtomTestRestrictedAtomReported = 672,
28542    AtomStatsSocketLossReported = 752,
28543    AtomSettingsSpaReported = 622,
28544    AtomSelinuxAuditLog = 799,
28545    AtomSandboxApiCalled = 488,
28546    AtomSandboxActivityEventOccurred = 735,
28547    AtomSdkSandboxRestrictedAccessInSession = 796,
28548    AtomSandboxSdkStorage = 10159,
28549    AtomRkpdPoolStats = 664,
28550    AtomRkpdClientOperation = 665,
28551    AtomRangingSessionConfigured = 993,
28552    AtomRangingSessionStarted = 994,
28553    AtomRangingSessionClosed = 995,
28554    AtomRangingTechnologyStarted = 996,
28555    AtomRangingTechnologyStopped = 997,
28556    AtomMediaProviderDatabaseRollbackReported = 784,
28557    AtomBackupSetupStatusReported = 785,
28558    AtomScreenOffReported = 776,
28559    AtomScreenTimeoutOverrideReported = 836,
28560    AtomScreenInteractiveSessionReported = 837,
28561    AtomScreenDimReported = 867,
28562    AtomAtom9999 = 9999,
28563    AtomAtom99999 = 99999,
28564    AtomPhotopickerSessionInfoReported = 886,
28565    AtomPhotopickerApiInfoReported = 887,
28566    AtomPhotopickerUiEventLogged = 888,
28567    AtomPhotopickerMediaItemStatusReported = 889,
28568    AtomPhotopickerPreviewInfoLogged = 890,
28569    AtomPhotopickerMenuInteractionLogged = 891,
28570    AtomPhotopickerBannerInteractionLogged = 892,
28571    AtomPhotopickerMediaLibraryInfoLogged = 893,
28572    AtomPhotopickerPageInfoLogged = 894,
28573    AtomPhotopickerMediaGridSyncInfoReported = 895,
28574    AtomPhotopickerAlbumSyncInfoReported = 896,
28575    AtomPhotopickerSearchInfoReported = 897,
28576    AtomSearchDataExtractionDetailsReported = 898,
28577    AtomEmbeddedPhotopickerInfoReported = 899,
28578    AtomPermissionRationaleDialogViewed = 645,
28579    AtomPermissionRationaleDialogActionReported = 646,
28580    AtomAppDataSharingUpdatesNotificationInteraction = 647,
28581    AtomAppDataSharingUpdatesFragmentViewed = 648,
28582    AtomAppDataSharingUpdatesFragmentActionReported = 649,
28583    AtomEnhancedConfirmationDialogResultReported = 827,
28584    AtomEnhancedConfirmationRestrictionCleared = 828,
28585    AtomPressureStallInformation = 10229,
28586    AtomPdfLoadReported = 859,
28587    AtomPdfApiUsageReported = 860,
28588    AtomPdfSearchReported = 861,
28589    AtomComponentStateChangedReported = 863,
28590    AtomOndevicepersonalizationApiCalled = 711,
28591    AtomOndevicepersonalizationTraceEvent = 952,
28592    AtomNfcObserveModeStateChanged = 855,
28593    AtomNfcFieldChanged = 856,
28594    AtomNfcPollingLoopNotificationReported = 857,
28595    AtomNfcProprietaryCapabilitiesReported = 858,
28596    AtomNfcExitFrameTableChanged = 1036,
28597    AtomNfcAutoTransactReported = 1038,
28598    AtomMicroxrDeviceBootCompleteReported = 901,
28599    AtomMteState = 10181,
28600    AtomZramMaintenanceExecuted = 1015,
28601    AtomZramSetupExecuted = 1029,
28602    AtomZramMmStatMmd = 10232,
28603    AtomZramBdStatMmd = 10233,
28604    AtomMediaEditingEndedReported = 798,
28605    AtomMediaCodecReclaimRequestCompleted = 600,
28606    AtomMediaCodecStarted = 641,
28607    AtomMediaCodecStopped = 642,
28608    AtomMediaCodecRendered = 684,
28609    AtomEmergencyStateChanged = 633,
28610    AtomChreSignificantMotionStateChanged = 868,
28611    AtomPopulationDensityProviderLoadingReported = 1002,
28612    AtomDensityBasedCoarseLocationsUsageReported = 1003,
28613    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
28614    AtomKernelOomKillOccurred = 754,
28615    AtomKeyboardConfigured = 682,
28616    AtomKeyboardSystemsEventReported = 683,
28617    AtomInputdeviceUsageReported = 686,
28618    AtomInputEventLatencyReported = 932,
28619    AtomTouchpadUsage = 10191,
28620    AtomIkeSessionTerminated = 678,
28621    AtomIkeLivenessCheckSessionValidated = 760,
28622    AtomNegotiatedSecurityAssociation = 821,
28623    AtomHotwordEgressSizeAtomReported = 761,
28624    AtomHealthConnectUiImpression = 623,
28625    AtomHealthConnectUiInteraction = 624,
28626    AtomHealthConnectAppOpenedReported = 625,
28627    AtomHealthConnectApiCalled = 616,
28628    AtomHealthConnectUsageStats = 617,
28629    AtomHealthConnectStorageStats = 618,
28630    AtomHealthConnectApiInvoked = 643,
28631    AtomExerciseRouteApiCalled = 654,
28632    AtomHealthConnectExportInvoked = 907,
28633    AtomHealthConnectImportInvoked = 918,
28634    AtomHealthConnectExportImportStatsReported = 919,
28635    AtomHealthConnectPermissionStats = 963,
28636    AtomHealthConnectPhrApiInvoked = 980,
28637    AtomHealthConnectPhrUsageStats = 981,
28638    AtomHealthConnectPhrStorageStats = 984,
28639    AtomHealthConnectRestrictedEcosystemStats = 985,
28640    AtomHealthConnectEcosystemStats = 986,
28641    AtomHdmiEarcStatusReported = 701,
28642    AtomHdmiSoundbarModeStatusReported = 724,
28643    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
28644    AtomBatteryHealth = 10220,
28645    AtomBiometricUnenrolled = 944,
28646    AtomBiometricEnumerated = 945,
28647    AtomApplicationGrammaticalInflectionChanged = 584,
28648    AtomSystemGrammaticalInflectionChanged = 816,
28649    AtomFullScreenIntentLaunched = 631,
28650    AtomBalAllowed = 632,
28651    AtomInTaskActivityStarted = 685,
28652    AtomDeviceOrientationChanged = 906,
28653    AtomCachedAppsHighWatermark = 10189,
28654    AtomStylusPredictionMetricsReported = 718,
28655    AtomUserRiskEventReported = 725,
28656    AtomMediaProjectionStateChanged = 729,
28657    AtomMediaProjectionTargetChanged = 730,
28658    AtomExcessiveBinderProxyCountReported = 853,
28659    AtomProxyBytesTransferByFgBg = 10200,
28660    AtomMobileBytesTransferByProcState = 10204,
28661    AtomBiometricFrrNotification = 817,
28662    AtomSensitiveContentMediaProjectionSession = 830,
28663    AtomSensitiveNotificationAppProtectionSession = 831,
28664    AtomSensitiveNotificationAppProtectionApplied = 832,
28665    AtomSensitiveNotificationRedaction = 833,
28666    AtomSensitiveContentAppProtection = 835,
28667    AtomAppRestrictionStateChanged = 866,
28668    AtomBatteryUsageStatsPerUid = 10209,
28669    AtomPostgcMemorySnapshot = 924,
28670    AtomPowerSaveTempAllowlistChanged = 926,
28671    AtomAppOpAccessTracked = 931,
28672    AtomContentOrFileUriEventReported = 933,
28673    AtomDeviceIdleTempAllowlistUpdated = 940,
28674    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
28675    AtomFrameworkWakelockInfo = 10230,
28676    AtomJankFrameCountByWidgetReported = 950,
28677    AtomIntentCreatorTokenAdded = 978,
28678    AtomNotificationChannelClassification = 983,
28679    AtomCameraStatusForCompatibilityChanged = 999,
28680    AtomFederatedComputeApiCalled = 712,
28681    AtomFederatedComputeTrainingEventReported = 771,
28682    AtomExampleIteratorNextLatencyReported = 838,
28683    AtomFederatedComputeTraceEventReported = 992,
28684    AtomExpressEventReported = 528,
28685    AtomExpressHistogramSampleReported = 593,
28686    AtomExpressUidEventReported = 644,
28687    AtomExpressUidHistogramSampleReported = 658,
28688    AtomDreamSettingChanged = 705,
28689    AtomDreamSettingSnapshot = 10192,
28690    AtomDndStateChanged = 657,
28691    AtomExternalDisplayStateChanged = 806,
28692    AtomDisplayModeDirectorVoteChanged = 792,
28693    AtomDevicePolicyManagementMode = 10216,
28694    AtomDevicePolicyState = 10217,
28695    AtomDeviceLockCheckInRequestReported = 726,
28696    AtomDeviceLockProvisioningCompleteReported = 727,
28697    AtomDeviceLockKioskAppRequestReported = 728,
28698    AtomDeviceLockCheckInRetryReported = 789,
28699    AtomDeviceLockProvisionFailureReported = 790,
28700    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
28701    AtomDesktopModeUiChanged = 818,
28702    AtomDesktopModeSessionTaskUpdate = 819,
28703    AtomDesktopModeTaskSizeUpdated = 935,
28704    AtomCronetEngineCreated = 703,
28705    AtomCronetTrafficReported = 704,
28706    AtomCronetEngineBuilderInitialized = 762,
28707    AtomCronetHttpFlagsInitialized = 763,
28708    AtomCronetInitialized = 764,
28709    AtomCredentialManagerApiCalled = 585,
28710    AtomCredentialManagerInitPhaseReported = 651,
28711    AtomCredentialManagerCandidatePhaseReported = 652,
28712    AtomCredentialManagerFinalPhaseReported = 653,
28713    AtomCredentialManagerTotalReported = 667,
28714    AtomCredentialManagerFinalnouidReported = 668,
28715    AtomCredentialManagerGetReported = 669,
28716    AtomCredentialManagerAuthClickReported = 670,
28717    AtomCredentialManagerApiv2Called = 671,
28718    AtomCpuPolicy = 10199,
28719    AtomVpnConnectionStateChanged = 850,
28720    AtomVpnConnectionReported = 851,
28721    AtomIpClientRaInfoReported = 778,
28722    AtomApfSessionInfoReported = 777,
28723    AtomCoreNetworkingTerribleErrorOccurred = 979,
28724    AtomNetworkStatsRecorderFileOperated = 783,
28725    AtomDailyKeepaliveInfoReported = 650,
28726    AtomNetworkRequestStateChanged = 779,
28727    AtomTetheringActiveSessionsReported = 925,
28728    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
28729    AtomHardwareRendererEvent = 946,
28730    AtomTextureViewEvent = 947,
28731    AtomSurfaceControlEvent = 948,
28732    AtomImageDecoded = 977,
28733    AtomCertificateTransparencyLogListStateChanged = 934,
28734    AtomConscryptServiceUsed = 965,
28735    AtomCertificateTransparencyVerificationReported = 989,
28736    AtomCameraFeatureCombinationQueryEvent = 900,
28737    AtomBroadcastSent = 922,
28738    AtomBluetoothHashedDeviceNameReported = 613,
28739    AtomBluetoothL2capCocClientConnection = 614,
28740    AtomBluetoothL2capCocServerConnection = 615,
28741    AtomBluetoothLeSessionConnected = 656,
28742    AtomRestrictedBluetoothDeviceNameReported = 666,
28743    AtomBluetoothProfileConnectionAttempted = 696,
28744    AtomBluetoothContentProfileErrorReported = 781,
28745    AtomBluetoothRfcommConnectionAttempted = 782,
28746    AtomRemoteDeviceInformationWithMetricId = 862,
28747    AtomLeAppScanStateChanged = 870,
28748    AtomLeRadioScanStopped = 871,
28749    AtomLeScanResultReceived = 872,
28750    AtomLeScanAbused = 873,
28751    AtomLeAdvStateChanged = 874,
28752    AtomLeAdvErrorReported = 875,
28753    AtomA2dpSessionReported = 904,
28754    AtomBluetoothCrossLayerEventReported = 916,
28755    AtomBroadcastAudioSessionReported = 927,
28756    AtomBroadcastAudioSyncReported = 928,
28757    AtomBluetoothRfcommConnectionReportedAtClose = 982,
28758    AtomBluetoothLeConnection = 988,
28759    AtomHearingDeviceActiveEventReported = 1021,
28760    AtomBackportedFixStatusReported = 987,
28761    AtomPluginInitialized = 655,
28762    AtomCarSystemUiDataSubscriptionEventReported = 974,
28763    AtomCarSettingsDataSubscriptionEventReported = 975,
28764    AtomCarQcLibEventReported = 976,
28765    AtomCarWakeupFromSuspendReported = 852,
28766    AtomCarRecentsEventReported = 770,
28767    AtomCarCalmModeEventReported = 797,
28768    AtomAutofillUiEventReported = 603,
28769    AtomAutofillFillRequestReported = 604,
28770    AtomAutofillFillResponseReported = 605,
28771    AtomAutofillSaveEventReported = 606,
28772    AtomAutofillSessionCommitted = 607,
28773    AtomAutofillFieldClassificationEventReported = 659,
28774    AtomOdrefreshReported = 366,
28775    AtomOdsignReported = 548,
28776    AtomBackgroundDexoptJobEnded = 467,
28777    AtomPrerebootDexoptJobEnded = 883,
28778    AtomArtDatumReported = 332,
28779    AtomArtDeviceDatumReported = 550,
28780    AtomArtDatumDeltaReported = 565,
28781    AtomArtDex2oatReported = 929,
28782    AtomArtDeviceStatus = 10205,
28783    AtomAppSearchSetSchemaStatsReported = 385,
28784    AtomAppSearchSchemaMigrationStatsReported = 579,
28785    AtomAppSearchUsageSearchIntentStatsReported = 825,
28786    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
28787    AtomAppSearchAppsIndexerStatsReported = 909,
28788    AtomAppFunctionsRequestReported = 998,
28789    AtomApexInstallationRequested = 732,
28790    AtomApexInstallationStaged = 733,
28791    AtomApexInstallationEnded = 734,
28792    AtomAiWallpapersButtonPressed = 706,
28793    AtomAiWallpapersTemplateSelected = 707,
28794    AtomAiWallpapersTermSelected = 708,
28795    AtomAiWallpapersWallpaperSet = 709,
28796    AtomAiWallpapersSessionSummary = 710,
28797    AtomJsscriptengineLatencyReported = 483,
28798    AtomAdServicesApiCalled = 435,
28799    AtomAdServicesMesurementReportsUploaded = 436,
28800    AtomMobileDataDownloadFileGroupStatusReported = 490,
28801    AtomMobileDataDownloadDownloadResultReported = 502,
28802    AtomAdServicesSettingsUsageReported = 493,
28803    AtomBackgroundFetchProcessReported = 496,
28804    AtomUpdateCustomAudienceProcessReported = 497,
28805    AtomRunAdBiddingProcessReported = 498,
28806    AtomRunAdScoringProcessReported = 499,
28807    AtomRunAdSelectionProcessReported = 500,
28808    AtomRunAdBiddingPerCaProcessReported = 501,
28809    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
28810    AtomAdServicesMeasurementRegistrations = 512,
28811    AtomAdServicesGetTopicsReported = 535,
28812    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
28813    AtomAdServicesEpochComputationClassifierReported = 537,
28814    AtomAdServicesBackCompatGetTopicsReported = 598,
28815    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
28816    AtomAdServicesMeasurementDebugKeys = 640,
28817    AtomAdServicesErrorReported = 662,
28818    AtomAdServicesBackgroundJobsExecutionReported = 663,
28819    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
28820    AtomAdServicesMeasurementAttribution = 674,
28821    AtomAdServicesMeasurementJobs = 675,
28822    AtomAdServicesMeasurementWipeout = 676,
28823    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
28824    AtomAdServicesEnrollmentDataStored = 697,
28825    AtomAdServicesEnrollmentFileDownloaded = 698,
28826    AtomAdServicesEnrollmentMatched = 699,
28827    AtomAdServicesConsentMigrated = 702,
28828    AtomAdServicesEnrollmentFailed = 714,
28829    AtomAdServicesMeasurementClickVerification = 756,
28830    AtomAdServicesEncryptionKeyFetched = 765,
28831    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
28832    AtomDestinationRegisteredBeacons = 767,
28833    AtomReportInteractionApiCalled = 768,
28834    AtomInteractionReportingTableCleared = 769,
28835    AtomAppManifestConfigHelperCalled = 788,
28836    AtomAdFilteringProcessJoinCaReported = 793,
28837    AtomAdFilteringProcessAdSelectionReported = 794,
28838    AtomAdCounterHistogramUpdaterReported = 795,
28839    AtomSignatureVerification = 807,
28840    AtomKAnonImmediateSignJoinStatusReported = 808,
28841    AtomKAnonBackgroundJobStatusReported = 809,
28842    AtomKAnonInitializeStatusReported = 810,
28843    AtomKAnonSignStatusReported = 811,
28844    AtomKAnonJoinStatusReported = 812,
28845    AtomKAnonKeyAttestationStatusReported = 813,
28846    AtomGetAdSelectionDataApiCalled = 814,
28847    AtomGetAdSelectionDataBuyerInputGenerated = 815,
28848    AtomBackgroundJobSchedulingReported = 834,
28849    AtomTopicsEncryptionEpochComputationReported = 840,
28850    AtomTopicsEncryptionGetTopicsReported = 841,
28851    AtomAdservicesShellCommandCalled = 842,
28852    AtomUpdateSignalsApiCalled = 843,
28853    AtomEncodingJobRun = 844,
28854    AtomEncodingJsFetch = 845,
28855    AtomEncodingJsExecution = 846,
28856    AtomPersistAdSelectionResultCalled = 847,
28857    AtomServerAuctionKeyFetchCalled = 848,
28858    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
28859    AtomAdServicesMeasurementProcessOdpRegistration = 864,
28860    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
28861    AtomSelectAdsFromOutcomesApiCalled = 876,
28862    AtomReportImpressionApiCalled = 877,
28863    AtomAdServicesEnrollmentTransactionStats = 885,
28864    AtomAdServicesCobaltLoggerEventReported = 902,
28865    AtomAdServicesCobaltPeriodicJobEventReported = 903,
28866    AtomUpdateSignalsProcessReported = 905,
28867    AtomTopicsScheduleEpochJobSettingReported = 930,
28868    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
28869    AtomScheduledCustomAudienceUpdatePerformed = 968,
28870    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
28871    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
28872    AtomThermalStatusCalled = 772,
28873    AtomThermalHeadroomCalled = 773,
28874    AtomThermalHeadroomThresholdsCalled = 774,
28875    AtomAdpfHintSessionTidCleanup = 839,
28876    AtomThermalHeadroomThresholds = 10201,
28877    AtomAdpfSessionSnapshot = 10218,
28878    AtomAdaptiveAuthUnlockAfterLockReported = 820,
28879    AtomAccountManagerEvent = 951,
28880    AtomAccessibilityCheckResultReported = 910,
28881}
28882impl AtomId {
28883    /// String value of the enum field names used in the ProtoBuf definition.
28884    ///
28885    /// The values are not transformed in any way and thus are considered stable
28886    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28887    pub fn as_str_name(&self) -> &'static str {
28888        match self {
28889            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
28890            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
28891            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
28892            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
28893            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
28894            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
28895            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
28896            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
28897            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
28898            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
28899            Self::AtomLongPartialWakelockStateChanged => {
28900                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
28901            }
28902            Self::AtomMobileRadioPowerStateChanged => {
28903                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
28904            }
28905            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
28906            Self::AtomActivityManagerSleepStateChanged => {
28907                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
28908            }
28909            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
28910            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
28911            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
28912            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
28913            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
28914            Self::AtomBatterySaverModeStateChanged => {
28915                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
28916            }
28917            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
28918            Self::AtomDeviceIdlingModeStateChanged => {
28919                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
28920            }
28921            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
28922            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
28923            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
28924            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
28925            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
28926            Self::AtomProcessLifeCycleStateChanged => {
28927                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
28928            }
28929            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
28930            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
28931            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
28932            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
28933            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
28934            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
28935            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
28936            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
28937            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
28938            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
28939            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
28940            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
28941            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
28942            Self::AtomActivityForegroundStateChanged => {
28943                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
28944            }
28945            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
28946            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
28947            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
28948            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
28949            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
28950            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
28951            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
28952            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
28953            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
28954            Self::AtomPictureInPictureStateChanged => {
28955                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
28956            }
28957            Self::AtomWifiMulticastLockStateChanged => {
28958                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
28959            }
28960            Self::AtomAppStartMemoryStateCaptured => {
28961                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
28962            }
28963            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
28964            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
28965            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
28966            Self::AtomForegroundServiceStateChanged => {
28967                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
28968            }
28969            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
28970            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
28971            Self::AtomKeyguardBouncerStateChanged => {
28972                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
28973            }
28974            Self::AtomKeyguardBouncerPasswordEntered => {
28975                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
28976            }
28977            Self::AtomAppDied => "ATOM_APP_DIED",
28978            Self::AtomResourceConfigurationChanged => {
28979                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
28980            }
28981            Self::AtomBluetoothEnabledStateChanged => {
28982                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
28983            }
28984            Self::AtomBluetoothConnectionStateChanged => {
28985                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
28986            }
28987            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
28988            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
28989            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
28990            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
28991            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
28992            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
28993            Self::AtomMobileConnectionStateChanged => {
28994                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
28995            }
28996            Self::AtomMobileRadioTechnologyChanged => {
28997                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
28998            }
28999            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
29000            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
29001            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
29002            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
29003            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
29004            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
29005            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
29006            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
29007            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
29008            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
29009            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
29010            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
29011            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
29012            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
29013            Self::AtomSlowIo => "ATOM_SLOW_IO",
29014            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
29015            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
29016            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
29017            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
29018            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
29019            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
29020            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
29021            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
29022            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
29023            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
29024            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
29025            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
29026            Self::AtomDocsUiFileOpCopyMoveModeReported => {
29027                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
29028            }
29029            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
29030            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
29031            Self::AtomDocsUiInvalidScopedAccessRequest => {
29032                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
29033            }
29034            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
29035            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
29036            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
29037            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
29038            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
29039            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
29040            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
29041            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
29042            Self::AtomDocsUiPickerLaunchedFromReported => {
29043                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
29044            }
29045            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
29046            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
29047            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
29048            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
29049            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
29050            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
29051            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
29052            Self::AtomBluetoothLinkLayerConnectionEvent => {
29053                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
29054            }
29055            Self::AtomBluetoothAclConnectionStateChanged => {
29056                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
29057            }
29058            Self::AtomBluetoothScoConnectionStateChanged => {
29059                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
29060            }
29061            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
29062            Self::AtomAppOptimizedAfterDowngraded => {
29063                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
29064            }
29065            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
29066            Self::AtomGnssNfwNotificationReported => {
29067                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
29068            }
29069            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
29070            Self::AtomUsbPortOverheatEventReported => {
29071                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
29072            }
29073            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
29074            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
29075            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
29076            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
29077            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
29078            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
29079            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
29080            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
29081            Self::AtomBroadcastDispatchLatencyReported => {
29082                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
29083            }
29084            Self::AtomAttentionManagerServiceResultReported => {
29085                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
29086            }
29087            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
29088            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
29089            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
29090            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
29091            Self::AtomBiometricSystemHealthIssueDetected => {
29092                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
29093            }
29094            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
29095            Self::AtomScheduledJobConstraintChanged => {
29096                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
29097            }
29098            Self::AtomBluetoothActiveDeviceChanged => {
29099                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
29100            }
29101            Self::AtomBluetoothA2dpPlaybackStateChanged => {
29102                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
29103            }
29104            Self::AtomBluetoothA2dpCodecConfigChanged => {
29105                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
29106            }
29107            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
29108                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
29109            }
29110            Self::AtomBluetoothA2dpAudioUnderrunReported => {
29111                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
29112            }
29113            Self::AtomBluetoothA2dpAudioOverrunReported => {
29114                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
29115            }
29116            Self::AtomBluetoothDeviceRssiReported => {
29117                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
29118            }
29119            Self::AtomBluetoothDeviceFailedContactCounterReported => {
29120                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
29121            }
29122            Self::AtomBluetoothDeviceTxPowerLevelReported => {
29123                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
29124            }
29125            Self::AtomBluetoothHciTimeoutReported => {
29126                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
29127            }
29128            Self::AtomBluetoothQualityReportReported => {
29129                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
29130            }
29131            Self::AtomBluetoothDeviceInfoReported => {
29132                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
29133            }
29134            Self::AtomBluetoothRemoteVersionInfoReported => {
29135                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
29136            }
29137            Self::AtomBluetoothSdpAttributeReported => {
29138                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
29139            }
29140            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
29141            Self::AtomBluetoothClassicPairingEventReported => {
29142                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
29143            }
29144            Self::AtomBluetoothSmpPairingEventReported => {
29145                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
29146            }
29147            Self::AtomScreenTimeoutExtensionReported => {
29148                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
29149            }
29150            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
29151            Self::AtomPermissionGrantRequestResultReported => {
29152                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
29153            }
29154            Self::AtomBluetoothSocketConnectionStateChanged => {
29155                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
29156            }
29157            Self::AtomDeviceIdentifierAccessDenied => {
29158                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
29159            }
29160            Self::AtomBubbleDeveloperErrorReported => {
29161                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
29162            }
29163            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
29164            Self::AtomAssistGestureFeedbackReported => {
29165                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
29166            }
29167            Self::AtomAssistGestureProgressReported => {
29168                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
29169            }
29170            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
29171            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
29172            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
29173            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
29174            Self::AtomAppInstallOnExternalStorageReported => {
29175                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
29176            }
29177            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
29178            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
29179            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
29180            Self::AtomSystemServerWatchdogOccurred => {
29181                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
29182            }
29183            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
29184            Self::AtomBluetoothClassOfDeviceReported => {
29185                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
29186            }
29187            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
29188            Self::AtomThermalThrottlingSeverityStateChanged => {
29189                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
29190            }
29191            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
29192            Self::AtomMediametricsAudiopolicyReported => {
29193                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
29194            }
29195            Self::AtomMediametricsAudiorecordReported => {
29196                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
29197            }
29198            Self::AtomMediametricsAudiothreadReported => {
29199                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
29200            }
29201            Self::AtomMediametricsAudiotrackReported => {
29202                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
29203            }
29204            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
29205            Self::AtomMediametricsDrmWidevineReported => {
29206                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
29207            }
29208            Self::AtomMediametricsExtractorReported => {
29209                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
29210            }
29211            Self::AtomMediametricsMediadrmReported => {
29212                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
29213            }
29214            Self::AtomMediametricsNuplayerReported => {
29215                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
29216            }
29217            Self::AtomMediametricsRecorderReported => {
29218                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
29219            }
29220            Self::AtomMediametricsDrmmanagerReported => {
29221                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
29222            }
29223            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
29224            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
29225            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
29226            Self::AtomContentCaptureCallerMismatchReported => {
29227                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
29228            }
29229            Self::AtomContentCaptureServiceEvents => {
29230                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
29231            }
29232            Self::AtomContentCaptureSessionEvents => {
29233                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
29234            }
29235            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
29236            Self::AtomLocationManagerApiUsageReported => {
29237                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
29238            }
29239            Self::AtomReviewPermissionsFragmentResultReported => {
29240                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
29241            }
29242            Self::AtomRuntimePermissionsUpgradeResult => {
29243                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
29244            }
29245            Self::AtomGrantPermissionsActivityButtonActions => {
29246                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
29247            }
29248            Self::AtomLocationAccessCheckNotificationAction => {
29249                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
29250            }
29251            Self::AtomAppPermissionFragmentActionReported => {
29252                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
29253            }
29254            Self::AtomAppPermissionFragmentViewed => {
29255                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
29256            }
29257            Self::AtomAppPermissionsFragmentViewed => {
29258                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
29259            }
29260            Self::AtomPermissionAppsFragmentViewed => {
29261                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
29262            }
29263            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
29264            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
29265            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
29266            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
29267            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
29268            Self::AtomBackGestureReportedReported => {
29269                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
29270            }
29271            Self::AtomUpdateEngineUpdateAttemptReported => {
29272                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
29273            }
29274            Self::AtomUpdateEngineSuccessfulUpdateReported => {
29275                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
29276            }
29277            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
29278            Self::AtomAppCompatibilityChangeReported => {
29279                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
29280            }
29281            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
29282            Self::AtomVmsClientConnectionStateChanged => {
29283                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
29284            }
29285            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
29286            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
29287            Self::AtomMediaProviderPermissionRequested => {
29288                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
29289            }
29290            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
29291            Self::AtomMediaProviderIdleMaintenanceFinished => {
29292                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
29293            }
29294            Self::AtomRebootEscrowRecoveryReported => {
29295                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
29296            }
29297            Self::AtomBootTimeEventDurationReported => {
29298                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
29299            }
29300            Self::AtomBootTimeEventElapsedTimeReported => {
29301                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
29302            }
29303            Self::AtomBootTimeEventUtcTimeReported => {
29304                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
29305            }
29306            Self::AtomBootTimeEventErrorCodeReported => {
29307                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
29308            }
29309            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
29310            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
29311            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
29312            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
29313            Self::AtomIntegrityCheckResultReported => {
29314                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
29315            }
29316            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
29317            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
29318            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
29319            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
29320            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
29321            Self::AtomWifiConnectionResultReported => {
29322                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
29323            }
29324            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
29325            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
29326            Self::AtomForegroundServiceAppOpSessionEnded => {
29327                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
29328            }
29329            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
29330            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
29331            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
29332            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
29333            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
29334            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
29335            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
29336            Self::AtomUserLifecycleJourneyReported => {
29337                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
29338            }
29339            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
29340            Self::AtomAccessibilityShortcutReported => {
29341                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
29342            }
29343            Self::AtomAccessibilityServiceReported => {
29344                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
29345            }
29346            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
29347            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
29348            Self::AtomAutoRevokeNotificationClicked => {
29349                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
29350            }
29351            Self::AtomAutoRevokeFragmentAppViewed => {
29352                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
29353            }
29354            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
29355            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
29356                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
29357            }
29358            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
29359            Self::AtomAudioPowerUsageDataReported => {
29360                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
29361            }
29362            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
29363            Self::AtomMediaoutputOpSwitchReported => {
29364                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
29365            }
29366            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
29367            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
29368            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
29369            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
29370            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
29371            Self::AtomCarUserHalModifyUserRequestReported => {
29372                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
29373            }
29374            Self::AtomCarUserHalModifyUserResponseReported => {
29375                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
29376            }
29377            Self::AtomCarUserHalPostSwitchResponseReported => {
29378                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
29379            }
29380            Self::AtomCarUserHalInitialUserInfoRequestReported => {
29381                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
29382            }
29383            Self::AtomCarUserHalInitialUserInfoResponseReported => {
29384                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
29385            }
29386            Self::AtomCarUserHalUserAssociationRequestReported => {
29387                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
29388            }
29389            Self::AtomCarUserHalSetUserAssociationResponseReported => {
29390                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
29391            }
29392            Self::AtomNetworkIpProvisioningReported => {
29393                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
29394            }
29395            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
29396            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
29397            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
29398            Self::AtomMediametricsAudiorecorddeviceusageReported => {
29399                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
29400            }
29401            Self::AtomMediametricsAudiothreaddeviceusageReported => {
29402                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
29403            }
29404            Self::AtomMediametricsAudiotrackdeviceusageReported => {
29405                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
29406            }
29407            Self::AtomMediametricsAudiodeviceconnectionReported => {
29408                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
29409            }
29410            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
29411            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
29412            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
29413            Self::AtomContactsProviderStatusReported => {
29414                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
29415            }
29416            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
29417            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
29418            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
29419            Self::AtomUiInteractionFrameInfoReported => {
29420                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
29421            }
29422            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
29423            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
29424            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
29425            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
29426            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
29427            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
29428            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
29429            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
29430            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
29431            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
29432            Self::AtomMediametricsMediaparserReported => {
29433                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
29434            }
29435            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
29436            Self::AtomTextClassifierApiUsageReported => {
29437                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
29438            }
29439            Self::AtomCarWatchdogKillStatsReported => {
29440                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
29441            }
29442            Self::AtomMediametricsPlaybackReported => {
29443                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
29444            }
29445            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
29446            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
29447            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
29448            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
29449            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
29450            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
29451            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
29452            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
29453            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
29454            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
29455            Self::AtomImsServiceEntitlementUpdated => {
29456                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
29457            }
29458            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
29459            Self::AtomSimSpecificSettingsRestored => {
29460                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
29461            }
29462            Self::AtomTextClassifierDownloadReported => {
29463                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
29464            }
29465            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
29466            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
29467            Self::AtomBluetoothHalCrashReasonReported => {
29468                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
29469            }
29470            Self::AtomRebootEscrowPreparationReported => {
29471                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
29472            }
29473            Self::AtomRebootEscrowLskfCaptureReported => {
29474                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
29475            }
29476            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
29477            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
29478            Self::AtomMediametricsAaudiostreamReported => {
29479                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
29480            }
29481            Self::AtomMediaTranscodingSessionEnded => {
29482                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
29483            }
29484            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
29485            Self::AtomMagnificationModeWithImeOnReported => {
29486                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
29487            }
29488            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
29489            Self::AtomAppSearchPutDocumentStatsReported => {
29490                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
29491            }
29492            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
29493            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
29494            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
29495            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
29496            Self::AtomAuthPromptAuthenticateInvoked => {
29497                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
29498            }
29499            Self::AtomAuthManagerCanAuthenticateInvoked => {
29500                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
29501            }
29502            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
29503            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
29504            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
29505            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
29506            Self::AtomLocationTimeZoneProviderStateChanged => {
29507                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
29508            }
29509            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
29510            Self::AtomTimeoutAutoExtendedReported => {
29511                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
29512            }
29513            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
29514            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
29515            Self::AtomCarWatchdogIoOveruseStatsReported => {
29516                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
29517            }
29518            Self::AtomUserLevelHibernationStateChanged => {
29519                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
29520            }
29521            Self::AtomAppSearchInitializeStatsReported => {
29522                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
29523            }
29524            Self::AtomAppSearchQueryStatsReported => {
29525                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
29526            }
29527            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
29528            Self::AtomNetworkIpReachabilityMonitorReported => {
29529                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
29530            }
29531            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
29532            Self::AtomAnrOccurredProcessingStarted => {
29533                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
29534            }
29535            Self::AtomAppSearchRemoveStatsReported => {
29536                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
29537            }
29538            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
29539            Self::AtomPermissionUsageFragmentInteraction => {
29540                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
29541            }
29542            Self::AtomPermissionDetailsInteraction => {
29543                "ATOM_PERMISSION_DETAILS_INTERACTION"
29544            }
29545            Self::AtomPrivacySensorToggleInteraction => {
29546                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
29547            }
29548            Self::AtomPrivacyToggleDialogInteraction => {
29549                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
29550            }
29551            Self::AtomAppSearchOptimizeStatsReported => {
29552                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
29553            }
29554            Self::AtomNonA11yToolServiceWarningReport => {
29555                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
29556            }
29557            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
29558            Self::AtomSizeCompatRestartButtonEventReported => {
29559                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
29560            }
29561            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
29562            Self::AtomNetworkDnsHandshakeReported => {
29563                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
29564            }
29565            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
29566            Self::AtomBluetoothLeBatchScanReportDelay => {
29567                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
29568            }
29569            Self::AtomAccessibilityFloatingMenuUiChanged => {
29570                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
29571            }
29572            Self::AtomNeuralnetworksCompilationCompleted => {
29573                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
29574            }
29575            Self::AtomNeuralnetworksExecutionCompleted => {
29576                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
29577            }
29578            Self::AtomNeuralnetworksCompilationFailed => {
29579                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
29580            }
29581            Self::AtomNeuralnetworksExecutionFailed => {
29582                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
29583            }
29584            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
29585            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
29586            Self::AtomContextHubLoadedNanoappSnapshotReported => {
29587                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
29588            }
29589            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
29590            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
29591            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
29592            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
29593            Self::AtomUwbRangingMeasurementReceived => {
29594                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
29595            }
29596            Self::AtomTextClassifierDownloadWorkScheduled => {
29597                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
29598            }
29599            Self::AtomTextClassifierDownloadWorkCompleted => {
29600                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
29601            }
29602            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
29603            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
29604            Self::AtomNearbyDeviceScanStateChanged => {
29605                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
29606            }
29607            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
29608            Self::AtomMediametricsAudiotrackstatusReported => {
29609                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
29610            }
29611            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
29612            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
29613                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
29614            }
29615            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
29616            Self::AtomDisplayHbmBrightnessChanged => {
29617                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
29618            }
29619            Self::AtomPersistentUriPermissionsFlushed => {
29620                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
29621            }
29622            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
29623                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
29624            }
29625            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
29626            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
29627            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
29628            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
29629            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
29630            Self::AtomMediametricsAudiorecordstatusReported => {
29631                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
29632            }
29633            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
29634            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
29635            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
29636            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
29637            Self::AtomHotwordDetectorCreateRequested => {
29638                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
29639            }
29640            Self::AtomHotwordDetectionServiceInitResultReported => {
29641                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
29642            }
29643            Self::AtomHotwordDetectionServiceRestarted => {
29644                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
29645            }
29646            Self::AtomHotwordDetectorKeyphraseTriggered => {
29647                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
29648            }
29649            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
29650            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
29651                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
29652            }
29653            Self::AtomContactsIndexerUpdateStatsReported => {
29654                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
29655            }
29656            Self::AtomAppBackgroundRestrictionsInfo => {
29657                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
29658            }
29659            Self::AtomMmsSmsProviderGetThreadIdFailed => {
29660                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
29661            }
29662            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
29663                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
29664            }
29665            Self::AtomPermissionReminderNotificationInteracted => {
29666                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
29667            }
29668            Self::AtomRecentPermissionDecisionsInteracted => {
29669                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
29670            }
29671            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
29672            Self::AtomLeAudioConnectionSessionReported => {
29673                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
29674            }
29675            Self::AtomLeAudioBroadcastSessionReported => {
29676                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
29677            }
29678            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
29679            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
29680            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
29681            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
29682                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
29683            }
29684            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
29685                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
29686            }
29687            Self::AtomAccessibilityTextReadingOptionsChanged => {
29688                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
29689            }
29690            Self::AtomWifiSetupFailureCrashReported => {
29691                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
29692            }
29693            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
29694            Self::AtomIsolatedCompilationScheduled => {
29695                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
29696            }
29697            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
29698            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
29699                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
29700            }
29701            Self::AtomSystemServerPreWatchdogOccurred => {
29702                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
29703            }
29704            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
29705            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
29706            Self::AtomRemoteKeyProvisioningAttempt => {
29707                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
29708            }
29709            Self::AtomRemoteKeyProvisioningNetworkInfo => {
29710                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
29711            }
29712            Self::AtomRemoteKeyProvisioningTiming => {
29713                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
29714            }
29715            Self::AtomMediaoutputOpInteractionReport => {
29716                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
29717            }
29718            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
29719            Self::AtomAutofillPresentationEventReported => {
29720                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
29721            }
29722            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
29723            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
29724            Self::AtomSafetyCenterSystemEventReported => {
29725                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
29726            }
29727            Self::AtomSafetyCenterInteractionReported => {
29728                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
29729            }
29730            Self::AtomSettingsProviderSettingChanged => {
29731                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
29732            }
29733            Self::AtomBroadcastDeliveryEventReported => {
29734                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
29735            }
29736            Self::AtomServiceRequestEventReported => {
29737                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
29738            }
29739            Self::AtomProviderAcquisitionEventReported => {
29740                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
29741            }
29742            Self::AtomBluetoothDeviceNameReported => {
29743                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
29744            }
29745            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
29746            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
29747            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
29748            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
29749            Self::AtomPrivacySignalNotificationInteraction => {
29750                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
29751            }
29752            Self::AtomPrivacySignalIssueCardInteraction => {
29753                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
29754            }
29755            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
29756            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
29757            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
29758            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
29759            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
29760            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
29761            Self::AtomNetworkDnsServerSupportReported => {
29762                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
29763            }
29764            Self::AtomVmBooted => "ATOM_VM_BOOTED",
29765            Self::AtomVmExited => "ATOM_VM_EXITED",
29766            Self::AtomAmbientBrightnessStatsReported => {
29767                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
29768            }
29769            Self::AtomMediametricsSpatializercapabilitiesReported => {
29770                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
29771            }
29772            Self::AtomMediametricsSpatializerdeviceenabledReported => {
29773                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
29774            }
29775            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
29776                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
29777            }
29778            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
29779                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
29780            }
29781            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
29782            Self::AtomDeviceWideJobConstraintChanged => {
29783                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
29784            }
29785            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
29786            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
29787            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
29788            Self::AtomSystemDefaultNetworkChanged => {
29789                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
29790            }
29791            Self::AtomIwlanSetupDataCallResultReported => {
29792                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
29793            }
29794            Self::AtomIwlanPdnDisconnectedReasonReported => {
29795                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
29796            }
29797            Self::AtomAirplaneModeSessionReported => {
29798                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
29799            }
29800            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
29801            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
29802            Self::AtomPackageInstallationSessionReported => {
29803                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
29804            }
29805            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
29806            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
29807            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
29808            Self::AtomBluetoothDisconnectionReasonReported => {
29809                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
29810            }
29811            Self::AtomBluetoothLocalVersionsReported => {
29812                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
29813            }
29814            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
29815                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
29816            }
29817            Self::AtomBluetoothLocalSupportedFeaturesReported => {
29818                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
29819            }
29820            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
29821            Self::AtomBrightnessConfigurationUpdated => {
29822                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
29823            }
29824            Self::AtomWearMediaOutputSwitcherLaunched => {
29825                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
29826            }
29827            Self::AtomWearMediaOutputSwitcherFinished => {
29828                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
29829            }
29830            Self::AtomWearMediaOutputSwitcherConnectionReported => {
29831                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
29832            }
29833            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
29834                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
29835            }
29836            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
29837                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
29838            }
29839            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
29840                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
29841            }
29842            Self::AtomPackageManagerSnapshotReported => {
29843                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
29844            }
29845            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
29846                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
29847            }
29848            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
29849                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
29850            }
29851            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
29852            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
29853                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
29854            }
29855            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
29856            Self::AtomWsWatchFaceFavoriteActionReported => {
29857                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
29858            }
29859            Self::AtomWsWatchFaceSetActionReported => {
29860                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
29861            }
29862            Self::AtomPackageUninstallationReported => {
29863                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
29864            }
29865            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
29866            Self::AtomGameModeConfigurationChanged => {
29867                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
29868            }
29869            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
29870            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
29871            Self::AtomNetworkSliceDailyDataUsageReported => {
29872                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
29873            }
29874            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
29875            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
29876            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
29877            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
29878            Self::AtomGetTypeAccessedWithoutPermission => {
29879                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
29880            }
29881            Self::AtomMobileBundledAppInfoGathered => {
29882                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
29883            }
29884            Self::AtomWsWatchFaceComplicationSetChanged => {
29885                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
29886            }
29887            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
29888            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
29889            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
29890            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
29891            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
29892            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
29893            Self::AtomPerformanceHintSessionReported => {
29894                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
29895            }
29896            Self::AtomMediametricsMidiDeviceCloseReported => {
29897                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
29898            }
29899            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
29900            Self::AtomHotwordAudioEgressEventReported => {
29901                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
29902            }
29903            Self::AtomLocationEnabledStateChanged => {
29904                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
29905            }
29906            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
29907            Self::AtomUsbComplianceWarningsReported => {
29908                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
29909            }
29910            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
29911            Self::AtomMediaProviderVolumeRecoveryReported => {
29912                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
29913            }
29914            Self::AtomBiometricPropertiesCollected => {
29915                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
29916            }
29917            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
29918            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
29919            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
29920            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
29921            Self::AtomDeviceLogAccessEventReported => {
29922                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
29923            }
29924            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
29925            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
29926            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
29927            Self::AtomNetworkValidationFailureStatsDailyReported => {
29928                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
29929            }
29930            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
29931            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
29932            Self::AtomWsNotificationBridgemodeUpdated => {
29933                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
29934            }
29935            Self::AtomWsNotificationDismissalActioned => {
29936                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
29937            }
29938            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
29939            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
29940            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
29941            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
29942            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
29943            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
29944            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
29945            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
29946            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
29947            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
29948            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
29949            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
29950            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
29951            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
29952            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
29953            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
29954            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
29955            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
29956            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
29957            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
29958            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
29959            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
29960            Self::AtomTemperature => "ATOM_TEMPERATURE",
29961            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
29962            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
29963            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
29964            Self::AtomDiskStats => "ATOM_DISK_STATS",
29965            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
29966            Self::AtomAppSize => "ATOM_APP_SIZE",
29967            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
29968            Self::AtomProcStats => "ATOM_PROC_STATS",
29969            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
29970            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
29971            Self::AtomDiskIo => "ATOM_DISK_IO",
29972            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
29973            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
29974            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
29975            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
29976            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
29977            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
29978            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
29979            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
29980            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
29981            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
29982            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
29983            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
29984            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
29985            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
29986            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
29987            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
29988            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
29989            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
29990            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
29991            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
29992            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
29993            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
29994            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
29995            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
29996            Self::AtomAppOps => "ATOM_APP_OPS",
29997            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
29998            Self::AtomSurfaceflingerStatsGlobalInfo => {
29999                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
30000            }
30001            Self::AtomSurfaceflingerStatsLayerInfo => {
30002                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
30003            }
30004            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
30005            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
30006            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
30007            Self::AtomDangerousPermissionStateSampled => {
30008                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
30009            }
30010            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
30011            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
30012            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
30013            Self::AtomPackageNotificationPreferences => {
30014                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
30015            }
30016            Self::AtomPackageNotificationChannelPreferences => {
30017                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
30018            }
30019            Self::AtomPackageNotificationChannelGroupPreferences => {
30020                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
30021            }
30022            Self::AtomGnssStats => "ATOM_GNSS_STATS",
30023            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
30024            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
30025            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
30026            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
30027            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
30028            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
30029            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
30030            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
30031            Self::AtomBytesTransferByTagAndMetered => {
30032                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
30033            }
30034            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
30035            Self::AtomGeneralExternalStorageAccessStats => {
30036                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
30037            }
30038            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
30039            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
30040            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
30041            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
30042            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
30043            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
30044            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
30045            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
30046            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
30047            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
30048            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
30049            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
30050            Self::AtomCpuCyclesPerThreadGroupCluster => {
30051                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
30052            }
30053            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
30054            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
30055            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
30056            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
30057            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
30058            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
30059            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
30060            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
30061            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
30062            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
30063            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
30064            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
30065            Self::AtomBatteryUsageStatsBeforeReset => {
30066                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
30067            }
30068            Self::AtomBatteryUsageStatsSinceReset => {
30069                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
30070            }
30071            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
30072                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
30073            }
30074            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
30075            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
30076            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
30077            Self::AtomVmstat => "ATOM_VMSTAT",
30078            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
30079                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
30080            }
30081            Self::AtomKeystore2KeyCreationWithAuthInfo => {
30082                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
30083            }
30084            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
30085                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
30086            }
30087            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
30088            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
30089                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
30090            }
30091            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
30092                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
30093            }
30094            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
30095            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
30096            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
30097            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
30098            Self::AtomAccessibilityFloatingMenuStats => {
30099                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
30100            }
30101            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
30102            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
30103            Self::AtomCarWatchdogSystemIoUsageSummary => {
30104                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
30105            }
30106            Self::AtomCarWatchdogUidIoUsageSummary => {
30107                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
30108            }
30109            Self::AtomImsRegistrationFeatureTagStats => {
30110                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
30111            }
30112            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
30113            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
30114            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
30115            Self::AtomSipTransportFeatureTagStats => {
30116                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
30117            }
30118            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
30119            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
30120            Self::AtomImsDedicatedBearerListenerEvent => {
30121                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
30122            }
30123            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
30124            Self::AtomImsRegistrationServiceDescStats => {
30125                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
30126            }
30127            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
30128            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
30129            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
30130            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
30131            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
30132            Self::AtomPersistentUriPermissionsAmountPerPackage => {
30133                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
30134            }
30135            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
30136            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
30137            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
30138            Self::AtomUserInfo => "ATOM_USER_INFO",
30139            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
30140            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
30141            Self::AtomRemoteKeyProvisioningErrorCounts => {
30142                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
30143            }
30144            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
30145            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
30146            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
30147            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
30148            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
30149            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
30150            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
30151            Self::AtomNetworkSelectionRematchReasonsInfo => {
30152                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
30153            }
30154            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
30155            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
30156            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
30157            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
30158            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
30159            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
30160                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
30161            }
30162            Self::AtomProcessState => "ATOM_PROCESS_STATE",
30163            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
30164            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
30165            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
30166            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
30167            Self::AtomWsFavouriteWatchFaceListSnapshot => {
30168                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
30169            }
30170            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
30171            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
30172            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
30173            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
30174            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
30175            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
30176            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
30177            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
30178            Self::AtomWifiAwareResourceUsingChanged => {
30179                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
30180            }
30181            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
30182            Self::AtomWifiLocalOnlyRequestReceived => {
30183                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
30184            }
30185            Self::AtomWifiLocalOnlyRequestScanTriggered => {
30186                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
30187            }
30188            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
30189            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
30190            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
30191            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
30192            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
30193            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
30194            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
30195            Self::AtomScorerPredictionResultReported => {
30196                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
30197            }
30198            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
30199            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
30200            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
30201            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
30202            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
30203            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
30204            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
30205            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
30206            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
30207            Self::AtomWsIncomingCallActionReported => {
30208                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
30209            }
30210            Self::AtomWsCallDisconnectionReported => {
30211                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
30212            }
30213            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
30214            Self::AtomWsCallUserExperienceLatencyReported => {
30215                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
30216            }
30217            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
30218            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
30219            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
30220                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
30221            }
30222            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
30223                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
30224            }
30225            Self::AtomWsComplicationsImpactedNotificationEventReported => {
30226                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
30227            }
30228            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
30229            Self::AtomWsNotificationManagedDismissalSync => {
30230                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
30231            }
30232            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
30233            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
30234            Self::AtomWsFavoriteWatchFaceSnapshot => {
30235                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
30236            }
30237            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
30238                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
30239            }
30240            Self::AtomWsWatchFaceCustomizationSnapshot => {
30241                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
30242            }
30243            Self::AtomWearAdaptiveSuspendStatsReported => {
30244                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
30245            }
30246            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
30247                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
30248            }
30249            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
30250                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
30251            }
30252            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
30253            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
30254            Self::AtomWearTimeSyncAttemptCompleted => {
30255                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
30256            }
30257            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
30258            Self::AtomWearSetupWizardDeviceStatusReported => {
30259                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
30260            }
30261            Self::AtomWearSetupWizardPairingCompleted => {
30262                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
30263            }
30264            Self::AtomWearSetupWizardConnectionEstablished => {
30265                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
30266            }
30267            Self::AtomWearSetupWizardCheckinCompleted => {
30268                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
30269            }
30270            Self::AtomWearSetupWizardCompanionTimeReported => {
30271                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
30272            }
30273            Self::AtomWearSetupWizardStatusReported => {
30274                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
30275            }
30276            Self::AtomWearSetupWizardHeartbeatReported => {
30277                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
30278            }
30279            Self::AtomWearSetupWizardFrpTriggered => {
30280                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
30281            }
30282            Self::AtomWearSetupWizardSystemUpdateTriggered => {
30283                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
30284            }
30285            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
30286                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
30287            }
30288            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
30289            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
30290            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
30291            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
30292            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
30293            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
30294            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
30295            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
30296            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
30297            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
30298            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
30299            Self::AtomIgnoredInflationFailuresReported => {
30300                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
30301            }
30302            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
30303            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
30304            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
30305            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
30306            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
30307            Self::AtomMediaControlApiUsageReported => {
30308                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
30309            }
30310            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
30311            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
30312                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
30313            }
30314            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
30315                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
30316            }
30317            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
30318                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
30319            }
30320            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
30321            Self::AtomSysproxyBluetoothBytesTransfer => {
30322                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
30323            }
30324            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
30325            Self::AtomWearCompanionConnectionState => {
30326                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
30327            }
30328            Self::AtomSysproxyServiceStateUpdated => {
30329                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
30330            }
30331            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
30332            Self::AtomTestUprobestatsAtomReported => {
30333                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
30334            }
30335            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
30336            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
30337            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
30338            Self::AtomThreadnetworkTelemetryDataReported => {
30339                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
30340            }
30341            Self::AtomThreadnetworkTopoEntryRepeated => {
30342                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
30343            }
30344            Self::AtomThreadnetworkDeviceInfoReported => {
30345                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
30346            }
30347            Self::AtomCellularRadioPowerStateChanged => {
30348                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
30349            }
30350            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
30351            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
30352            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
30353            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
30354            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
30355            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
30356            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
30357            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
30358            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
30359            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
30360            Self::AtomSatelliteSosMessageRecommender => {
30361                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
30362            }
30363            Self::AtomCarrierRoamingSatelliteSession => {
30364                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
30365            }
30366            Self::AtomCarrierRoamingSatelliteControllerStats => {
30367                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
30368            }
30369            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
30370            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
30371            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
30372            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
30373            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
30374            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
30375            Self::AtomQnsFallbackRestrictionChanged => {
30376                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
30377            }
30378            Self::AtomQnsRatPreferenceMismatchInfo => {
30379                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
30380            }
30381            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
30382            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
30383            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
30384                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
30385            }
30386            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
30387            Self::AtomCallStats => "ATOM_CALL_STATS",
30388            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
30389            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
30390            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
30391            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
30392            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
30393            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
30394            Self::AtomDisplaySwitchLatencyTracked => {
30395                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
30396            }
30397            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
30398            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
30399            Self::AtomCommunalHubWidgetEventReported => {
30400                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
30401            }
30402            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
30403            Self::AtomContextualEducationTriggered => {
30404                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
30405            }
30406            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
30407            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
30408            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
30409            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
30410            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
30411            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
30412            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
30413            Self::AtomSandboxActivityEventOccurred => {
30414                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
30415            }
30416            Self::AtomSdkSandboxRestrictedAccessInSession => {
30417                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
30418            }
30419            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
30420            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
30421            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
30422            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
30423            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
30424            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
30425            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
30426            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
30427            Self::AtomMediaProviderDatabaseRollbackReported => {
30428                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
30429            }
30430            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
30431            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
30432            Self::AtomScreenTimeoutOverrideReported => {
30433                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
30434            }
30435            Self::AtomScreenInteractiveSessionReported => {
30436                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
30437            }
30438            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
30439            Self::AtomAtom9999 => "ATOM_ATOM_9999",
30440            Self::AtomAtom99999 => "ATOM_ATOM_99999",
30441            Self::AtomPhotopickerSessionInfoReported => {
30442                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
30443            }
30444            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
30445            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
30446            Self::AtomPhotopickerMediaItemStatusReported => {
30447                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
30448            }
30449            Self::AtomPhotopickerPreviewInfoLogged => {
30450                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
30451            }
30452            Self::AtomPhotopickerMenuInteractionLogged => {
30453                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
30454            }
30455            Self::AtomPhotopickerBannerInteractionLogged => {
30456                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
30457            }
30458            Self::AtomPhotopickerMediaLibraryInfoLogged => {
30459                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
30460            }
30461            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
30462            Self::AtomPhotopickerMediaGridSyncInfoReported => {
30463                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
30464            }
30465            Self::AtomPhotopickerAlbumSyncInfoReported => {
30466                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
30467            }
30468            Self::AtomPhotopickerSearchInfoReported => {
30469                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
30470            }
30471            Self::AtomSearchDataExtractionDetailsReported => {
30472                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
30473            }
30474            Self::AtomEmbeddedPhotopickerInfoReported => {
30475                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
30476            }
30477            Self::AtomPermissionRationaleDialogViewed => {
30478                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
30479            }
30480            Self::AtomPermissionRationaleDialogActionReported => {
30481                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
30482            }
30483            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
30484                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
30485            }
30486            Self::AtomAppDataSharingUpdatesFragmentViewed => {
30487                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
30488            }
30489            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
30490                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
30491            }
30492            Self::AtomEnhancedConfirmationDialogResultReported => {
30493                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
30494            }
30495            Self::AtomEnhancedConfirmationRestrictionCleared => {
30496                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
30497            }
30498            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
30499            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
30500            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
30501            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
30502            Self::AtomComponentStateChangedReported => {
30503                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
30504            }
30505            Self::AtomOndevicepersonalizationApiCalled => {
30506                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
30507            }
30508            Self::AtomOndevicepersonalizationTraceEvent => {
30509                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
30510            }
30511            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
30512            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
30513            Self::AtomNfcPollingLoopNotificationReported => {
30514                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
30515            }
30516            Self::AtomNfcProprietaryCapabilitiesReported => {
30517                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
30518            }
30519            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
30520            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
30521            Self::AtomMicroxrDeviceBootCompleteReported => {
30522                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
30523            }
30524            Self::AtomMteState => "ATOM_MTE_STATE",
30525            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
30526            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
30527            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
30528            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
30529            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
30530            Self::AtomMediaCodecReclaimRequestCompleted => {
30531                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
30532            }
30533            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
30534            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
30535            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
30536            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
30537            Self::AtomChreSignificantMotionStateChanged => {
30538                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
30539            }
30540            Self::AtomPopulationDensityProviderLoadingReported => {
30541                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
30542            }
30543            Self::AtomDensityBasedCoarseLocationsUsageReported => {
30544                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
30545            }
30546            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
30547                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
30548            }
30549            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
30550            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
30551            Self::AtomKeyboardSystemsEventReported => {
30552                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
30553            }
30554            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
30555            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
30556            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
30557            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
30558            Self::AtomIkeLivenessCheckSessionValidated => {
30559                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
30560            }
30561            Self::AtomNegotiatedSecurityAssociation => {
30562                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
30563            }
30564            Self::AtomHotwordEgressSizeAtomReported => {
30565                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
30566            }
30567            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
30568            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
30569            Self::AtomHealthConnectAppOpenedReported => {
30570                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
30571            }
30572            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
30573            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
30574            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
30575            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
30576            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
30577            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
30578            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
30579            Self::AtomHealthConnectExportImportStatsReported => {
30580                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
30581            }
30582            Self::AtomHealthConnectPermissionStats => {
30583                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
30584            }
30585            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
30586            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
30587            Self::AtomHealthConnectPhrStorageStats => {
30588                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
30589            }
30590            Self::AtomHealthConnectRestrictedEcosystemStats => {
30591                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
30592            }
30593            Self::AtomHealthConnectEcosystemStats => {
30594                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
30595            }
30596            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
30597            Self::AtomHdmiSoundbarModeStatusReported => {
30598                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
30599            }
30600            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
30601                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
30602            }
30603            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
30604            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
30605            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
30606            Self::AtomApplicationGrammaticalInflectionChanged => {
30607                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
30608            }
30609            Self::AtomSystemGrammaticalInflectionChanged => {
30610                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
30611            }
30612            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
30613            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
30614            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
30615            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
30616            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
30617            Self::AtomStylusPredictionMetricsReported => {
30618                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
30619            }
30620            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
30621            Self::AtomMediaProjectionStateChanged => {
30622                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
30623            }
30624            Self::AtomMediaProjectionTargetChanged => {
30625                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
30626            }
30627            Self::AtomExcessiveBinderProxyCountReported => {
30628                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
30629            }
30630            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
30631            Self::AtomMobileBytesTransferByProcState => {
30632                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
30633            }
30634            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
30635            Self::AtomSensitiveContentMediaProjectionSession => {
30636                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
30637            }
30638            Self::AtomSensitiveNotificationAppProtectionSession => {
30639                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
30640            }
30641            Self::AtomSensitiveNotificationAppProtectionApplied => {
30642                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
30643            }
30644            Self::AtomSensitiveNotificationRedaction => {
30645                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
30646            }
30647            Self::AtomSensitiveContentAppProtection => {
30648                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
30649            }
30650            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
30651            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
30652            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
30653            Self::AtomPowerSaveTempAllowlistChanged => {
30654                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
30655            }
30656            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
30657            Self::AtomContentOrFileUriEventReported => {
30658                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
30659            }
30660            Self::AtomDeviceIdleTempAllowlistUpdated => {
30661                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
30662            }
30663            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
30664                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
30665            }
30666            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
30667            Self::AtomJankFrameCountByWidgetReported => {
30668                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
30669            }
30670            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
30671            Self::AtomNotificationChannelClassification => {
30672                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
30673            }
30674            Self::AtomCameraStatusForCompatibilityChanged => {
30675                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
30676            }
30677            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
30678            Self::AtomFederatedComputeTrainingEventReported => {
30679                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
30680            }
30681            Self::AtomExampleIteratorNextLatencyReported => {
30682                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
30683            }
30684            Self::AtomFederatedComputeTraceEventReported => {
30685                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
30686            }
30687            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
30688            Self::AtomExpressHistogramSampleReported => {
30689                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
30690            }
30691            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
30692            Self::AtomExpressUidHistogramSampleReported => {
30693                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
30694            }
30695            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
30696            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
30697            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
30698            Self::AtomExternalDisplayStateChanged => {
30699                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
30700            }
30701            Self::AtomDisplayModeDirectorVoteChanged => {
30702                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
30703            }
30704            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
30705            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
30706            Self::AtomDeviceLockCheckInRequestReported => {
30707                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
30708            }
30709            Self::AtomDeviceLockProvisioningCompleteReported => {
30710                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
30711            }
30712            Self::AtomDeviceLockKioskAppRequestReported => {
30713                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
30714            }
30715            Self::AtomDeviceLockCheckInRetryReported => {
30716                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
30717            }
30718            Self::AtomDeviceLockProvisionFailureReported => {
30719                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
30720            }
30721            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
30722                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
30723            }
30724            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
30725            Self::AtomDesktopModeSessionTaskUpdate => {
30726                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
30727            }
30728            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
30729            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
30730            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
30731            Self::AtomCronetEngineBuilderInitialized => {
30732                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
30733            }
30734            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
30735            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
30736            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
30737            Self::AtomCredentialManagerInitPhaseReported => {
30738                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
30739            }
30740            Self::AtomCredentialManagerCandidatePhaseReported => {
30741                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
30742            }
30743            Self::AtomCredentialManagerFinalPhaseReported => {
30744                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
30745            }
30746            Self::AtomCredentialManagerTotalReported => {
30747                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
30748            }
30749            Self::AtomCredentialManagerFinalnouidReported => {
30750                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
30751            }
30752            Self::AtomCredentialManagerGetReported => {
30753                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
30754            }
30755            Self::AtomCredentialManagerAuthClickReported => {
30756                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
30757            }
30758            Self::AtomCredentialManagerApiv2Called => {
30759                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
30760            }
30761            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
30762            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
30763            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
30764            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
30765            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
30766            Self::AtomCoreNetworkingTerribleErrorOccurred => {
30767                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
30768            }
30769            Self::AtomNetworkStatsRecorderFileOperated => {
30770                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
30771            }
30772            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
30773            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
30774            Self::AtomTetheringActiveSessionsReported => {
30775                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
30776            }
30777            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
30778                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
30779            }
30780            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
30781            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
30782            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
30783            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
30784            Self::AtomCertificateTransparencyLogListStateChanged => {
30785                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
30786            }
30787            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
30788            Self::AtomCertificateTransparencyVerificationReported => {
30789                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
30790            }
30791            Self::AtomCameraFeatureCombinationQueryEvent => {
30792                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
30793            }
30794            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
30795            Self::AtomBluetoothHashedDeviceNameReported => {
30796                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
30797            }
30798            Self::AtomBluetoothL2capCocClientConnection => {
30799                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
30800            }
30801            Self::AtomBluetoothL2capCocServerConnection => {
30802                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
30803            }
30804            Self::AtomBluetoothLeSessionConnected => {
30805                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
30806            }
30807            Self::AtomRestrictedBluetoothDeviceNameReported => {
30808                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
30809            }
30810            Self::AtomBluetoothProfileConnectionAttempted => {
30811                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
30812            }
30813            Self::AtomBluetoothContentProfileErrorReported => {
30814                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
30815            }
30816            Self::AtomBluetoothRfcommConnectionAttempted => {
30817                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
30818            }
30819            Self::AtomRemoteDeviceInformationWithMetricId => {
30820                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
30821            }
30822            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
30823            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
30824            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
30825            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
30826            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
30827            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
30828            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
30829            Self::AtomBluetoothCrossLayerEventReported => {
30830                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
30831            }
30832            Self::AtomBroadcastAudioSessionReported => {
30833                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
30834            }
30835            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
30836            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
30837                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
30838            }
30839            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
30840            Self::AtomHearingDeviceActiveEventReported => {
30841                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
30842            }
30843            Self::AtomBackportedFixStatusReported => {
30844                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
30845            }
30846            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
30847            Self::AtomCarSystemUiDataSubscriptionEventReported => {
30848                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
30849            }
30850            Self::AtomCarSettingsDataSubscriptionEventReported => {
30851                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
30852            }
30853            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
30854            Self::AtomCarWakeupFromSuspendReported => {
30855                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
30856            }
30857            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
30858            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
30859            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
30860            Self::AtomAutofillFillRequestReported => {
30861                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
30862            }
30863            Self::AtomAutofillFillResponseReported => {
30864                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
30865            }
30866            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
30867            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
30868            Self::AtomAutofillFieldClassificationEventReported => {
30869                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
30870            }
30871            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
30872            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
30873            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
30874            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
30875            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
30876            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
30877            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
30878            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
30879            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
30880            Self::AtomAppSearchSetSchemaStatsReported => {
30881                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
30882            }
30883            Self::AtomAppSearchSchemaMigrationStatsReported => {
30884                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
30885            }
30886            Self::AtomAppSearchUsageSearchIntentStatsReported => {
30887                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
30888            }
30889            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
30890                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
30891            }
30892            Self::AtomAppSearchAppsIndexerStatsReported => {
30893                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
30894            }
30895            Self::AtomAppFunctionsRequestReported => {
30896                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
30897            }
30898            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
30899            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
30900            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
30901            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
30902            Self::AtomAiWallpapersTemplateSelected => {
30903                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
30904            }
30905            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
30906            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
30907            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
30908            Self::AtomJsscriptengineLatencyReported => {
30909                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
30910            }
30911            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
30912            Self::AtomAdServicesMesurementReportsUploaded => {
30913                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
30914            }
30915            Self::AtomMobileDataDownloadFileGroupStatusReported => {
30916                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
30917            }
30918            Self::AtomMobileDataDownloadDownloadResultReported => {
30919                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
30920            }
30921            Self::AtomAdServicesSettingsUsageReported => {
30922                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
30923            }
30924            Self::AtomBackgroundFetchProcessReported => {
30925                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
30926            }
30927            Self::AtomUpdateCustomAudienceProcessReported => {
30928                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
30929            }
30930            Self::AtomRunAdBiddingProcessReported => {
30931                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
30932            }
30933            Self::AtomRunAdScoringProcessReported => {
30934                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
30935            }
30936            Self::AtomRunAdSelectionProcessReported => {
30937                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
30938            }
30939            Self::AtomRunAdBiddingPerCaProcessReported => {
30940                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
30941            }
30942            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
30943                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
30944            }
30945            Self::AtomAdServicesMeasurementRegistrations => {
30946                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
30947            }
30948            Self::AtomAdServicesGetTopicsReported => {
30949                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
30950            }
30951            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
30952                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
30953            }
30954            Self::AtomAdServicesEpochComputationClassifierReported => {
30955                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
30956            }
30957            Self::AtomAdServicesBackCompatGetTopicsReported => {
30958                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
30959            }
30960            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
30961                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
30962            }
30963            Self::AtomAdServicesMeasurementDebugKeys => {
30964                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
30965            }
30966            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
30967            Self::AtomAdServicesBackgroundJobsExecutionReported => {
30968                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
30969            }
30970            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
30971                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
30972            }
30973            Self::AtomAdServicesMeasurementAttribution => {
30974                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
30975            }
30976            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
30977            Self::AtomAdServicesMeasurementWipeout => {
30978                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
30979            }
30980            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
30981                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
30982            }
30983            Self::AtomAdServicesEnrollmentDataStored => {
30984                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
30985            }
30986            Self::AtomAdServicesEnrollmentFileDownloaded => {
30987                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
30988            }
30989            Self::AtomAdServicesEnrollmentMatched => {
30990                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
30991            }
30992            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
30993            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
30994            Self::AtomAdServicesMeasurementClickVerification => {
30995                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
30996            }
30997            Self::AtomAdServicesEncryptionKeyFetched => {
30998                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
30999            }
31000            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
31001                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
31002            }
31003            Self::AtomDestinationRegisteredBeacons => {
31004                "ATOM_DESTINATION_REGISTERED_BEACONS"
31005            }
31006            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
31007            Self::AtomInteractionReportingTableCleared => {
31008                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
31009            }
31010            Self::AtomAppManifestConfigHelperCalled => {
31011                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
31012            }
31013            Self::AtomAdFilteringProcessJoinCaReported => {
31014                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
31015            }
31016            Self::AtomAdFilteringProcessAdSelectionReported => {
31017                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
31018            }
31019            Self::AtomAdCounterHistogramUpdaterReported => {
31020                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
31021            }
31022            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
31023            Self::AtomKAnonImmediateSignJoinStatusReported => {
31024                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
31025            }
31026            Self::AtomKAnonBackgroundJobStatusReported => {
31027                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
31028            }
31029            Self::AtomKAnonInitializeStatusReported => {
31030                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
31031            }
31032            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
31033            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
31034            Self::AtomKAnonKeyAttestationStatusReported => {
31035                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
31036            }
31037            Self::AtomGetAdSelectionDataApiCalled => {
31038                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
31039            }
31040            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
31041                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
31042            }
31043            Self::AtomBackgroundJobSchedulingReported => {
31044                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
31045            }
31046            Self::AtomTopicsEncryptionEpochComputationReported => {
31047                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
31048            }
31049            Self::AtomTopicsEncryptionGetTopicsReported => {
31050                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
31051            }
31052            Self::AtomAdservicesShellCommandCalled => {
31053                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
31054            }
31055            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
31056            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
31057            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
31058            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
31059            Self::AtomPersistAdSelectionResultCalled => {
31060                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
31061            }
31062            Self::AtomServerAuctionKeyFetchCalled => {
31063                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
31064            }
31065            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
31066                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
31067            }
31068            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
31069                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
31070            }
31071            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
31072                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
31073            }
31074            Self::AtomSelectAdsFromOutcomesApiCalled => {
31075                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
31076            }
31077            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
31078            Self::AtomAdServicesEnrollmentTransactionStats => {
31079                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
31080            }
31081            Self::AtomAdServicesCobaltLoggerEventReported => {
31082                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
31083            }
31084            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
31085                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
31086            }
31087            Self::AtomUpdateSignalsProcessReported => {
31088                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
31089            }
31090            Self::AtomTopicsScheduleEpochJobSettingReported => {
31091                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
31092            }
31093            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
31094                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
31095            }
31096            Self::AtomScheduledCustomAudienceUpdatePerformed => {
31097                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
31098            }
31099            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
31100                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
31101            }
31102            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
31103                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
31104            }
31105            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
31106            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
31107            Self::AtomThermalHeadroomThresholdsCalled => {
31108                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
31109            }
31110            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
31111            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
31112            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
31113            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
31114                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
31115            }
31116            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
31117            Self::AtomAccessibilityCheckResultReported => {
31118                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
31119            }
31120        }
31121    }
31122    /// Creates an enum from field names used in the ProtoBuf definition.
31123    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
31124        match value {
31125            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
31126            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
31127            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
31128            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
31129            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
31130            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
31131            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
31132            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
31133                Some(Self::AtomScheduledJobStateChanged)
31134            }
31135            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
31136            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
31137            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
31138                Some(Self::AtomLongPartialWakelockStateChanged)
31139            }
31140            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
31141                Some(Self::AtomMobileRadioPowerStateChanged)
31142            }
31143            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
31144                Some(Self::AtomWifiRadioPowerStateChanged)
31145            }
31146            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
31147                Some(Self::AtomActivityManagerSleepStateChanged)
31148            }
31149            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
31150                Some(Self::AtomMemoryFactorStateChanged)
31151            }
31152            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
31153                Some(Self::AtomExcessiveCpuUsageReported)
31154            }
31155            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
31156            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
31157                Some(Self::AtomProcessMemoryStatReported)
31158            }
31159            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
31160            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
31161                Some(Self::AtomBatterySaverModeStateChanged)
31162            }
31163            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
31164                Some(Self::AtomDeviceIdleModeStateChanged)
31165            }
31166            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
31167                Some(Self::AtomDeviceIdlingModeStateChanged)
31168            }
31169            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
31170            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
31171            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
31172            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
31173            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
31174            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
31175                Some(Self::AtomProcessLifeCycleStateChanged)
31176            }
31177            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
31178            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
31179            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
31180            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
31181            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
31182            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
31183            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
31184            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
31185            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
31186            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
31187                Some(Self::AtomWifiSignalStrengthChanged)
31188            }
31189            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
31190            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
31191                Some(Self::AtomPhoneSignalStrengthChanged)
31192            }
31193            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
31194            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
31195                Some(Self::AtomActivityForegroundStateChanged)
31196            }
31197            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
31198            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
31199            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
31200            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
31201            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
31202            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
31203            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
31204            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
31205            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
31206            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
31207                Some(Self::AtomPictureInPictureStateChanged)
31208            }
31209            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
31210                Some(Self::AtomWifiMulticastLockStateChanged)
31211            }
31212            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
31213                Some(Self::AtomAppStartMemoryStateCaptured)
31214            }
31215            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
31216            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
31217            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
31218            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
31219                Some(Self::AtomForegroundServiceStateChanged)
31220            }
31221            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
31222            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
31223            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
31224                Some(Self::AtomKeyguardBouncerStateChanged)
31225            }
31226            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
31227                Some(Self::AtomKeyguardBouncerPasswordEntered)
31228            }
31229            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
31230            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
31231                Some(Self::AtomResourceConfigurationChanged)
31232            }
31233            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
31234                Some(Self::AtomBluetoothEnabledStateChanged)
31235            }
31236            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
31237                Some(Self::AtomBluetoothConnectionStateChanged)
31238            }
31239            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
31240            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
31241                Some(Self::AtomUsbConnectorStateChanged)
31242            }
31243            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
31244            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
31245            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
31246            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
31247            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
31248                Some(Self::AtomMobileConnectionStateChanged)
31249            }
31250            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
31251                Some(Self::AtomMobileRadioTechnologyChanged)
31252            }
31253            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
31254            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
31255            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
31256            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
31257            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
31258            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
31259            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
31260            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
31261                Some(Self::AtomDeferredJobStatsReported)
31262            }
31263            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
31264            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
31265            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
31266            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
31267            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
31268            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
31269            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
31270            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
31271            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
31272                Some(Self::AtomPhoneServiceStateChanged)
31273            }
31274            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
31275            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
31276            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
31277            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
31278            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
31279            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
31280            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
31281            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
31282            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
31283            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
31284            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
31285                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
31286            }
31287            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
31288            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
31289            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
31290                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
31291            }
31292            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
31293            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
31294            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
31295            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
31296                Some(Self::AtomDocsUiUserActionReported)
31297            }
31298            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
31299            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
31300            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
31301            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
31302            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
31303                Some(Self::AtomDocsUiPickerLaunchedFromReported)
31304            }
31305            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
31306                Some(Self::AtomDocsUiPickResultReported)
31307            }
31308            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
31309                Some(Self::AtomDocsUiSearchModeReported)
31310            }
31311            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
31312                Some(Self::AtomDocsUiSearchTypeReported)
31313            }
31314            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
31315            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
31316                Some(Self::AtomRescuePartyResetReported)
31317            }
31318            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
31319            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
31320            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
31321                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
31322            }
31323            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
31324                Some(Self::AtomBluetoothAclConnectionStateChanged)
31325            }
31326            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
31327                Some(Self::AtomBluetoothScoConnectionStateChanged)
31328            }
31329            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
31330            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
31331                Some(Self::AtomAppOptimizedAfterDowngraded)
31332            }
31333            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
31334            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
31335                Some(Self::AtomGnssNfwNotificationReported)
31336            }
31337            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
31338                Some(Self::AtomGnssConfigurationReported)
31339            }
31340            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
31341                Some(Self::AtomUsbPortOverheatEventReported)
31342            }
31343            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
31344            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
31345            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
31346            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
31347            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
31348            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
31349                Some(Self::AtomNfcHceTransactionOccurred)
31350            }
31351            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
31352            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
31353            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
31354                Some(Self::AtomBroadcastDispatchLatencyReported)
31355            }
31356            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
31357                Some(Self::AtomAttentionManagerServiceResultReported)
31358            }
31359            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
31360            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
31361            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
31362            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
31363            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
31364                Some(Self::AtomBiometricSystemHealthIssueDetected)
31365            }
31366            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
31367            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
31368                Some(Self::AtomScheduledJobConstraintChanged)
31369            }
31370            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
31371                Some(Self::AtomBluetoothActiveDeviceChanged)
31372            }
31373            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
31374                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
31375            }
31376            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
31377                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
31378            }
31379            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
31380                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
31381            }
31382            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
31383                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
31384            }
31385            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
31386                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
31387            }
31388            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
31389                Some(Self::AtomBluetoothDeviceRssiReported)
31390            }
31391            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
31392                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
31393            }
31394            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
31395                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
31396            }
31397            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
31398                Some(Self::AtomBluetoothHciTimeoutReported)
31399            }
31400            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
31401                Some(Self::AtomBluetoothQualityReportReported)
31402            }
31403            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
31404                Some(Self::AtomBluetoothDeviceInfoReported)
31405            }
31406            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
31407                Some(Self::AtomBluetoothRemoteVersionInfoReported)
31408            }
31409            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
31410                Some(Self::AtomBluetoothSdpAttributeReported)
31411            }
31412            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
31413                Some(Self::AtomBluetoothBondStateChanged)
31414            }
31415            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
31416                Some(Self::AtomBluetoothClassicPairingEventReported)
31417            }
31418            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
31419                Some(Self::AtomBluetoothSmpPairingEventReported)
31420            }
31421            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
31422                Some(Self::AtomScreenTimeoutExtensionReported)
31423            }
31424            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
31425            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
31426                Some(Self::AtomPermissionGrantRequestResultReported)
31427            }
31428            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
31429                Some(Self::AtomBluetoothSocketConnectionStateChanged)
31430            }
31431            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
31432                Some(Self::AtomDeviceIdentifierAccessDenied)
31433            }
31434            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
31435                Some(Self::AtomBubbleDeveloperErrorReported)
31436            }
31437            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
31438                Some(Self::AtomAssistGestureStageReported)
31439            }
31440            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
31441                Some(Self::AtomAssistGestureFeedbackReported)
31442            }
31443            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
31444                Some(Self::AtomAssistGestureProgressReported)
31445            }
31446            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
31447            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
31448            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
31449            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
31450                Some(Self::AtomPrivacyIndicatorsInteracted)
31451            }
31452            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
31453                Some(Self::AtomAppInstallOnExternalStorageReported)
31454            }
31455            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
31456            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
31457            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
31458            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
31459                Some(Self::AtomSystemServerWatchdogOccurred)
31460            }
31461            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
31462            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
31463                Some(Self::AtomBluetoothClassOfDeviceReported)
31464            }
31465            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
31466                Some(Self::AtomIntelligenceEventReported)
31467            }
31468            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
31469                Some(Self::AtomThermalThrottlingSeverityStateChanged)
31470            }
31471            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
31472                Some(Self::AtomRoleRequestResultReported)
31473            }
31474            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
31475                Some(Self::AtomMediametricsAudiopolicyReported)
31476            }
31477            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
31478                Some(Self::AtomMediametricsAudiorecordReported)
31479            }
31480            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
31481                Some(Self::AtomMediametricsAudiothreadReported)
31482            }
31483            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
31484                Some(Self::AtomMediametricsAudiotrackReported)
31485            }
31486            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
31487                Some(Self::AtomMediametricsCodecReported)
31488            }
31489            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
31490                Some(Self::AtomMediametricsDrmWidevineReported)
31491            }
31492            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
31493                Some(Self::AtomMediametricsExtractorReported)
31494            }
31495            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
31496                Some(Self::AtomMediametricsMediadrmReported)
31497            }
31498            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
31499                Some(Self::AtomMediametricsNuplayerReported)
31500            }
31501            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
31502                Some(Self::AtomMediametricsRecorderReported)
31503            }
31504            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
31505                Some(Self::AtomMediametricsDrmmanagerReported)
31506            }
31507            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
31508            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
31509            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
31510            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
31511                Some(Self::AtomContentCaptureCallerMismatchReported)
31512            }
31513            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
31514                Some(Self::AtomContentCaptureServiceEvents)
31515            }
31516            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
31517                Some(Self::AtomContentCaptureSessionEvents)
31518            }
31519            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
31520            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
31521                Some(Self::AtomLocationManagerApiUsageReported)
31522            }
31523            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
31524                Some(Self::AtomReviewPermissionsFragmentResultReported)
31525            }
31526            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
31527                Some(Self::AtomRuntimePermissionsUpgradeResult)
31528            }
31529            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
31530                Some(Self::AtomGrantPermissionsActivityButtonActions)
31531            }
31532            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
31533                Some(Self::AtomLocationAccessCheckNotificationAction)
31534            }
31535            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
31536                Some(Self::AtomAppPermissionFragmentActionReported)
31537            }
31538            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
31539                Some(Self::AtomAppPermissionFragmentViewed)
31540            }
31541            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
31542                Some(Self::AtomAppPermissionsFragmentViewed)
31543            }
31544            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
31545                Some(Self::AtomPermissionAppsFragmentViewed)
31546            }
31547            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
31548            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
31549            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
31550            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
31551            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
31552                Some(Self::AtomExclusionRectStateChanged)
31553            }
31554            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
31555                Some(Self::AtomBackGestureReportedReported)
31556            }
31557            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
31558                Some(Self::AtomUpdateEngineUpdateAttemptReported)
31559            }
31560            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
31561                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
31562            }
31563            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
31564            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
31565                Some(Self::AtomAppCompatibilityChangeReported)
31566            }
31567            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
31568            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
31569                Some(Self::AtomVmsClientConnectionStateChanged)
31570            }
31571            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
31572                Some(Self::AtomMediaProviderScanOccurred)
31573            }
31574            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
31575            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
31576                Some(Self::AtomMediaProviderPermissionRequested)
31577            }
31578            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
31579                Some(Self::AtomMediaProviderSchemaChanged)
31580            }
31581            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
31582                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
31583            }
31584            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
31585                Some(Self::AtomRebootEscrowRecoveryReported)
31586            }
31587            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
31588                Some(Self::AtomBootTimeEventDurationReported)
31589            }
31590            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
31591                Some(Self::AtomBootTimeEventElapsedTimeReported)
31592            }
31593            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
31594                Some(Self::AtomBootTimeEventUtcTimeReported)
31595            }
31596            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
31597                Some(Self::AtomBootTimeEventErrorCodeReported)
31598            }
31599            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
31600            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
31601            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
31602                Some(Self::AtomNotificationPanelReported)
31603            }
31604            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
31605                Some(Self::AtomNotificationChannelModified)
31606            }
31607            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
31608                Some(Self::AtomIntegrityCheckResultReported)
31609            }
31610            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
31611            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
31612            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
31613            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
31614            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
31615            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
31616                Some(Self::AtomWifiConnectionResultReported)
31617            }
31618            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
31619            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
31620            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
31621                Some(Self::AtomForegroundServiceAppOpSessionEnded)
31622            }
31623            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
31624            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
31625            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
31626            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
31627            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
31628            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
31629            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
31630                Some(Self::AtomPackageInstallerV2Reported)
31631            }
31632            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
31633                Some(Self::AtomUserLifecycleJourneyReported)
31634            }
31635            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
31636                Some(Self::AtomUserLifecycleEventOccurred)
31637            }
31638            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
31639                Some(Self::AtomAccessibilityShortcutReported)
31640            }
31641            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
31642                Some(Self::AtomAccessibilityServiceReported)
31643            }
31644            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
31645                Some(Self::AtomDocsUiDragAndDropReported)
31646            }
31647            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
31648            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
31649                Some(Self::AtomAutoRevokeNotificationClicked)
31650            }
31651            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
31652                Some(Self::AtomAutoRevokeFragmentAppViewed)
31653            }
31654            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
31655                Some(Self::AtomAutoRevokedAppInteraction)
31656            }
31657            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
31658                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
31659            }
31660            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
31661            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
31662                Some(Self::AtomAudioPowerUsageDataReported)
31663            }
31664            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
31665            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
31666                Some(Self::AtomMediaoutputOpSwitchReported)
31667            }
31668            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
31669            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
31670            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
31671            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
31672                Some(Self::AtomAssistantInvocationReported)
31673            }
31674            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
31675            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
31676                Some(Self::AtomCarUserHalModifyUserRequestReported)
31677            }
31678            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
31679                Some(Self::AtomCarUserHalModifyUserResponseReported)
31680            }
31681            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
31682                Some(Self::AtomCarUserHalPostSwitchResponseReported)
31683            }
31684            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
31685                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
31686            }
31687            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
31688                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
31689            }
31690            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
31691                Some(Self::AtomCarUserHalUserAssociationRequestReported)
31692            }
31693            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
31694                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
31695            }
31696            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
31697                Some(Self::AtomNetworkIpProvisioningReported)
31698            }
31699            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
31700                Some(Self::AtomNetworkDhcpRenewReported)
31701            }
31702            "ATOM_NETWORK_VALIDATION_REPORTED" => {
31703                Some(Self::AtomNetworkValidationReported)
31704            }
31705            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
31706                Some(Self::AtomNetworkStackQuirkReported)
31707            }
31708            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
31709                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
31710            }
31711            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
31712                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
31713            }
31714            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
31715                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
31716            }
31717            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
31718                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
31719            }
31720            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
31721            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
31722            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
31723            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
31724                Some(Self::AtomContactsProviderStatusReported)
31725            }
31726            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
31727                Some(Self::AtomKeystoreKeyEventReported)
31728            }
31729            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
31730            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
31731            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
31732                Some(Self::AtomUiInteractionFrameInfoReported)
31733            }
31734            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
31735            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
31736            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
31737                Some(Self::AtomWifiConnectionStateChanged)
31738            }
31739            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
31740                Some(Self::AtomHdmiCecActiveSourceChanged)
31741            }
31742            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
31743            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
31744            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
31745            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
31746                Some(Self::AtomCarrierIdMismatchReported)
31747            }
31748            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
31749            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
31750                Some(Self::AtomDataStallRecoveryReported)
31751            }
31752            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
31753                Some(Self::AtomMediametricsMediaparserReported)
31754            }
31755            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
31756            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
31757                Some(Self::AtomTextClassifierApiUsageReported)
31758            }
31759            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
31760                Some(Self::AtomCarWatchdogKillStatsReported)
31761            }
31762            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
31763                Some(Self::AtomMediametricsPlaybackReported)
31764            }
31765            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
31766            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
31767                Some(Self::AtomMediaPlaybackStateChanged)
31768            }
31769            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
31770                Some(Self::AtomMediaPlaybackErrorReported)
31771            }
31772            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
31773                Some(Self::AtomMediaPlaybackTrackChanged)
31774            }
31775            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
31776            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
31777            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
31778            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
31779            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
31780            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
31781            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
31782                Some(Self::AtomImsServiceEntitlementUpdated)
31783            }
31784            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
31785            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
31786                Some(Self::AtomSimSpecificSettingsRestored)
31787            }
31788            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
31789                Some(Self::AtomTextClassifierDownloadReported)
31790            }
31791            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
31792            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
31793            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
31794                Some(Self::AtomBluetoothHalCrashReasonReported)
31795            }
31796            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
31797                Some(Self::AtomRebootEscrowPreparationReported)
31798            }
31799            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
31800                Some(Self::AtomRebootEscrowLskfCaptureReported)
31801            }
31802            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
31803                Some(Self::AtomRebootEscrowRebootReported)
31804            }
31805            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
31806            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
31807                Some(Self::AtomMediametricsAaudiostreamReported)
31808            }
31809            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
31810                Some(Self::AtomMediaTranscodingSessionEnded)
31811            }
31812            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
31813                Some(Self::AtomMagnificationUsageReported)
31814            }
31815            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
31816                Some(Self::AtomMagnificationModeWithImeOnReported)
31817            }
31818            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
31819                Some(Self::AtomAppSearchCallStatsReported)
31820            }
31821            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
31822                Some(Self::AtomAppSearchPutDocumentStatsReported)
31823            }
31824            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
31825            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
31826            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
31827            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
31828            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
31829                Some(Self::AtomAuthPromptAuthenticateInvoked)
31830            }
31831            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
31832                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
31833            }
31834            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
31835            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
31836            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
31837            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
31838                Some(Self::AtomLongRebootBlockingReported)
31839            }
31840            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
31841                Some(Self::AtomLocationTimeZoneProviderStateChanged)
31842            }
31843            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
31844            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
31845                Some(Self::AtomTimeoutAutoExtendedReported)
31846            }
31847            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
31848            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
31849            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
31850                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
31851            }
31852            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
31853                Some(Self::AtomUserLevelHibernationStateChanged)
31854            }
31855            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
31856                Some(Self::AtomAppSearchInitializeStatsReported)
31857            }
31858            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
31859                Some(Self::AtomAppSearchQueryStatsReported)
31860            }
31861            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
31862            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
31863                Some(Self::AtomNetworkIpReachabilityMonitorReported)
31864            }
31865            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
31866            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
31867                Some(Self::AtomAnrOccurredProcessingStarted)
31868            }
31869            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
31870                Some(Self::AtomAppSearchRemoveStatsReported)
31871            }
31872            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
31873            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
31874                Some(Self::AtomPermissionUsageFragmentInteraction)
31875            }
31876            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
31877                Some(Self::AtomPermissionDetailsInteraction)
31878            }
31879            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
31880                Some(Self::AtomPrivacySensorToggleInteraction)
31881            }
31882            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
31883                Some(Self::AtomPrivacyToggleDialogInteraction)
31884            }
31885            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
31886                Some(Self::AtomAppSearchOptimizeStatsReported)
31887            }
31888            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
31889                Some(Self::AtomNonA11yToolServiceWarningReport)
31890            }
31891            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
31892            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
31893                Some(Self::AtomSizeCompatRestartButtonEventReported)
31894            }
31895            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
31896            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
31897                Some(Self::AtomNetworkDnsHandshakeReported)
31898            }
31899            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
31900                Some(Self::AtomBluetoothCodePathCounter)
31901            }
31902            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
31903                Some(Self::AtomBluetoothLeBatchScanReportDelay)
31904            }
31905            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
31906                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
31907            }
31908            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
31909                Some(Self::AtomNeuralnetworksCompilationCompleted)
31910            }
31911            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
31912                Some(Self::AtomNeuralnetworksExecutionCompleted)
31913            }
31914            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
31915                Some(Self::AtomNeuralnetworksCompilationFailed)
31916            }
31917            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
31918                Some(Self::AtomNeuralnetworksExecutionFailed)
31919            }
31920            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
31921            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
31922            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
31923                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
31924            }
31925            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
31926                Some(Self::AtomChreCodeDownloadTransacted)
31927            }
31928            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
31929            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
31930            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
31931            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
31932                Some(Self::AtomUwbRangingMeasurementReceived)
31933            }
31934            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
31935                Some(Self::AtomTextClassifierDownloadWorkScheduled)
31936            }
31937            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
31938                Some(Self::AtomTextClassifierDownloadWorkCompleted)
31939            }
31940            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
31941            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
31942            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
31943                Some(Self::AtomNearbyDeviceScanStateChanged)
31944            }
31945            "ATOM_APPLICATION_LOCALES_CHANGED" => {
31946                Some(Self::AtomApplicationLocalesChanged)
31947            }
31948            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
31949                Some(Self::AtomMediametricsAudiotrackstatusReported)
31950            }
31951            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
31952                Some(Self::AtomFoldStateDurationReported)
31953            }
31954            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
31955                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
31956            }
31957            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
31958            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
31959                Some(Self::AtomDisplayHbmBrightnessChanged)
31960            }
31961            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
31962                Some(Self::AtomPersistentUriPermissionsFlushed)
31963            }
31964            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
31965                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
31966            }
31967            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
31968            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
31969            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
31970            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
31971                Some(Self::AtomWearSettingsUiInteracted)
31972            }
31973            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
31974                Some(Self::AtomTracingServiceReportEvent)
31975            }
31976            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
31977                Some(Self::AtomMediametricsAudiorecordstatusReported)
31978            }
31979            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
31980            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
31981            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
31982                Some(Self::AtomWifiP2pConnectionReported)
31983            }
31984            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
31985            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
31986                Some(Self::AtomHotwordDetectorCreateRequested)
31987            }
31988            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
31989                Some(Self::AtomHotwordDetectionServiceInitResultReported)
31990            }
31991            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
31992                Some(Self::AtomHotwordDetectionServiceRestarted)
31993            }
31994            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
31995                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
31996            }
31997            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
31998            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
31999                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
32000            }
32001            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
32002                Some(Self::AtomContactsIndexerUpdateStatsReported)
32003            }
32004            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
32005                Some(Self::AtomAppBackgroundRestrictionsInfo)
32006            }
32007            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
32008                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
32009            }
32010            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
32011                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
32012            }
32013            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
32014                Some(Self::AtomPermissionReminderNotificationInteracted)
32015            }
32016            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
32017                Some(Self::AtomRecentPermissionDecisionsInteracted)
32018            }
32019            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
32020                Some(Self::AtomGnssPsdsDownloadReported)
32021            }
32022            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
32023                Some(Self::AtomLeAudioConnectionSessionReported)
32024            }
32025            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
32026                Some(Self::AtomLeAudioBroadcastSessionReported)
32027            }
32028            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
32029            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
32030                Some(Self::AtomTaskManagerEventReported)
32031            }
32032            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
32033            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
32034                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
32035            }
32036            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
32037                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
32038            }
32039            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
32040                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
32041            }
32042            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
32043                Some(Self::AtomWifiSetupFailureCrashReported)
32044            }
32045            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
32046            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
32047                Some(Self::AtomIsolatedCompilationScheduled)
32048            }
32049            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
32050            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
32051                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
32052            }
32053            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
32054                Some(Self::AtomSystemServerPreWatchdogOccurred)
32055            }
32056            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
32057            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
32058            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
32059                Some(Self::AtomRemoteKeyProvisioningAttempt)
32060            }
32061            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
32062                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
32063            }
32064            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
32065                Some(Self::AtomRemoteKeyProvisioningTiming)
32066            }
32067            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
32068                Some(Self::AtomMediaoutputOpInteractionReport)
32069            }
32070            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
32071            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
32072                Some(Self::AtomAutofillPresentationEventReported)
32073            }
32074            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
32075            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
32076                Some(Self::AtomSafetySourceStateCollected)
32077            }
32078            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
32079                Some(Self::AtomSafetyCenterSystemEventReported)
32080            }
32081            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
32082                Some(Self::AtomSafetyCenterInteractionReported)
32083            }
32084            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
32085                Some(Self::AtomSettingsProviderSettingChanged)
32086            }
32087            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
32088                Some(Self::AtomBroadcastDeliveryEventReported)
32089            }
32090            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
32091                Some(Self::AtomServiceRequestEventReported)
32092            }
32093            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
32094                Some(Self::AtomProviderAcquisitionEventReported)
32095            }
32096            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
32097                Some(Self::AtomBluetoothDeviceNameReported)
32098            }
32099            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
32100            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
32101            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
32102            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
32103                Some(Self::AtomCbReceiverFeatureChanged)
32104            }
32105            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
32106                Some(Self::AtomPrivacySignalNotificationInteraction)
32107            }
32108            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
32109                Some(Self::AtomPrivacySignalIssueCardInteraction)
32110            }
32111            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
32112                Some(Self::AtomPrivacySignalsJobFailure)
32113            }
32114            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
32115            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
32116            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
32117            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
32118            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
32119            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
32120                Some(Self::AtomNetworkDnsServerSupportReported)
32121            }
32122            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
32123            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
32124            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
32125                Some(Self::AtomAmbientBrightnessStatsReported)
32126            }
32127            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
32128                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
32129            }
32130            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
32131                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
32132            }
32133            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
32134                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
32135            }
32136            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
32137                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
32138            }
32139            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
32140            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
32141                Some(Self::AtomDeviceWideJobConstraintChanged)
32142            }
32143            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
32144            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
32145            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
32146            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
32147                Some(Self::AtomSystemDefaultNetworkChanged)
32148            }
32149            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
32150                Some(Self::AtomIwlanSetupDataCallResultReported)
32151            }
32152            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
32153                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
32154            }
32155            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
32156                Some(Self::AtomAirplaneModeSessionReported)
32157            }
32158            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
32159            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
32160            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
32161                Some(Self::AtomPackageInstallationSessionReported)
32162            }
32163            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
32164                Some(Self::AtomDefaultNetworkRematchInfo)
32165            }
32166            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
32167                Some(Self::AtomNetworkSelectionPerformance)
32168            }
32169            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
32170            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
32171                Some(Self::AtomBluetoothDisconnectionReasonReported)
32172            }
32173            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
32174                Some(Self::AtomBluetoothLocalVersionsReported)
32175            }
32176            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
32177                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
32178            }
32179            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
32180                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
32181            }
32182            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
32183            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
32184                Some(Self::AtomBrightnessConfigurationUpdated)
32185            }
32186            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
32187                Some(Self::AtomWearMediaOutputSwitcherLaunched)
32188            }
32189            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
32190                Some(Self::AtomWearMediaOutputSwitcherFinished)
32191            }
32192            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
32193                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
32194            }
32195            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
32196                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
32197            }
32198            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
32199                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
32200            }
32201            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
32202                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
32203            }
32204            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
32205                Some(Self::AtomPackageManagerSnapshotReported)
32206            }
32207            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
32208                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
32209            }
32210            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
32211                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
32212            }
32213            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
32214            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
32215                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
32216            }
32217            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
32218            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
32219                Some(Self::AtomWsWatchFaceFavoriteActionReported)
32220            }
32221            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
32222                Some(Self::AtomWsWatchFaceSetActionReported)
32223            }
32224            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
32225                Some(Self::AtomPackageUninstallationReported)
32226            }
32227            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
32228            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
32229                Some(Self::AtomGameModeConfigurationChanged)
32230            }
32231            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
32232            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
32233                Some(Self::AtomNetworkSliceSessionEnded)
32234            }
32235            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
32236                Some(Self::AtomNetworkSliceDailyDataUsageReported)
32237            }
32238            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
32239            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
32240            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
32241                Some(Self::AtomNfcReaderConflictOccurred)
32242            }
32243            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
32244            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
32245                Some(Self::AtomGetTypeAccessedWithoutPermission)
32246            }
32247            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
32248                Some(Self::AtomMobileBundledAppInfoGathered)
32249            }
32250            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
32251                Some(Self::AtomWsWatchFaceComplicationSetChanged)
32252            }
32253            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
32254            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
32255            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
32256            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
32257            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
32258            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
32259                Some(Self::AtomUnsafeIntentEventReported)
32260            }
32261            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
32262                Some(Self::AtomPerformanceHintSessionReported)
32263            }
32264            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
32265                Some(Self::AtomMediametricsMidiDeviceCloseReported)
32266            }
32267            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
32268            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
32269                Some(Self::AtomHotwordAudioEgressEventReported)
32270            }
32271            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
32272                Some(Self::AtomLocationEnabledStateChanged)
32273            }
32274            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
32275            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
32276                Some(Self::AtomUsbComplianceWarningsReported)
32277            }
32278            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
32279                Some(Self::AtomAppSupportedLocalesChanged)
32280            }
32281            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
32282                Some(Self::AtomMediaProviderVolumeRecoveryReported)
32283            }
32284            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
32285                Some(Self::AtomBiometricPropertiesCollected)
32286            }
32287            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
32288            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
32289            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
32290            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
32291            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
32292                Some(Self::AtomDeviceLogAccessEventReported)
32293            }
32294            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
32295            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
32296            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
32297            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
32298                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
32299            }
32300            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
32301            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
32302            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
32303                Some(Self::AtomWsNotificationBridgemodeUpdated)
32304            }
32305            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
32306                Some(Self::AtomWsNotificationDismissalActioned)
32307            }
32308            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
32309            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
32310            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
32311            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
32312                Some(Self::AtomWifiBytesTransferByFgBg)
32313            }
32314            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
32315            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
32316                Some(Self::AtomMobileBytesTransferByFgBg)
32317            }
32318            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
32319            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
32320            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
32321            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
32322            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
32323            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
32324            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
32325            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
32326            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
32327            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
32328            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
32329            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
32330            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
32331            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
32332            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
32333            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
32334            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
32335            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
32336            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
32337            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
32338            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
32339            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
32340            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
32341            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
32342            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
32343            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
32344            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
32345            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
32346            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
32347            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
32348            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
32349            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
32350            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
32351                Some(Self::AtomOnDevicePowerMeasurement)
32352            }
32353            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
32354                Some(Self::AtomDeviceCalculatedPowerUse)
32355            }
32356            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
32357                Some(Self::AtomProcessMemoryHighWaterMark)
32358            }
32359            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
32360            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
32361            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
32362            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
32363            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
32364                Some(Self::AtomDebugFailingElapsedClock)
32365            }
32366            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
32367            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
32368            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
32369            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
32370            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
32371            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
32372            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
32373            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
32374            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
32375            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
32376                Some(Self::AtomAppsOnExternalStorageInfo)
32377            }
32378            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
32379            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
32380            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
32381            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
32382                Some(Self::AtomProcessSystemIonHeapSize)
32383            }
32384            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
32385                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
32386            }
32387            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
32388                Some(Self::AtomSurfaceflingerStatsLayerInfo)
32389            }
32390            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
32391            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
32392            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
32393            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
32394                Some(Self::AtomDangerousPermissionStateSampled)
32395            }
32396            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
32397            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
32398            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
32399            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
32400                Some(Self::AtomPackageNotificationPreferences)
32401            }
32402            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
32403                Some(Self::AtomPackageNotificationChannelPreferences)
32404            }
32405            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
32406                Some(Self::AtomPackageNotificationChannelGroupPreferences)
32407            }
32408            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
32409            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
32410            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
32411            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
32412            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
32413            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
32414                Some(Self::AtomSupportedRadioAccessFamily)
32415            }
32416            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
32417            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
32418            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
32419            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
32420                Some(Self::AtomBytesTransferByTagAndMetered)
32421            }
32422            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
32423            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
32424                Some(Self::AtomGeneralExternalStorageAccessStats)
32425            }
32426            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
32427            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
32428            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
32429            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
32430            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
32431            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
32432                Some(Self::AtomCellularDataServiceSwitch)
32433            }
32434            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
32435            "ATOM_IMS_REGISTRATION_TERMINATION" => {
32436                Some(Self::AtomImsRegistrationTermination)
32437            }
32438            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
32439            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
32440            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
32441            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
32442            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
32443                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
32444            }
32445            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
32446            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
32447            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
32448            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
32449            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
32450            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
32451            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
32452            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
32453            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
32454            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
32455            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
32456            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
32457            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
32458                Some(Self::AtomBatteryUsageStatsBeforeReset)
32459            }
32460            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
32461                Some(Self::AtomBatteryUsageStatsSinceReset)
32462            }
32463            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
32464                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
32465            }
32466            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
32467                Some(Self::AtomInstalledIncrementalPackage)
32468            }
32469            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
32470            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
32471            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
32472            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
32473                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
32474            }
32475            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
32476                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
32477            }
32478            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
32479                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
32480            }
32481            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
32482                Some(Self::AtomKeystore2AtomWithOverflow)
32483            }
32484            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
32485                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
32486            }
32487            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
32488                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
32489            }
32490            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
32491            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
32492            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
32493            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
32494                Some(Self::AtomAccessibilityShortcutStats)
32495            }
32496            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
32497                Some(Self::AtomAccessibilityFloatingMenuStats)
32498            }
32499            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
32500                Some(Self::AtomDataUsageBytesTransferV2)
32501            }
32502            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
32503            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
32504                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
32505            }
32506            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
32507                Some(Self::AtomCarWatchdogUidIoUsageSummary)
32508            }
32509            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
32510                Some(Self::AtomImsRegistrationFeatureTagStats)
32511            }
32512            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
32513                Some(Self::AtomRcsClientProvisioningStats)
32514            }
32515            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
32516            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
32517            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
32518                Some(Self::AtomSipTransportFeatureTagStats)
32519            }
32520            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
32521            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
32522            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
32523                Some(Self::AtomImsDedicatedBearerListenerEvent)
32524            }
32525            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
32526            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
32527                Some(Self::AtomImsRegistrationServiceDescStats)
32528            }
32529            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
32530            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
32531            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
32532            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
32533            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
32534            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
32535                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
32536            }
32537            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
32538            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
32539                Some(Self::AtomPinnedFileSizesPerPackage)
32540            }
32541            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
32542                Some(Self::AtomPendingIntentsPerPackage)
32543            }
32544            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
32545            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
32546                Some(Self::AtomTelephonyNetworkRequestsV2)
32547            }
32548            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
32549                Some(Self::AtomDeviceTelephonyProperties)
32550            }
32551            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
32552                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
32553            }
32554            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
32555            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
32556            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
32557            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
32558            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
32559            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
32560            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
32561            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
32562                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
32563            }
32564            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
32565            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
32566            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
32567            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
32568                Some(Self::AtomNetworkSliceRequestCount)
32569            }
32570            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
32571            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
32572                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
32573            }
32574            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
32575            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
32576            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
32577            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
32578            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
32579            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
32580                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
32581            }
32582            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
32583            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
32584            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
32585                Some(Self::AtomWifiSelfRecoveryTriggered)
32586            }
32587            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
32588            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
32589            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
32590            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
32591            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
32592            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
32593                Some(Self::AtomWifiAwareResourceUsingChanged)
32594            }
32595            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
32596            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
32597                Some(Self::AtomWifiLocalOnlyRequestReceived)
32598            }
32599            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
32600                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
32601            }
32602            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
32603            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
32604            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
32605            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
32606            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
32607            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
32608                Some(Self::AtomWifiApCapabilitiesReported)
32609            }
32610            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
32611            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
32612                Some(Self::AtomScorerPredictionResultReported)
32613            }
32614            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
32615            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
32616            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
32617            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
32618            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
32619                Some(Self::AtomWifiConfiguredNetworkInfo)
32620            }
32621            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
32622            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
32623            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
32624                Some(Self::AtomFirstOverlayStateChanged)
32625            }
32626            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
32627            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
32628                Some(Self::AtomWsIncomingCallActionReported)
32629            }
32630            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
32631                Some(Self::AtomWsCallDisconnectionReported)
32632            }
32633            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
32634            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
32635                Some(Self::AtomWsCallUserExperienceLatencyReported)
32636            }
32637            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
32638                Some(Self::AtomWsCallInteractionReported)
32639            }
32640            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
32641            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
32642                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
32643            }
32644            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
32645                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
32646            }
32647            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
32648                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
32649            }
32650            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
32651                Some(Self::AtomWsRemoteEventUsageReported)
32652            }
32653            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
32654                Some(Self::AtomWsNotificationManagedDismissalSync)
32655            }
32656            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
32657                Some(Self::AtomWsBugreportEventReported)
32658            }
32659            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
32660                Some(Self::AtomWsStandaloneModeSnapshot)
32661            }
32662            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
32663                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
32664            }
32665            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
32666                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
32667            }
32668            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
32669                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
32670            }
32671            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
32672                Some(Self::AtomWearAdaptiveSuspendStatsReported)
32673            }
32674            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
32675                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
32676            }
32677            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
32678                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
32679            }
32680            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
32681            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
32682            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
32683                Some(Self::AtomWearTimeSyncAttemptCompleted)
32684            }
32685            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
32686            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
32687                Some(Self::AtomWearSetupWizardDeviceStatusReported)
32688            }
32689            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
32690                Some(Self::AtomWearSetupWizardPairingCompleted)
32691            }
32692            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
32693                Some(Self::AtomWearSetupWizardConnectionEstablished)
32694            }
32695            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
32696                Some(Self::AtomWearSetupWizardCheckinCompleted)
32697            }
32698            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
32699                Some(Self::AtomWearSetupWizardCompanionTimeReported)
32700            }
32701            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
32702                Some(Self::AtomWearSetupWizardStatusReported)
32703            }
32704            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
32705                Some(Self::AtomWearSetupWizardHeartbeatReported)
32706            }
32707            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
32708                Some(Self::AtomWearSetupWizardFrpTriggered)
32709            }
32710            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
32711                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
32712            }
32713            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
32714                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
32715            }
32716            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
32717            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
32718            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
32719            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
32720                Some(Self::AtomLayoutExpressionInspected)
32721            }
32722            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
32723                Some(Self::AtomLayoutAnimationsInspected)
32724            }
32725            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
32726                Some(Self::AtomMaterialComponentsInspected)
32727            }
32728            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
32729            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
32730            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
32731            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
32732            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
32733            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
32734                Some(Self::AtomIgnoredInflationFailuresReported)
32735            }
32736            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
32737            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
32738            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
32739            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
32740            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
32741                Some(Self::AtomMediaSessionStateChanged)
32742            }
32743            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
32744                Some(Self::AtomMediaControlApiUsageReported)
32745            }
32746            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
32747            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
32748                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
32749            }
32750            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
32751                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
32752            }
32753            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
32754                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
32755            }
32756            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
32757            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
32758                Some(Self::AtomSysproxyBluetoothBytesTransfer)
32759            }
32760            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
32761                Some(Self::AtomSysproxyConnectionUpdated)
32762            }
32763            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
32764                Some(Self::AtomWearCompanionConnectionState)
32765            }
32766            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
32767                Some(Self::AtomSysproxyServiceStateUpdated)
32768            }
32769            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
32770            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
32771                Some(Self::AtomTestUprobestatsAtomReported)
32772            }
32773            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
32774            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
32775            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
32776                Some(Self::AtomBootIntegrityInfoReported)
32777            }
32778            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
32779                Some(Self::AtomThreadnetworkTelemetryDataReported)
32780            }
32781            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
32782                Some(Self::AtomThreadnetworkTopoEntryRepeated)
32783            }
32784            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
32785                Some(Self::AtomThreadnetworkDeviceInfoReported)
32786            }
32787            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
32788                Some(Self::AtomCellularRadioPowerStateChanged)
32789            }
32790            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
32791            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
32792            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
32793            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
32794            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
32795                Some(Self::AtomCellularIdentifierDisclosed)
32796            }
32797            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
32798            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
32799            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
32800                Some(Self::AtomSatelliteIncomingDatagram)
32801            }
32802            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
32803                Some(Self::AtomSatelliteOutgoingDatagram)
32804            }
32805            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
32806            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
32807                Some(Self::AtomSatelliteSosMessageRecommender)
32808            }
32809            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
32810                Some(Self::AtomCarrierRoamingSatelliteSession)
32811            }
32812            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
32813                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
32814            }
32815            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
32816                Some(Self::AtomControllerStatsPerPackage)
32817            }
32818            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
32819            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
32820            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
32821                Some(Self::AtomSatelliteAccessController)
32822            }
32823            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
32824            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
32825            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
32826                Some(Self::AtomQnsFallbackRestrictionChanged)
32827            }
32828            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
32829                Some(Self::AtomQnsRatPreferenceMismatchInfo)
32830            }
32831            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
32832            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
32833            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
32834                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
32835            }
32836            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
32837            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
32838            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
32839            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
32840            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
32841            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
32842                Some(Self::AtomLockscreenShortcutSelected)
32843            }
32844            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
32845                Some(Self::AtomLockscreenShortcutTriggered)
32846            }
32847            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
32848                Some(Self::AtomLauncherImpressionEventV2)
32849            }
32850            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
32851                Some(Self::AtomDisplaySwitchLatencyTracked)
32852            }
32853            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
32854                Some(Self::AtomNotificationListenerService)
32855            }
32856            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
32857            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
32858                Some(Self::AtomCommunalHubWidgetEventReported)
32859            }
32860            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
32861                Some(Self::AtomPeripheralTutorialLaunched)
32862            }
32863            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
32864                Some(Self::AtomContextualEducationTriggered)
32865            }
32866            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
32867            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
32868                Some(Self::AtomTestExtensionAtomReported)
32869            }
32870            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
32871                Some(Self::AtomTestRestrictedAtomReported)
32872            }
32873            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
32874            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
32875            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
32876            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
32877            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
32878                Some(Self::AtomSandboxActivityEventOccurred)
32879            }
32880            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
32881                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
32882            }
32883            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
32884            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
32885            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
32886            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
32887            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
32888            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
32889            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
32890            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
32891            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
32892                Some(Self::AtomMediaProviderDatabaseRollbackReported)
32893            }
32894            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
32895                Some(Self::AtomBackupSetupStatusReported)
32896            }
32897            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
32898            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
32899                Some(Self::AtomScreenTimeoutOverrideReported)
32900            }
32901            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
32902                Some(Self::AtomScreenInteractiveSessionReported)
32903            }
32904            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
32905            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
32906            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
32907            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
32908                Some(Self::AtomPhotopickerSessionInfoReported)
32909            }
32910            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
32911                Some(Self::AtomPhotopickerApiInfoReported)
32912            }
32913            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
32914                Some(Self::AtomPhotopickerUiEventLogged)
32915            }
32916            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
32917                Some(Self::AtomPhotopickerMediaItemStatusReported)
32918            }
32919            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
32920                Some(Self::AtomPhotopickerPreviewInfoLogged)
32921            }
32922            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
32923                Some(Self::AtomPhotopickerMenuInteractionLogged)
32924            }
32925            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
32926                Some(Self::AtomPhotopickerBannerInteractionLogged)
32927            }
32928            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
32929                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
32930            }
32931            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
32932                Some(Self::AtomPhotopickerPageInfoLogged)
32933            }
32934            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
32935                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
32936            }
32937            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
32938                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
32939            }
32940            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
32941                Some(Self::AtomPhotopickerSearchInfoReported)
32942            }
32943            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
32944                Some(Self::AtomSearchDataExtractionDetailsReported)
32945            }
32946            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
32947                Some(Self::AtomEmbeddedPhotopickerInfoReported)
32948            }
32949            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
32950                Some(Self::AtomPermissionRationaleDialogViewed)
32951            }
32952            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
32953                Some(Self::AtomPermissionRationaleDialogActionReported)
32954            }
32955            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
32956                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
32957            }
32958            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
32959                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
32960            }
32961            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
32962                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
32963            }
32964            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
32965                Some(Self::AtomEnhancedConfirmationDialogResultReported)
32966            }
32967            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
32968                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
32969            }
32970            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
32971            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
32972            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
32973            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
32974            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
32975                Some(Self::AtomComponentStateChangedReported)
32976            }
32977            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
32978                Some(Self::AtomOndevicepersonalizationApiCalled)
32979            }
32980            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
32981                Some(Self::AtomOndevicepersonalizationTraceEvent)
32982            }
32983            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
32984                Some(Self::AtomNfcObserveModeStateChanged)
32985            }
32986            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
32987            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
32988                Some(Self::AtomNfcPollingLoopNotificationReported)
32989            }
32990            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
32991                Some(Self::AtomNfcProprietaryCapabilitiesReported)
32992            }
32993            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
32994                Some(Self::AtomNfcExitFrameTableChanged)
32995            }
32996            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
32997            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
32998                Some(Self::AtomMicroxrDeviceBootCompleteReported)
32999            }
33000            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
33001            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
33002            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
33003            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
33004            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
33005            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
33006                Some(Self::AtomMediaEditingEndedReported)
33007            }
33008            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
33009                Some(Self::AtomMediaCodecReclaimRequestCompleted)
33010            }
33011            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
33012            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
33013            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
33014            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
33015            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
33016                Some(Self::AtomChreSignificantMotionStateChanged)
33017            }
33018            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
33019                Some(Self::AtomPopulationDensityProviderLoadingReported)
33020            }
33021            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
33022                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
33023            }
33024            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
33025                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
33026            }
33027            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
33028            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
33029            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
33030                Some(Self::AtomKeyboardSystemsEventReported)
33031            }
33032            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
33033            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
33034                Some(Self::AtomInputEventLatencyReported)
33035            }
33036            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
33037            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
33038            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
33039                Some(Self::AtomIkeLivenessCheckSessionValidated)
33040            }
33041            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
33042                Some(Self::AtomNegotiatedSecurityAssociation)
33043            }
33044            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
33045                Some(Self::AtomHotwordEgressSizeAtomReported)
33046            }
33047            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
33048                Some(Self::AtomHealthConnectUiImpression)
33049            }
33050            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
33051                Some(Self::AtomHealthConnectUiInteraction)
33052            }
33053            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
33054                Some(Self::AtomHealthConnectAppOpenedReported)
33055            }
33056            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
33057            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
33058            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
33059                Some(Self::AtomHealthConnectStorageStats)
33060            }
33061            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
33062            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
33063            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
33064                Some(Self::AtomHealthConnectExportInvoked)
33065            }
33066            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
33067                Some(Self::AtomHealthConnectImportInvoked)
33068            }
33069            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
33070                Some(Self::AtomHealthConnectExportImportStatsReported)
33071            }
33072            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
33073                Some(Self::AtomHealthConnectPermissionStats)
33074            }
33075            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
33076                Some(Self::AtomHealthConnectPhrApiInvoked)
33077            }
33078            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
33079                Some(Self::AtomHealthConnectPhrUsageStats)
33080            }
33081            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
33082                Some(Self::AtomHealthConnectPhrStorageStats)
33083            }
33084            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
33085                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
33086            }
33087            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
33088                Some(Self::AtomHealthConnectEcosystemStats)
33089            }
33090            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
33091            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
33092                Some(Self::AtomHdmiSoundbarModeStatusReported)
33093            }
33094            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
33095                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
33096            }
33097            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
33098            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
33099            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
33100            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
33101                Some(Self::AtomApplicationGrammaticalInflectionChanged)
33102            }
33103            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
33104                Some(Self::AtomSystemGrammaticalInflectionChanged)
33105            }
33106            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
33107                Some(Self::AtomFullScreenIntentLaunched)
33108            }
33109            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
33110            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
33111            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
33112            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
33113            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
33114                Some(Self::AtomStylusPredictionMetricsReported)
33115            }
33116            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
33117            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
33118                Some(Self::AtomMediaProjectionStateChanged)
33119            }
33120            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
33121                Some(Self::AtomMediaProjectionTargetChanged)
33122            }
33123            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
33124                Some(Self::AtomExcessiveBinderProxyCountReported)
33125            }
33126            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
33127                Some(Self::AtomProxyBytesTransferByFgBg)
33128            }
33129            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
33130                Some(Self::AtomMobileBytesTransferByProcState)
33131            }
33132            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
33133            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
33134                Some(Self::AtomSensitiveContentMediaProjectionSession)
33135            }
33136            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
33137                Some(Self::AtomSensitiveNotificationAppProtectionSession)
33138            }
33139            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
33140                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
33141            }
33142            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
33143                Some(Self::AtomSensitiveNotificationRedaction)
33144            }
33145            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
33146                Some(Self::AtomSensitiveContentAppProtection)
33147            }
33148            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
33149                Some(Self::AtomAppRestrictionStateChanged)
33150            }
33151            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
33152            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
33153            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
33154                Some(Self::AtomPowerSaveTempAllowlistChanged)
33155            }
33156            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
33157            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
33158                Some(Self::AtomContentOrFileUriEventReported)
33159            }
33160            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
33161                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
33162            }
33163            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
33164                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
33165            }
33166            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
33167            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
33168                Some(Self::AtomJankFrameCountByWidgetReported)
33169            }
33170            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
33171            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
33172                Some(Self::AtomNotificationChannelClassification)
33173            }
33174            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
33175                Some(Self::AtomCameraStatusForCompatibilityChanged)
33176            }
33177            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
33178                Some(Self::AtomFederatedComputeApiCalled)
33179            }
33180            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
33181                Some(Self::AtomFederatedComputeTrainingEventReported)
33182            }
33183            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
33184                Some(Self::AtomExampleIteratorNextLatencyReported)
33185            }
33186            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
33187                Some(Self::AtomFederatedComputeTraceEventReported)
33188            }
33189            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
33190            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
33191                Some(Self::AtomExpressHistogramSampleReported)
33192            }
33193            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
33194            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
33195                Some(Self::AtomExpressUidHistogramSampleReported)
33196            }
33197            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
33198            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
33199            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
33200            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
33201                Some(Self::AtomExternalDisplayStateChanged)
33202            }
33203            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
33204                Some(Self::AtomDisplayModeDirectorVoteChanged)
33205            }
33206            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
33207                Some(Self::AtomDevicePolicyManagementMode)
33208            }
33209            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
33210            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
33211                Some(Self::AtomDeviceLockCheckInRequestReported)
33212            }
33213            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
33214                Some(Self::AtomDeviceLockProvisioningCompleteReported)
33215            }
33216            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
33217                Some(Self::AtomDeviceLockKioskAppRequestReported)
33218            }
33219            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
33220                Some(Self::AtomDeviceLockCheckInRetryReported)
33221            }
33222            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
33223                Some(Self::AtomDeviceLockProvisionFailureReported)
33224            }
33225            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
33226                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
33227            }
33228            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
33229            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
33230                Some(Self::AtomDesktopModeSessionTaskUpdate)
33231            }
33232            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
33233                Some(Self::AtomDesktopModeTaskSizeUpdated)
33234            }
33235            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
33236            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
33237            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
33238                Some(Self::AtomCronetEngineBuilderInitialized)
33239            }
33240            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
33241                Some(Self::AtomCronetHttpFlagsInitialized)
33242            }
33243            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
33244            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
33245                Some(Self::AtomCredentialManagerApiCalled)
33246            }
33247            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
33248                Some(Self::AtomCredentialManagerInitPhaseReported)
33249            }
33250            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
33251                Some(Self::AtomCredentialManagerCandidatePhaseReported)
33252            }
33253            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
33254                Some(Self::AtomCredentialManagerFinalPhaseReported)
33255            }
33256            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
33257                Some(Self::AtomCredentialManagerTotalReported)
33258            }
33259            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
33260                Some(Self::AtomCredentialManagerFinalnouidReported)
33261            }
33262            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
33263                Some(Self::AtomCredentialManagerGetReported)
33264            }
33265            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
33266                Some(Self::AtomCredentialManagerAuthClickReported)
33267            }
33268            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
33269                Some(Self::AtomCredentialManagerApiv2Called)
33270            }
33271            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
33272            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
33273                Some(Self::AtomVpnConnectionStateChanged)
33274            }
33275            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
33276            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
33277            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
33278            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
33279                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
33280            }
33281            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
33282                Some(Self::AtomNetworkStatsRecorderFileOperated)
33283            }
33284            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
33285                Some(Self::AtomDailyKeepaliveInfoReported)
33286            }
33287            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
33288                Some(Self::AtomNetworkRequestStateChanged)
33289            }
33290            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
33291                Some(Self::AtomTetheringActiveSessionsReported)
33292            }
33293            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
33294                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
33295            }
33296            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
33297            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
33298            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
33299            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
33300            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
33301                Some(Self::AtomCertificateTransparencyLogListStateChanged)
33302            }
33303            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
33304            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
33305                Some(Self::AtomCertificateTransparencyVerificationReported)
33306            }
33307            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
33308                Some(Self::AtomCameraFeatureCombinationQueryEvent)
33309            }
33310            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
33311            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
33312                Some(Self::AtomBluetoothHashedDeviceNameReported)
33313            }
33314            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
33315                Some(Self::AtomBluetoothL2capCocClientConnection)
33316            }
33317            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
33318                Some(Self::AtomBluetoothL2capCocServerConnection)
33319            }
33320            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
33321                Some(Self::AtomBluetoothLeSessionConnected)
33322            }
33323            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
33324                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
33325            }
33326            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
33327                Some(Self::AtomBluetoothProfileConnectionAttempted)
33328            }
33329            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
33330                Some(Self::AtomBluetoothContentProfileErrorReported)
33331            }
33332            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
33333                Some(Self::AtomBluetoothRfcommConnectionAttempted)
33334            }
33335            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
33336                Some(Self::AtomRemoteDeviceInformationWithMetricId)
33337            }
33338            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
33339            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
33340            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
33341            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
33342            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
33343            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
33344            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
33345            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
33346                Some(Self::AtomBluetoothCrossLayerEventReported)
33347            }
33348            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
33349                Some(Self::AtomBroadcastAudioSessionReported)
33350            }
33351            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
33352                Some(Self::AtomBroadcastAudioSyncReported)
33353            }
33354            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
33355                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
33356            }
33357            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
33358            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
33359                Some(Self::AtomHearingDeviceActiveEventReported)
33360            }
33361            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
33362                Some(Self::AtomBackportedFixStatusReported)
33363            }
33364            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
33365            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
33366                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
33367            }
33368            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
33369                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
33370            }
33371            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
33372            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
33373                Some(Self::AtomCarWakeupFromSuspendReported)
33374            }
33375            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
33376            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
33377                Some(Self::AtomCarCalmModeEventReported)
33378            }
33379            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
33380            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
33381                Some(Self::AtomAutofillFillRequestReported)
33382            }
33383            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
33384                Some(Self::AtomAutofillFillResponseReported)
33385            }
33386            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
33387                Some(Self::AtomAutofillSaveEventReported)
33388            }
33389            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
33390            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
33391                Some(Self::AtomAutofillFieldClassificationEventReported)
33392            }
33393            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
33394            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
33395            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
33396                Some(Self::AtomBackgroundDexoptJobEnded)
33397            }
33398            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
33399            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
33400            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
33401            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
33402            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
33403            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
33404            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
33405                Some(Self::AtomAppSearchSetSchemaStatsReported)
33406            }
33407            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
33408                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
33409            }
33410            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
33411                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
33412            }
33413            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
33414                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
33415            }
33416            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
33417                Some(Self::AtomAppSearchAppsIndexerStatsReported)
33418            }
33419            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
33420                Some(Self::AtomAppFunctionsRequestReported)
33421            }
33422            "ATOM_APEX_INSTALLATION_REQUESTED" => {
33423                Some(Self::AtomApexInstallationRequested)
33424            }
33425            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
33426            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
33427            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
33428                Some(Self::AtomAiWallpapersButtonPressed)
33429            }
33430            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
33431                Some(Self::AtomAiWallpapersTemplateSelected)
33432            }
33433            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
33434                Some(Self::AtomAiWallpapersTermSelected)
33435            }
33436            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
33437                Some(Self::AtomAiWallpapersWallpaperSet)
33438            }
33439            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
33440                Some(Self::AtomAiWallpapersSessionSummary)
33441            }
33442            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
33443                Some(Self::AtomJsscriptengineLatencyReported)
33444            }
33445            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
33446            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
33447                Some(Self::AtomAdServicesMesurementReportsUploaded)
33448            }
33449            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
33450                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
33451            }
33452            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
33453                Some(Self::AtomMobileDataDownloadDownloadResultReported)
33454            }
33455            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
33456                Some(Self::AtomAdServicesSettingsUsageReported)
33457            }
33458            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
33459                Some(Self::AtomBackgroundFetchProcessReported)
33460            }
33461            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
33462                Some(Self::AtomUpdateCustomAudienceProcessReported)
33463            }
33464            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
33465                Some(Self::AtomRunAdBiddingProcessReported)
33466            }
33467            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
33468                Some(Self::AtomRunAdScoringProcessReported)
33469            }
33470            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
33471                Some(Self::AtomRunAdSelectionProcessReported)
33472            }
33473            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
33474                Some(Self::AtomRunAdBiddingPerCaProcessReported)
33475            }
33476            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
33477                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
33478            }
33479            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
33480                Some(Self::AtomAdServicesMeasurementRegistrations)
33481            }
33482            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
33483                Some(Self::AtomAdServicesGetTopicsReported)
33484            }
33485            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
33486                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
33487            }
33488            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
33489                Some(Self::AtomAdServicesEpochComputationClassifierReported)
33490            }
33491            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
33492                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
33493            }
33494            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
33495                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
33496            }
33497            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
33498                Some(Self::AtomAdServicesMeasurementDebugKeys)
33499            }
33500            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
33501            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
33502                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
33503            }
33504            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
33505                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
33506            }
33507            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
33508                Some(Self::AtomAdServicesMeasurementAttribution)
33509            }
33510            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
33511                Some(Self::AtomAdServicesMeasurementJobs)
33512            }
33513            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
33514                Some(Self::AtomAdServicesMeasurementWipeout)
33515            }
33516            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
33517                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
33518            }
33519            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
33520                Some(Self::AtomAdServicesEnrollmentDataStored)
33521            }
33522            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
33523                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
33524            }
33525            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
33526                Some(Self::AtomAdServicesEnrollmentMatched)
33527            }
33528            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
33529                Some(Self::AtomAdServicesConsentMigrated)
33530            }
33531            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
33532                Some(Self::AtomAdServicesEnrollmentFailed)
33533            }
33534            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
33535                Some(Self::AtomAdServicesMeasurementClickVerification)
33536            }
33537            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
33538                Some(Self::AtomAdServicesEncryptionKeyFetched)
33539            }
33540            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
33541                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
33542            }
33543            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
33544                Some(Self::AtomDestinationRegisteredBeacons)
33545            }
33546            "ATOM_REPORT_INTERACTION_API_CALLED" => {
33547                Some(Self::AtomReportInteractionApiCalled)
33548            }
33549            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
33550                Some(Self::AtomInteractionReportingTableCleared)
33551            }
33552            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
33553                Some(Self::AtomAppManifestConfigHelperCalled)
33554            }
33555            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
33556                Some(Self::AtomAdFilteringProcessJoinCaReported)
33557            }
33558            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
33559                Some(Self::AtomAdFilteringProcessAdSelectionReported)
33560            }
33561            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
33562                Some(Self::AtomAdCounterHistogramUpdaterReported)
33563            }
33564            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
33565            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
33566                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
33567            }
33568            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
33569                Some(Self::AtomKAnonBackgroundJobStatusReported)
33570            }
33571            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
33572                Some(Self::AtomKAnonInitializeStatusReported)
33573            }
33574            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
33575            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
33576            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
33577                Some(Self::AtomKAnonKeyAttestationStatusReported)
33578            }
33579            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
33580                Some(Self::AtomGetAdSelectionDataApiCalled)
33581            }
33582            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
33583                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
33584            }
33585            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
33586                Some(Self::AtomBackgroundJobSchedulingReported)
33587            }
33588            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
33589                Some(Self::AtomTopicsEncryptionEpochComputationReported)
33590            }
33591            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
33592                Some(Self::AtomTopicsEncryptionGetTopicsReported)
33593            }
33594            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
33595                Some(Self::AtomAdservicesShellCommandCalled)
33596            }
33597            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
33598            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
33599            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
33600            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
33601            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
33602                Some(Self::AtomPersistAdSelectionResultCalled)
33603            }
33604            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
33605                Some(Self::AtomServerAuctionKeyFetchCalled)
33606            }
33607            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
33608                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
33609            }
33610            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
33611                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
33612            }
33613            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
33614                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
33615            }
33616            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
33617                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
33618            }
33619            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
33620                Some(Self::AtomReportImpressionApiCalled)
33621            }
33622            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
33623                Some(Self::AtomAdServicesEnrollmentTransactionStats)
33624            }
33625            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
33626                Some(Self::AtomAdServicesCobaltLoggerEventReported)
33627            }
33628            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
33629                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
33630            }
33631            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
33632                Some(Self::AtomUpdateSignalsProcessReported)
33633            }
33634            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
33635                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
33636            }
33637            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
33638                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
33639            }
33640            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
33641                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
33642            }
33643            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
33644                Some(
33645                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
33646                )
33647            }
33648            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
33649                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
33650            }
33651            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
33652            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
33653            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
33654                Some(Self::AtomThermalHeadroomThresholdsCalled)
33655            }
33656            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
33657                Some(Self::AtomAdpfHintSessionTidCleanup)
33658            }
33659            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
33660                Some(Self::AtomThermalHeadroomThresholds)
33661            }
33662            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
33663            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
33664                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
33665            }
33666            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
33667            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
33668                Some(Self::AtomAccessibilityCheckResultReported)
33669            }
33670            _ => None,
33671        }
33672    }
33673}
33674/// Counter definitions for Linux's /proc/meminfo.
33675#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
33676#[repr(i32)]
33677pub enum MeminfoCounters {
33678    MeminfoUnspecified = 0,
33679    MeminfoMemTotal = 1,
33680    MeminfoMemFree = 2,
33681    MeminfoMemAvailable = 3,
33682    MeminfoBuffers = 4,
33683    MeminfoCached = 5,
33684    MeminfoSwapCached = 6,
33685    MeminfoActive = 7,
33686    MeminfoInactive = 8,
33687    MeminfoActiveAnon = 9,
33688    MeminfoInactiveAnon = 10,
33689    MeminfoActiveFile = 11,
33690    MeminfoInactiveFile = 12,
33691    MeminfoUnevictable = 13,
33692    MeminfoMlocked = 14,
33693    MeminfoSwapTotal = 15,
33694    MeminfoSwapFree = 16,
33695    MeminfoDirty = 17,
33696    MeminfoWriteback = 18,
33697    MeminfoAnonPages = 19,
33698    MeminfoMapped = 20,
33699    MeminfoShmem = 21,
33700    MeminfoSlab = 22,
33701    MeminfoSlabReclaimable = 23,
33702    MeminfoSlabUnreclaimable = 24,
33703    MeminfoKernelStack = 25,
33704    MeminfoPageTables = 26,
33705    MeminfoCommitLimit = 27,
33706    MeminfoCommitedAs = 28,
33707    MeminfoVmallocTotal = 29,
33708    MeminfoVmallocUsed = 30,
33709    MeminfoVmallocChunk = 31,
33710    MeminfoCmaTotal = 32,
33711    MeminfoCmaFree = 33,
33712    MeminfoGpu = 34,
33713    MeminfoZram = 35,
33714    MeminfoMisc = 36,
33715    MeminfoIonHeap = 37,
33716    MeminfoIonHeapPool = 38,
33717}
33718impl MeminfoCounters {
33719    /// String value of the enum field names used in the ProtoBuf definition.
33720    ///
33721    /// The values are not transformed in any way and thus are considered stable
33722    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
33723    pub fn as_str_name(&self) -> &'static str {
33724        match self {
33725            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
33726            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
33727            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
33728            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
33729            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
33730            Self::MeminfoCached => "MEMINFO_CACHED",
33731            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
33732            Self::MeminfoActive => "MEMINFO_ACTIVE",
33733            Self::MeminfoInactive => "MEMINFO_INACTIVE",
33734            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
33735            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
33736            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
33737            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
33738            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
33739            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
33740            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
33741            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
33742            Self::MeminfoDirty => "MEMINFO_DIRTY",
33743            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
33744            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
33745            Self::MeminfoMapped => "MEMINFO_MAPPED",
33746            Self::MeminfoShmem => "MEMINFO_SHMEM",
33747            Self::MeminfoSlab => "MEMINFO_SLAB",
33748            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
33749            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
33750            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
33751            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
33752            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
33753            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
33754            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
33755            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
33756            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
33757            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
33758            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
33759            Self::MeminfoGpu => "MEMINFO_GPU",
33760            Self::MeminfoZram => "MEMINFO_ZRAM",
33761            Self::MeminfoMisc => "MEMINFO_MISC",
33762            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
33763            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
33764        }
33765    }
33766    /// Creates an enum from field names used in the ProtoBuf definition.
33767    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
33768        match value {
33769            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
33770            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
33771            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
33772            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
33773            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
33774            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
33775            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
33776            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
33777            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
33778            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
33779            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
33780            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
33781            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
33782            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
33783            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
33784            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
33785            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
33786            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
33787            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
33788            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
33789            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
33790            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
33791            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
33792            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
33793            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
33794            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
33795            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
33796            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
33797            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
33798            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
33799            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
33800            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
33801            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
33802            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
33803            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
33804            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
33805            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
33806            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
33807            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
33808            _ => None,
33809        }
33810    }
33811}
33812/// Counter definitions for Linux's /proc/vmstat.
33813#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
33814#[repr(i32)]
33815pub enum VmstatCounters {
33816    VmstatUnspecified = 0,
33817    VmstatNrFreePages = 1,
33818    VmstatNrAllocBatch = 2,
33819    VmstatNrInactiveAnon = 3,
33820    VmstatNrActiveAnon = 4,
33821    VmstatNrInactiveFile = 5,
33822    VmstatNrActiveFile = 6,
33823    VmstatNrUnevictable = 7,
33824    VmstatNrMlock = 8,
33825    VmstatNrAnonPages = 9,
33826    VmstatNrMapped = 10,
33827    VmstatNrFilePages = 11,
33828    VmstatNrDirty = 12,
33829    VmstatNrWriteback = 13,
33830    VmstatNrSlabReclaimable = 14,
33831    VmstatNrSlabUnreclaimable = 15,
33832    VmstatNrPageTablePages = 16,
33833    VmstatNrKernelStack = 17,
33834    VmstatNrOverhead = 18,
33835    VmstatNrUnstable = 19,
33836    VmstatNrBounce = 20,
33837    VmstatNrVmscanWrite = 21,
33838    VmstatNrVmscanImmediateReclaim = 22,
33839    VmstatNrWritebackTemp = 23,
33840    VmstatNrIsolatedAnon = 24,
33841    VmstatNrIsolatedFile = 25,
33842    VmstatNrShmem = 26,
33843    VmstatNrDirtied = 27,
33844    VmstatNrWritten = 28,
33845    VmstatNrPagesScanned = 29,
33846    VmstatWorkingsetRefault = 30,
33847    VmstatWorkingsetActivate = 31,
33848    VmstatWorkingsetNodereclaim = 32,
33849    VmstatNrAnonTransparentHugepages = 33,
33850    VmstatNrFreeCma = 34,
33851    VmstatNrSwapcache = 35,
33852    VmstatNrDirtyThreshold = 36,
33853    VmstatNrDirtyBackgroundThreshold = 37,
33854    VmstatPgpgin = 38,
33855    VmstatPgpgout = 39,
33856    VmstatPgpgoutclean = 40,
33857    VmstatPswpin = 41,
33858    VmstatPswpout = 42,
33859    VmstatPgallocDma = 43,
33860    VmstatPgallocNormal = 44,
33861    VmstatPgallocMovable = 45,
33862    VmstatPgfree = 46,
33863    VmstatPgactivate = 47,
33864    VmstatPgdeactivate = 48,
33865    VmstatPgfault = 49,
33866    VmstatPgmajfault = 50,
33867    VmstatPgrefillDma = 51,
33868    VmstatPgrefillNormal = 52,
33869    VmstatPgrefillMovable = 53,
33870    VmstatPgstealKswapdDma = 54,
33871    VmstatPgstealKswapdNormal = 55,
33872    VmstatPgstealKswapdMovable = 56,
33873    VmstatPgstealDirectDma = 57,
33874    VmstatPgstealDirectNormal = 58,
33875    VmstatPgstealDirectMovable = 59,
33876    VmstatPgscanKswapdDma = 60,
33877    VmstatPgscanKswapdNormal = 61,
33878    VmstatPgscanKswapdMovable = 62,
33879    VmstatPgscanDirectDma = 63,
33880    VmstatPgscanDirectNormal = 64,
33881    VmstatPgscanDirectMovable = 65,
33882    VmstatPgscanDirectThrottle = 66,
33883    VmstatPginodesteal = 67,
33884    VmstatSlabsScanned = 68,
33885    VmstatKswapdInodesteal = 69,
33886    VmstatKswapdLowWmarkHitQuickly = 70,
33887    VmstatKswapdHighWmarkHitQuickly = 71,
33888    VmstatPageoutrun = 72,
33889    VmstatAllocstall = 73,
33890    VmstatPgrotated = 74,
33891    VmstatDropPagecache = 75,
33892    VmstatDropSlab = 76,
33893    VmstatPgmigrateSuccess = 77,
33894    VmstatPgmigrateFail = 78,
33895    VmstatCompactMigrateScanned = 79,
33896    VmstatCompactFreeScanned = 80,
33897    VmstatCompactIsolated = 81,
33898    VmstatCompactStall = 82,
33899    VmstatCompactFail = 83,
33900    VmstatCompactSuccess = 84,
33901    VmstatCompactDaemonWake = 85,
33902    VmstatUnevictablePgsCulled = 86,
33903    VmstatUnevictablePgsScanned = 87,
33904    VmstatUnevictablePgsRescued = 88,
33905    VmstatUnevictablePgsMlocked = 89,
33906    VmstatUnevictablePgsMunlocked = 90,
33907    VmstatUnevictablePgsCleared = 91,
33908    VmstatUnevictablePgsStranded = 92,
33909    VmstatNrZspages = 93,
33910    VmstatNrIonHeap = 94,
33911    VmstatNrGpuHeap = 95,
33912    VmstatAllocstallDma = 96,
33913    VmstatAllocstallMovable = 97,
33914    VmstatAllocstallNormal = 98,
33915    VmstatCompactDaemonFreeScanned = 99,
33916    VmstatCompactDaemonMigrateScanned = 100,
33917    VmstatNrFastrpc = 101,
33918    VmstatNrIndirectlyReclaimable = 102,
33919    VmstatNrIonHeapPool = 103,
33920    VmstatNrKernelMiscReclaimable = 104,
33921    VmstatNrShadowCallStackBytes = 105,
33922    VmstatNrShmemHugepages = 106,
33923    VmstatNrShmemPmdmapped = 107,
33924    VmstatNrUnreclaimablePages = 108,
33925    VmstatNrZoneActiveAnon = 109,
33926    VmstatNrZoneActiveFile = 110,
33927    VmstatNrZoneInactiveAnon = 111,
33928    VmstatNrZoneInactiveFile = 112,
33929    VmstatNrZoneUnevictable = 113,
33930    VmstatNrZoneWritePending = 114,
33931    VmstatOomKill = 115,
33932    VmstatPglazyfree = 116,
33933    VmstatPglazyfreed = 117,
33934    VmstatPgrefill = 118,
33935    VmstatPgscanDirect = 119,
33936    VmstatPgscanKswapd = 120,
33937    VmstatPgskipDma = 121,
33938    VmstatPgskipMovable = 122,
33939    VmstatPgskipNormal = 123,
33940    VmstatPgstealDirect = 124,
33941    VmstatPgstealKswapd = 125,
33942    VmstatSwapRa = 126,
33943    VmstatSwapRaHit = 127,
33944    VmstatWorkingsetRestore = 128,
33945    VmstatAllocstallDevice = 129,
33946    VmstatAllocstallDma32 = 130,
33947    VmstatBalloonDeflate = 131,
33948    VmstatBalloonInflate = 132,
33949    VmstatBalloonMigrate = 133,
33950    VmstatCmaAllocFail = 134,
33951    VmstatCmaAllocSuccess = 135,
33952    VmstatNrFileHugepages = 136,
33953    VmstatNrFilePmdmapped = 137,
33954    VmstatNrFollPinAcquired = 138,
33955    VmstatNrFollPinReleased = 139,
33956    VmstatNrSecPageTablePages = 140,
33957    VmstatNrShadowCallStack = 141,
33958    VmstatNrSwapcached = 142,
33959    VmstatNrThrottledWritten = 143,
33960    VmstatPgallocDevice = 144,
33961    VmstatPgallocDma32 = 145,
33962    VmstatPgdemoteDirect = 146,
33963    VmstatPgdemoteKswapd = 147,
33964    VmstatPgreuse = 148,
33965    VmstatPgscanAnon = 149,
33966    VmstatPgscanFile = 150,
33967    VmstatPgskipDevice = 151,
33968    VmstatPgskipDma32 = 152,
33969    VmstatPgstealAnon = 153,
33970    VmstatPgstealFile = 154,
33971    VmstatThpCollapseAlloc = 155,
33972    VmstatThpCollapseAllocFailed = 156,
33973    VmstatThpDeferredSplitPage = 157,
33974    VmstatThpFaultAlloc = 158,
33975    VmstatThpFaultFallback = 159,
33976    VmstatThpFaultFallbackCharge = 160,
33977    VmstatThpFileAlloc = 161,
33978    VmstatThpFileFallback = 162,
33979    VmstatThpFileFallbackCharge = 163,
33980    VmstatThpFileMapped = 164,
33981    VmstatThpMigrationFail = 165,
33982    VmstatThpMigrationSplit = 166,
33983    VmstatThpMigrationSuccess = 167,
33984    VmstatThpScanExceedNonePte = 168,
33985    VmstatThpScanExceedSharePte = 169,
33986    VmstatThpScanExceedSwapPte = 170,
33987    VmstatThpSplitPage = 171,
33988    VmstatThpSplitPageFailed = 172,
33989    VmstatThpSplitPmd = 173,
33990    VmstatThpSwpout = 174,
33991    VmstatThpSwpoutFallback = 175,
33992    VmstatThpZeroPageAlloc = 176,
33993    VmstatThpZeroPageAllocFailed = 177,
33994    VmstatVmaLockAbort = 178,
33995    VmstatVmaLockMiss = 179,
33996    VmstatVmaLockRetry = 180,
33997    VmstatVmaLockSuccess = 181,
33998    VmstatWorkingsetActivateAnon = 182,
33999    VmstatWorkingsetActivateFile = 183,
34000    VmstatWorkingsetNodes = 184,
34001    VmstatWorkingsetRefaultAnon = 185,
34002    VmstatWorkingsetRefaultFile = 186,
34003    VmstatWorkingsetRestoreAnon = 187,
34004    VmstatWorkingsetRestoreFile = 188,
34005}
34006impl VmstatCounters {
34007    /// String value of the enum field names used in the ProtoBuf definition.
34008    ///
34009    /// The values are not transformed in any way and thus are considered stable
34010    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34011    pub fn as_str_name(&self) -> &'static str {
34012        match self {
34013            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
34014            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
34015            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
34016            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
34017            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
34018            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
34019            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
34020            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
34021            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
34022            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
34023            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
34024            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
34025            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
34026            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
34027            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
34028            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
34029            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
34030            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
34031            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
34032            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
34033            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
34034            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
34035            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
34036            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
34037            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
34038            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
34039            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
34040            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
34041            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
34042            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
34043            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
34044            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
34045            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
34046            Self::VmstatNrAnonTransparentHugepages => {
34047                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
34048            }
34049            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
34050            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
34051            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
34052            Self::VmstatNrDirtyBackgroundThreshold => {
34053                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
34054            }
34055            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
34056            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
34057            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
34058            Self::VmstatPswpin => "VMSTAT_PSWPIN",
34059            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
34060            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
34061            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
34062            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
34063            Self::VmstatPgfree => "VMSTAT_PGFREE",
34064            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
34065            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
34066            Self::VmstatPgfault => "VMSTAT_PGFAULT",
34067            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
34068            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
34069            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
34070            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
34071            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
34072            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
34073            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
34074            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
34075            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
34076            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
34077            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
34078            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
34079            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
34080            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
34081            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
34082            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
34083            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
34084            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
34085            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
34086            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
34087            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
34088            Self::VmstatKswapdHighWmarkHitQuickly => {
34089                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
34090            }
34091            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
34092            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
34093            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
34094            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
34095            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
34096            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
34097            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
34098            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
34099            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
34100            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
34101            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
34102            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
34103            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
34104            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
34105            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
34106            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
34107            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
34108            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
34109            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
34110            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
34111            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
34112            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
34113            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
34114            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
34115            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
34116            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
34117            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
34118            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
34119            Self::VmstatCompactDaemonMigrateScanned => {
34120                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
34121            }
34122            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
34123            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
34124            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
34125            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
34126            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
34127            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
34128            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
34129            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
34130            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
34131            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
34132            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
34133            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
34134            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
34135            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
34136            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
34137            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
34138            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
34139            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
34140            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
34141            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
34142            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
34143            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
34144            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
34145            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
34146            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
34147            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
34148            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
34149            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
34150            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
34151            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
34152            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
34153            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
34154            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
34155            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
34156            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
34157            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
34158            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
34159            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
34160            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
34161            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
34162            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
34163            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
34164            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
34165            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
34166            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
34167            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
34168            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
34169            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
34170            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
34171            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
34172            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
34173            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
34174            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
34175            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
34176            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
34177            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
34178            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
34179            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
34180            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
34181            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
34182            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
34183            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
34184            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
34185            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
34186            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
34187            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
34188            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
34189            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
34190            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
34191            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
34192            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
34193            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
34194            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
34195            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
34196            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
34197            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
34198            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
34199            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
34200            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
34201            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
34202            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
34203            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
34204            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
34205            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
34206            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
34207            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
34208            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
34209            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
34210        }
34211    }
34212    /// Creates an enum from field names used in the ProtoBuf definition.
34213    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34214        match value {
34215            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
34216            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
34217            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
34218            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
34219            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
34220            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
34221            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
34222            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
34223            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
34224            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
34225            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
34226            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
34227            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
34228            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
34229            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
34230            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
34231            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
34232            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
34233            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
34234            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
34235            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
34236            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
34237            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
34238                Some(Self::VmstatNrVmscanImmediateReclaim)
34239            }
34240            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
34241            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
34242            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
34243            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
34244            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
34245            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
34246            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
34247            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
34248            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
34249            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
34250            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
34251                Some(Self::VmstatNrAnonTransparentHugepages)
34252            }
34253            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
34254            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
34255            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
34256            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
34257                Some(Self::VmstatNrDirtyBackgroundThreshold)
34258            }
34259            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
34260            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
34261            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
34262            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
34263            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
34264            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
34265            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
34266            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
34267            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
34268            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
34269            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
34270            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
34271            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
34272            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
34273            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
34274            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
34275            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
34276            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
34277            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
34278            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
34279            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
34280            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
34281            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
34282            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
34283            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
34284            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
34285            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
34286            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
34287            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
34288            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
34289            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
34290            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
34291            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
34292                Some(Self::VmstatKswapdLowWmarkHitQuickly)
34293            }
34294            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
34295                Some(Self::VmstatKswapdHighWmarkHitQuickly)
34296            }
34297            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
34298            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
34299            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
34300            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
34301            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
34302            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
34303            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
34304            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
34305            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
34306            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
34307            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
34308            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
34309            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
34310            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
34311            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
34312            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
34313            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
34314            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
34315            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
34316                Some(Self::VmstatUnevictablePgsMunlocked)
34317            }
34318            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
34319            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
34320            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
34321            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
34322            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
34323            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
34324            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
34325            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
34326            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
34327                Some(Self::VmstatCompactDaemonFreeScanned)
34328            }
34329            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
34330                Some(Self::VmstatCompactDaemonMigrateScanned)
34331            }
34332            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
34333            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
34334                Some(Self::VmstatNrIndirectlyReclaimable)
34335            }
34336            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
34337            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
34338                Some(Self::VmstatNrKernelMiscReclaimable)
34339            }
34340            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
34341                Some(Self::VmstatNrShadowCallStackBytes)
34342            }
34343            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
34344            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
34345            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
34346            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
34347            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
34348            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
34349            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
34350            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
34351            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
34352            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
34353            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
34354            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
34355            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
34356            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
34357            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
34358            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
34359            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
34360            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
34361            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
34362            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
34363            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
34364            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
34365            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
34366            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
34367            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
34368            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
34369            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
34370            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
34371            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
34372            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
34373            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
34374            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
34375            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
34376            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
34377            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
34378            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
34379            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
34380            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
34381            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
34382            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
34383            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
34384            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
34385            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
34386            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
34387            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
34388            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
34389            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
34390            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
34391            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
34392            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
34393            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
34394                Some(Self::VmstatThpCollapseAllocFailed)
34395            }
34396            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
34397            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
34398            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
34399            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
34400                Some(Self::VmstatThpFaultFallbackCharge)
34401            }
34402            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
34403            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
34404            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
34405            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
34406            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
34407            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
34408            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
34409            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
34410            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
34411            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
34412            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
34413            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
34414            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
34415            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
34416            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
34417            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
34418            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
34419                Some(Self::VmstatThpZeroPageAllocFailed)
34420            }
34421            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
34422            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
34423            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
34424            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
34425            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
34426            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
34427            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
34428            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
34429            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
34430            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
34431            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
34432            _ => None,
34433        }
34434    }
34435}
34436#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34437#[repr(i32)]
34438pub enum FtraceParseStatus {
34439    FtraceStatusUnspecified = 0,
34440    /// Not written, used for convenience of implementation:
34441    FtraceStatusOk = 1,
34442    /// Issues with reading data out of the ftrace ring buffer:
34443    FtraceStatusUnexpectedReadError = 2,
34444    FtraceStatusPartialPageRead = 3,
34445    /// Ring buffer binary data not matching our understanding of the layout:
34446    FtraceStatusAbiInvalidPageHeader = 4,
34447    FtraceStatusAbiShortEventHeader = 5,
34448    FtraceStatusAbiNullPadding = 6,
34449    FtraceStatusAbiShortPaddingLength = 7,
34450    FtraceStatusAbiInvalidPaddingLength = 8,
34451    FtraceStatusAbiShortTimeExtend = 9,
34452    FtraceStatusAbiShortTimeStamp = 10,
34453    FtraceStatusAbiShortDataLength = 11,
34454    FtraceStatusAbiZeroDataLength = 12,
34455    FtraceStatusAbiInvalidDataLength = 13,
34456    FtraceStatusAbiShortEventId = 14,
34457    FtraceStatusAbiEndOverflow = 15,
34458    /// Issues with parsing the event payload:
34459    FtraceStatusShortCompactEvent = 16,
34460    FtraceStatusInvalidEvent = 17,
34461}
34462impl FtraceParseStatus {
34463    /// String value of the enum field names used in the ProtoBuf definition.
34464    ///
34465    /// The values are not transformed in any way and thus are considered stable
34466    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34467    pub fn as_str_name(&self) -> &'static str {
34468        match self {
34469            Self::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
34470            Self::FtraceStatusOk => "FTRACE_STATUS_OK",
34471            Self::FtraceStatusUnexpectedReadError => {
34472                "FTRACE_STATUS_UNEXPECTED_READ_ERROR"
34473            }
34474            Self::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
34475            Self::FtraceStatusAbiInvalidPageHeader => {
34476                "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER"
34477            }
34478            Self::FtraceStatusAbiShortEventHeader => {
34479                "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER"
34480            }
34481            Self::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
34482            Self::FtraceStatusAbiShortPaddingLength => {
34483                "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH"
34484            }
34485            Self::FtraceStatusAbiInvalidPaddingLength => {
34486                "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH"
34487            }
34488            Self::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
34489            Self::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
34490            Self::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
34491            Self::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
34492            Self::FtraceStatusAbiInvalidDataLength => {
34493                "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH"
34494            }
34495            Self::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
34496            Self::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
34497            Self::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
34498            Self::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
34499        }
34500    }
34501    /// Creates an enum from field names used in the ProtoBuf definition.
34502    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34503        match value {
34504            "FTRACE_STATUS_UNSPECIFIED" => Some(Self::FtraceStatusUnspecified),
34505            "FTRACE_STATUS_OK" => Some(Self::FtraceStatusOk),
34506            "FTRACE_STATUS_UNEXPECTED_READ_ERROR" => {
34507                Some(Self::FtraceStatusUnexpectedReadError)
34508            }
34509            "FTRACE_STATUS_PARTIAL_PAGE_READ" => Some(Self::FtraceStatusPartialPageRead),
34510            "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER" => {
34511                Some(Self::FtraceStatusAbiInvalidPageHeader)
34512            }
34513            "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER" => {
34514                Some(Self::FtraceStatusAbiShortEventHeader)
34515            }
34516            "FTRACE_STATUS_ABI_NULL_PADDING" => Some(Self::FtraceStatusAbiNullPadding),
34517            "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH" => {
34518                Some(Self::FtraceStatusAbiShortPaddingLength)
34519            }
34520            "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH" => {
34521                Some(Self::FtraceStatusAbiInvalidPaddingLength)
34522            }
34523            "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND" => {
34524                Some(Self::FtraceStatusAbiShortTimeExtend)
34525            }
34526            "FTRACE_STATUS_ABI_SHORT_TIME_STAMP" => {
34527                Some(Self::FtraceStatusAbiShortTimeStamp)
34528            }
34529            "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH" => {
34530                Some(Self::FtraceStatusAbiShortDataLength)
34531            }
34532            "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH" => {
34533                Some(Self::FtraceStatusAbiZeroDataLength)
34534            }
34535            "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH" => {
34536                Some(Self::FtraceStatusAbiInvalidDataLength)
34537            }
34538            "FTRACE_STATUS_ABI_SHORT_EVENT_ID" => Some(Self::FtraceStatusAbiShortEventId),
34539            "FTRACE_STATUS_ABI_END_OVERFLOW" => Some(Self::FtraceStatusAbiEndOverflow),
34540            "FTRACE_STATUS_SHORT_COMPACT_EVENT" => {
34541                Some(Self::FtraceStatusShortCompactEvent)
34542            }
34543            "FTRACE_STATUS_INVALID_EVENT" => Some(Self::FtraceStatusInvalidEvent),
34544            _ => None,
34545        }
34546    }
34547}
34548#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34549#[repr(i32)]
34550pub enum FtraceClock {
34551    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
34552    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
34553    Unspecified = 0,
34554    Unknown = 1,
34555    Global = 2,
34556    Local = 3,
34557    MonoRaw = 4,
34558}
34559impl FtraceClock {
34560    /// String value of the enum field names used in the ProtoBuf definition.
34561    ///
34562    /// The values are not transformed in any way and thus are considered stable
34563    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34564    pub fn as_str_name(&self) -> &'static str {
34565        match self {
34566            Self::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
34567            Self::Unknown => "FTRACE_CLOCK_UNKNOWN",
34568            Self::Global => "FTRACE_CLOCK_GLOBAL",
34569            Self::Local => "FTRACE_CLOCK_LOCAL",
34570            Self::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
34571        }
34572    }
34573    /// Creates an enum from field names used in the ProtoBuf definition.
34574    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34575        match value {
34576            "FTRACE_CLOCK_UNSPECIFIED" => Some(Self::Unspecified),
34577            "FTRACE_CLOCK_UNKNOWN" => Some(Self::Unknown),
34578            "FTRACE_CLOCK_GLOBAL" => Some(Self::Global),
34579            "FTRACE_CLOCK_LOCAL" => Some(Self::Local),
34580            "FTRACE_CLOCK_MONO_RAW" => Some(Self::MonoRaw),
34581            _ => None,
34582        }
34583    }
34584}
34585#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34586#[repr(i32)]
34587pub enum ChromeCompositorSchedulerAction {
34588    CcSchedulerActionUnspecified = 0,
34589    CcSchedulerActionNone = 1,
34590    CcSchedulerActionSendBeginMainFrame = 2,
34591    CcSchedulerActionCommit = 3,
34592    CcSchedulerActionActivateSyncTree = 4,
34593    CcSchedulerActionDrawIfPossible = 5,
34594    CcSchedulerActionDrawForced = 6,
34595    CcSchedulerActionDrawAbort = 7,
34596    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
34597    CcSchedulerActionPrepareTiles = 9,
34598    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
34599    CcSchedulerActionPerformImplSideInvalidation = 11,
34600    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
34601    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
34602}
34603impl ChromeCompositorSchedulerAction {
34604    /// String value of the enum field names used in the ProtoBuf definition.
34605    ///
34606    /// The values are not transformed in any way and thus are considered stable
34607    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34608    pub fn as_str_name(&self) -> &'static str {
34609        match self {
34610            Self::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
34611            Self::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
34612            Self::CcSchedulerActionSendBeginMainFrame => {
34613                "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME"
34614            }
34615            Self::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
34616            Self::CcSchedulerActionActivateSyncTree => {
34617                "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE"
34618            }
34619            Self::CcSchedulerActionDrawIfPossible => {
34620                "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE"
34621            }
34622            Self::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
34623            Self::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
34624            Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation => {
34625                "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION"
34626            }
34627            Self::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
34628            Self::CcSchedulerActionInvalidateLayerTreeFrameSink => {
34629                "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK"
34630            }
34631            Self::CcSchedulerActionPerformImplSideInvalidation => {
34632                "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION"
34633            }
34634            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => {
34635                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL"
34636            }
34637            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => {
34638                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON"
34639            }
34640        }
34641    }
34642    /// Creates an enum from field names used in the ProtoBuf definition.
34643    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34644        match value {
34645            "CC_SCHEDULER_ACTION_UNSPECIFIED" => Some(Self::CcSchedulerActionUnspecified),
34646            "CC_SCHEDULER_ACTION_NONE" => Some(Self::CcSchedulerActionNone),
34647            "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME" => {
34648                Some(Self::CcSchedulerActionSendBeginMainFrame)
34649            }
34650            "CC_SCHEDULER_ACTION_COMMIT" => Some(Self::CcSchedulerActionCommit),
34651            "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE" => {
34652                Some(Self::CcSchedulerActionActivateSyncTree)
34653            }
34654            "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE" => {
34655                Some(Self::CcSchedulerActionDrawIfPossible)
34656            }
34657            "CC_SCHEDULER_ACTION_DRAW_FORCED" => Some(Self::CcSchedulerActionDrawForced),
34658            "CC_SCHEDULER_ACTION_DRAW_ABORT" => Some(Self::CcSchedulerActionDrawAbort),
34659            "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION" => {
34660                Some(Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation)
34661            }
34662            "CC_SCHEDULER_ACTION_PREPARE_TILES" => {
34663                Some(Self::CcSchedulerActionPrepareTiles)
34664            }
34665            "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK" => {
34666                Some(Self::CcSchedulerActionInvalidateLayerTreeFrameSink)
34667            }
34668            "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION" => {
34669                Some(Self::CcSchedulerActionPerformImplSideInvalidation)
34670            }
34671            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL" => {
34672                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil)
34673            }
34674            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON" => {
34675                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon)
34676            }
34677            _ => None,
34678        }
34679    }
34680}
34681/// RAIL Mode is an indication of the kind of work that a Renderer is currently
34682/// performing which is in turn used to prioritise work accordingly.
34683/// A fuller description of these modes can be found <https://web.dev/rail/>
34684#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34685#[repr(i32)]
34686pub enum ChromeRailMode {
34687    RailModeNone = 0,
34688    RailModeResponse = 1,
34689    RailModeAnimation = 2,
34690    RailModeIdle = 3,
34691    RailModeLoad = 4,
34692}
34693impl ChromeRailMode {
34694    /// String value of the enum field names used in the ProtoBuf definition.
34695    ///
34696    /// The values are not transformed in any way and thus are considered stable
34697    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34698    pub fn as_str_name(&self) -> &'static str {
34699        match self {
34700            Self::RailModeNone => "RAIL_MODE_NONE",
34701            Self::RailModeResponse => "RAIL_MODE_RESPONSE",
34702            Self::RailModeAnimation => "RAIL_MODE_ANIMATION",
34703            Self::RailModeIdle => "RAIL_MODE_IDLE",
34704            Self::RailModeLoad => "RAIL_MODE_LOAD",
34705        }
34706    }
34707    /// Creates an enum from field names used in the ProtoBuf definition.
34708    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34709        match value {
34710            "RAIL_MODE_NONE" => Some(Self::RailModeNone),
34711            "RAIL_MODE_RESPONSE" => Some(Self::RailModeResponse),
34712            "RAIL_MODE_ANIMATION" => Some(Self::RailModeAnimation),
34713            "RAIL_MODE_IDLE" => Some(Self::RailModeIdle),
34714            "RAIL_MODE_LOAD" => Some(Self::RailModeLoad),
34715            _ => None,
34716        }
34717    }
34718}