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/// Data source that controls the system properties used to guard initialization
1058/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1059/// processes like SurfaceFlinger.
1060///
1061/// This data source only tells Skia to initialized the Perfetto SDK and start
1062/// routing data to the Track Event system instead of ATrace. For those events
1063/// to actually show up in a trace, the track_event data source must be used as
1064/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1065/// processes may need to be restarted for Skia to revert to using ATrace if
1066/// Track Events are no longer desired.
1067///
1068/// In addition to switching Skia to use Perfetto's track_event data source,
1069/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1070/// internal tracing constraints and allows the track_event config to specify
1071/// which categories should be traced. Filtering to the "skia.always" category
1072/// *tag* in a track_event config can be used to re-enable the standard
1073/// constraints typically used with ATrace.
1074///
1075/// Data source name: android.sdk_sysprop_guard
1076/// Introduced in Android 14 (U) QPR1.
1077/// Next id: 4
1078#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1079pub struct AndroidSdkSyspropGuardConfig {
1080    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1081    /// integration with the track_event data source in RenderEngine.
1082    /// If false or omitted, the simpler ATrace fallback is used.
1083    ///
1084    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1085    /// restarted.
1086    ///
1087    /// Specifically this sets the following system properties:
1088    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1089    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1090    ///
1091    /// Does not affect actual track_event data *collection*, which must be
1092    /// configured separately.
1093    #[prost(bool, optional, tag = "1")]
1094    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1095    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1096    /// with the track_event data source. hwui_package_name_filter
1097    /// can be used to control which apps are affected.
1098    /// If false or omitted, the simpler ATrace fallback is used.
1099    ///
1100    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1101    /// restarted.
1102    ///
1103    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1104    /// If filtering is NOT set, this controls these GLOBAL system properties:
1105    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1106    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1107    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1108    /// for each package listed in the filter:
1109    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1110    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1111    ///
1112    /// Does not affect actual track_event data *collection*, which must be
1113    /// configured separately.
1114    #[prost(bool, optional, tag = "2")]
1115    pub hwui_skia_track_events: ::core::option::Option<bool>,
1116    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1117    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1118    #[prost(string, repeated, tag = "3")]
1119    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1120        ::prost::alloc::string::String,
1121    >,
1122}
1123/// Data source that polls for system properties.
1124#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1125pub struct AndroidSystemPropertyConfig {
1126    /// Frequency of polling. If absent the state will be recorded once, at the
1127    /// start of the trace.
1128    /// This is required to be > 100ms to avoid excessive CPU usage.
1129    #[prost(uint32, optional, tag = "1")]
1130    pub poll_ms: ::core::option::Option<u32>,
1131    /// Properties to poll. All property names must start with "debug.tracing.".
1132    #[prost(string, repeated, tag = "2")]
1133    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1134}
1135/// Configuration for the android.app_wakelocks data source.
1136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1137pub struct AppWakelocksConfig {
1138    /// Specifies the delay (in milliseconds) after which the data source will
1139    /// attempt to write events. Writing less frequently reduces the trace size by
1140    /// making better use of the packed arrays and reducing the total number of
1141    /// TracePackets needed (which each have dozens of bytes of overhead). The
1142    /// suggested delay is 5000ms.
1143    #[prost(int32, optional, tag = "1")]
1144    pub write_delay_ms: ::core::option::Option<i32>,
1145    /// When set, wakelocks held for less than this amount of time are filtered
1146    /// from the resulting trace. Note: duration is computed by matching wakelocks
1147    /// with identical attributes, not by tracking the underlying objects. The
1148    /// threshold should be < the trace's flush_period_ms.
1149    #[prost(int32, optional, tag = "2")]
1150    pub filter_duration_below_ms: ::core::option::Option<i32>,
1151    /// When true, the owner_pid is dropped from the resulting output, reducing the
1152    /// size of the interning tables.
1153    #[prost(bool, optional, tag = "3")]
1154    pub drop_owner_pid: ::core::option::Option<bool>,
1155}
1156/// Data source that records CPU per UID data.
1157#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1158pub struct CpuPerUidConfig {
1159    /// Record at this frequency.
1160    #[prost(uint32, optional, tag = "1")]
1161    pub poll_ms: ::core::option::Option<u32>,
1162}
1163/// Config for the "android.display.video" data source. Unset/0 fields use
1164/// the producer's default.
1165#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1166pub struct DisplayVideoConfig {
1167    /// Scale applied to each display's resolution before capture (0.25 =
1168    /// quarter size).
1169    #[prost(float, optional, tag = "1")]
1170    pub scale: ::core::option::Option<f32>,
1171    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
1172    pub format: ::core::option::Option<i32>,
1173    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
1174    #[prost(uint32, optional, tag = "3")]
1175    pub key_frame_interval_secs: ::core::option::Option<u32>,
1176    /// Per-display cap on emitted bytes. On reaching it the stream is torn
1177    /// down with a VideoFrameError (SIZE_CAP_HIT).
1178    #[prost(uint64, optional, tag = "4")]
1179    pub max_stream_size_bytes: ::core::option::Option<u64>,
1180    /// Target video encoder bitrate in bits per second. Controls quality vs
1181    /// trace size at a fixed resolution (unlike `scale`, which changes the
1182    /// resolution). Unset lets the producer pick a default from the (scaled)
1183    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
1184    #[prost(uint32, optional, tag = "5")]
1185    pub bitrate_bps: ::core::option::Option<u32>,
1186}
1187/// Nested message and enum types in `DisplayVideoConfig`.
1188pub mod display_video_config {
1189    #[derive(
1190        Clone,
1191        Copy,
1192        Debug,
1193        PartialEq,
1194        Eq,
1195        Hash,
1196        PartialOrd,
1197        Ord,
1198        ::prost::Enumeration
1199    )]
1200    #[repr(i32)]
1201    pub enum Format {
1202        /// Default (H.264).
1203        Unspecified = 0,
1204        H264 = 1,
1205        Hevc = 2,
1206    }
1207    impl Format {
1208        /// String value of the enum field names used in the ProtoBuf definition.
1209        ///
1210        /// The values are not transformed in any way and thus are considered stable
1211        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1212        pub fn as_str_name(&self) -> &'static str {
1213            match self {
1214                Self::Unspecified => "FORMAT_UNSPECIFIED",
1215                Self::H264 => "FORMAT_H264",
1216                Self::Hevc => "FORMAT_HEVC",
1217            }
1218        }
1219        /// Creates an enum from field names used in the ProtoBuf definition.
1220        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1221            match value {
1222                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1223                "FORMAT_H264" => Some(Self::H264),
1224                "FORMAT_HEVC" => Some(Self::Hevc),
1225                _ => None,
1226            }
1227        }
1228    }
1229}
1230/// Custom configuration for the "android.inputmethod" data source.
1231#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1232pub struct InputMethodConfig {
1233    /// If true, enables tracing in the clients.
1234    #[prost(bool, optional, tag = "1")]
1235    pub client: ::core::option::Option<bool>,
1236    /// If true, enables tracing in InputMethodService.
1237    #[prost(bool, optional, tag = "2")]
1238    pub service: ::core::option::Option<bool>,
1239    /// If true, enables tracing in InputMethodManagerService.
1240    #[prost(bool, optional, tag = "3")]
1241    pub manager_service: ::core::option::Option<bool>,
1242}
1243/// Data source that records kernel (and native) wakelock data.
1244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1245pub struct KernelWakelocksConfig {
1246    /// Record at this frequency.
1247    #[prost(uint32, optional, tag = "1")]
1248    pub poll_ms: ::core::option::Option<u32>,
1249}
1250/// Network tracing data source that records details on all packets sent or
1251/// received by the network.
1252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1253pub struct NetworkPacketTraceConfig {
1254    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1255    /// ring buffer. The polling interval should be such that the ring buffer is
1256    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1257    /// The minimum polling rate is 100ms (values below this are ignored).
1258    /// Introduced in Android 14 (U).
1259    #[prost(uint32, optional, tag = "1")]
1260    pub poll_ms: ::core::option::Option<u32>,
1261    /// The aggregation_threshold is the number of packets at which an event will
1262    /// switch from per-packet details to aggregate details. For example, a value
1263    /// of 50 means that if a particular event (grouped by the unique combinations
1264    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1265    /// packets, the exact timestamp and length are recorded for each packet. If
1266    /// there were 50 or more packets in an event, it would only record the total
1267    /// duration, packets, and length. A value of zero or unspecified will always
1268    /// / record per-packet details. A value of 1 always records aggregate details.
1269    #[prost(uint32, optional, tag = "2")]
1270    pub aggregation_threshold: ::core::option::Option<u32>,
1271    /// Specifies the maximum number of packet contexts to intern at a time. This
1272    /// prevents the interning table from growing too large and controls whether
1273    /// interning is enabled or disabled (a value of zero disables interning and
1274    /// is the default). When a data sources interning table reaches this amount,
1275    /// packet contexts will be inlined into NetworkPacketEvents.
1276    #[prost(uint32, optional, tag = "3")]
1277    pub intern_limit: ::core::option::Option<u32>,
1278    /// The following fields specify whether certain fields should be dropped from
1279    /// the output. Dropping fields improves normalization results, reduces the
1280    /// size of the interning table, and slightly reduces event size.
1281    #[prost(bool, optional, tag = "4")]
1282    pub drop_local_port: ::core::option::Option<bool>,
1283    #[prost(bool, optional, tag = "5")]
1284    pub drop_remote_port: ::core::option::Option<bool>,
1285    #[prost(bool, optional, tag = "6")]
1286    pub drop_tcp_flags: ::core::option::Option<bool>,
1287}
1288/// Data source that lists details (such as version code) about packages on an
1289/// Android device.
1290#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1291pub struct PackagesListConfig {
1292    /// If not empty, emit info about only the following list of package names
1293    /// (exact match, no regex). Can be combined with
1294    /// |package_name_regex_filter|: a package is included if it matches either
1295    /// filter. If both filters are empty, emit info about all packages.
1296    #[prost(string, repeated, tag = "1")]
1297    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1298    /// If not empty, emit info about only the packages whose names match any of
1299    /// the following regexes (full match, not partial). Can be combined with
1300    /// |package_name_filter|: a package is included if it matches either filter.
1301    /// If both filters are empty, emit info about all packages.
1302    /// This field was introduced in Android 26Q2 (Perfetto v55).
1303    #[prost(string, repeated, tag = "3")]
1304    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1305        ::prost::alloc::string::String,
1306    >,
1307    /// If present and non-zero, the data source will periodically poll for CPU
1308    /// use by packages and only emit results for those that it sees. If absent,
1309    /// the data source will emit results for all packages at startup. The package
1310    /// name filters apply either way.
1311    #[prost(uint32, optional, tag = "2")]
1312    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1313}
1314/// Data source that records events from the modem.
1315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1316pub struct PixelModemConfig {
1317    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1318    pub event_group: ::core::option::Option<i32>,
1319    /// If set, record only events with these hashes.
1320    #[prost(int64, repeated, packed = "false", tag = "2")]
1321    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1322    /// If set and allow_list is not set, deny events with these hashes.
1323    #[prost(int64, repeated, packed = "false", tag = "3")]
1324    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1325}
1326/// Nested message and enum types in `PixelModemConfig`.
1327pub mod pixel_modem_config {
1328    /// Event group to record, as defined by the modem.
1329    #[derive(
1330        Clone,
1331        Copy,
1332        Debug,
1333        PartialEq,
1334        Eq,
1335        Hash,
1336        PartialOrd,
1337        Ord,
1338        ::prost::Enumeration
1339    )]
1340    #[repr(i32)]
1341    pub enum EventGroup {
1342        Unknown = 0,
1343        /// Events suitable for low bandwidth tracing only.
1344        LowBandwidth = 1,
1345        /// Events suitable for high and low bandwidth tracing.
1346        HighAndLowBandwidth = 2,
1347    }
1348    impl EventGroup {
1349        /// String value of the enum field names used in the ProtoBuf definition.
1350        ///
1351        /// The values are not transformed in any way and thus are considered stable
1352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1353        pub fn as_str_name(&self) -> &'static str {
1354            match self {
1355                Self::Unknown => "EVENT_GROUP_UNKNOWN",
1356                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1357                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1358            }
1359        }
1360        /// Creates an enum from field names used in the ProtoBuf definition.
1361        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1362            match value {
1363                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
1364                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
1365                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
1366                _ => None,
1367            }
1368        }
1369    }
1370}
1371/// Custom configuration for the "android.protolog" data source.
1372/// ProtoLog is a logging mechanism that is intented to be more efficient than
1373/// logcat. This configures what logs to capture in the tracing instance.
1374#[derive(Clone, PartialEq, ::prost::Message)]
1375pub struct ProtoLogConfig {
1376    /// Specified the configurations for each of the logging groups. If none is
1377    /// specified for a group the defaults will be used.
1378    #[prost(message, repeated, tag = "1")]
1379    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1380    /// Specified what tracing mode to use for the tracing instance.
1381    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
1382    pub tracing_mode: ::core::option::Option<i32>,
1383    /// If set, any message with log level higher than this level (inclusive) will
1384    /// be traced. Group overrides take precedence over this value.
1385    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
1386    pub default_log_from_level: ::core::option::Option<i32>,
1387}
1388/// Nested message and enum types in `ProtoLogConfig`.
1389pub mod proto_log_config {
1390    #[derive(
1391        Clone,
1392        Copy,
1393        Debug,
1394        PartialEq,
1395        Eq,
1396        Hash,
1397        PartialOrd,
1398        Ord,
1399        ::prost::Enumeration
1400    )]
1401    #[repr(i32)]
1402    pub enum TracingMode {
1403        /// When using the DEFAULT tracing mode, only log groups and levels specified
1404        /// in the group_overrides are traced.
1405        Default = 0,
1406        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1407        /// traced, unless specified in the group_overrides.
1408        EnableAll = 1,
1409    }
1410    impl TracingMode {
1411        /// String value of the enum field names used in the ProtoBuf definition.
1412        ///
1413        /// The values are not transformed in any way and thus are considered stable
1414        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1415        pub fn as_str_name(&self) -> &'static str {
1416            match self {
1417                Self::Default => "DEFAULT",
1418                Self::EnableAll => "ENABLE_ALL",
1419            }
1420        }
1421        /// Creates an enum from field names used in the ProtoBuf definition.
1422        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1423            match value {
1424                "DEFAULT" => Some(Self::Default),
1425                "ENABLE_ALL" => Some(Self::EnableAll),
1426                _ => None,
1427            }
1428        }
1429    }
1430}
1431#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1432pub struct ProtoLogGroup {
1433    /// The ProtoLog group name this configuration entry applies to.
1434    #[prost(string, optional, tag = "1")]
1435    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1436    /// Specify the level from which to start capturing protologs.
1437    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1438    /// message will be traced.
1439    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
1440    pub log_from: ::core::option::Option<i32>,
1441    /// When set to true we will collect the stacktrace for each protolog message
1442    /// in this group that we are tracing.
1443    #[prost(bool, optional, tag = "3")]
1444    pub collect_stacktrace: ::core::option::Option<bool>,
1445}
1446/// Custom configuration for the "android.surfaceflinger.layers" data source.
1447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1448pub struct SurfaceFlingerLayersConfig {
1449    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
1450    pub mode: ::core::option::Option<i32>,
1451    #[prost(
1452        enumeration = "surface_flinger_layers_config::TraceFlag",
1453        repeated,
1454        packed = "false",
1455        tag = "2"
1456    )]
1457    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1458}
1459/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1460pub mod surface_flinger_layers_config {
1461    #[derive(
1462        Clone,
1463        Copy,
1464        Debug,
1465        PartialEq,
1466        Eq,
1467        Hash,
1468        PartialOrd,
1469        Ord,
1470        ::prost::Enumeration
1471    )]
1472    #[repr(i32)]
1473    pub enum Mode {
1474        Unspecified = 0,
1475        /// Trace layers snapshots. A snapshot is taken every time a layers change
1476        /// occurs.
1477        Active = 1,
1478        /// Generate layers snapshots from the transactions kept in the
1479        /// SurfaceFlinger's internal ring buffer.
1480        /// The layers snapshots generation occurs when this data source is flushed.
1481        Generated = 2,
1482        /// Trace a single layers snapshot.
1483        Dump = 3,
1484        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1485        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1486        /// when a bugreport is taken.
1487        GeneratedBugreportOnly = 4,
1488        /// Layer snapshots are generated by ProtoVM from layer patches
1489        Protovm = 5,
1490    }
1491    impl Mode {
1492        /// String value of the enum field names used in the ProtoBuf definition.
1493        ///
1494        /// The values are not transformed in any way and thus are considered stable
1495        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1496        pub fn as_str_name(&self) -> &'static str {
1497            match self {
1498                Self::Unspecified => "MODE_UNSPECIFIED",
1499                Self::Active => "MODE_ACTIVE",
1500                Self::Generated => "MODE_GENERATED",
1501                Self::Dump => "MODE_DUMP",
1502                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1503                Self::Protovm => "MODE_PROTOVM",
1504            }
1505        }
1506        /// Creates an enum from field names used in the ProtoBuf definition.
1507        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1508            match value {
1509                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1510                "MODE_ACTIVE" => Some(Self::Active),
1511                "MODE_GENERATED" => Some(Self::Generated),
1512                "MODE_DUMP" => Some(Self::Dump),
1513                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
1514                "MODE_PROTOVM" => Some(Self::Protovm),
1515                _ => None,
1516            }
1517        }
1518    }
1519    #[derive(
1520        Clone,
1521        Copy,
1522        Debug,
1523        PartialEq,
1524        Eq,
1525        Hash,
1526        PartialOrd,
1527        Ord,
1528        ::prost::Enumeration
1529    )]
1530    #[repr(i32)]
1531    pub enum TraceFlag {
1532        Unspecified = 0,
1533        Input = 2,
1534        Composition = 4,
1535        Extra = 8,
1536        Hwc = 16,
1537        Buffers = 32,
1538        VirtualDisplays = 64,
1539        /// INPUT | COMPOSITION | EXTRA
1540        All = 14,
1541    }
1542    impl TraceFlag {
1543        /// String value of the enum field names used in the ProtoBuf definition.
1544        ///
1545        /// The values are not transformed in any way and thus are considered stable
1546        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1547        pub fn as_str_name(&self) -> &'static str {
1548            match self {
1549                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1550                Self::Input => "TRACE_FLAG_INPUT",
1551                Self::Composition => "TRACE_FLAG_COMPOSITION",
1552                Self::Extra => "TRACE_FLAG_EXTRA",
1553                Self::Hwc => "TRACE_FLAG_HWC",
1554                Self::Buffers => "TRACE_FLAG_BUFFERS",
1555                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1556                Self::All => "TRACE_FLAG_ALL",
1557            }
1558        }
1559        /// Creates an enum from field names used in the ProtoBuf definition.
1560        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1561            match value {
1562                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
1563                "TRACE_FLAG_INPUT" => Some(Self::Input),
1564                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
1565                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
1566                "TRACE_FLAG_HWC" => Some(Self::Hwc),
1567                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
1568                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
1569                "TRACE_FLAG_ALL" => Some(Self::All),
1570                _ => None,
1571            }
1572        }
1573    }
1574}
1575/// Custom configuration for the "android.surfaceflinger.transactions" data
1576/// source.
1577#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1578pub struct SurfaceFlingerTransactionsConfig {
1579    #[prost(
1580        enumeration = "surface_flinger_transactions_config::Mode",
1581        optional,
1582        tag = "1"
1583    )]
1584    pub mode: ::core::option::Option<i32>,
1585}
1586/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1587pub mod surface_flinger_transactions_config {
1588    #[derive(
1589        Clone,
1590        Copy,
1591        Debug,
1592        PartialEq,
1593        Eq,
1594        Hash,
1595        PartialOrd,
1596        Ord,
1597        ::prost::Enumeration
1598    )]
1599    #[repr(i32)]
1600    pub enum Mode {
1601        Unspecified = 0,
1602        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1603        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1604        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1605        /// initial state and the latest transactions.
1606        Continuous = 1,
1607        /// SurfaceFlinger writes the initial state and then each incoming
1608        /// transaction until the data source is stopped.
1609        Active = 2,
1610    }
1611    impl Mode {
1612        /// String value of the enum field names used in the ProtoBuf definition.
1613        ///
1614        /// The values are not transformed in any way and thus are considered stable
1615        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1616        pub fn as_str_name(&self) -> &'static str {
1617            match self {
1618                Self::Unspecified => "MODE_UNSPECIFIED",
1619                Self::Continuous => "MODE_CONTINUOUS",
1620                Self::Active => "MODE_ACTIVE",
1621            }
1622        }
1623        /// Creates an enum from field names used in the ProtoBuf definition.
1624        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1625            match value {
1626                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1627                "MODE_CONTINUOUS" => Some(Self::Continuous),
1628                "MODE_ACTIVE" => Some(Self::Active),
1629                _ => None,
1630            }
1631        }
1632    }
1633}
1634/// Data source that lists details (such as version code) about users on an
1635/// Android device.
1636#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1637pub struct AndroidUserListConfig {
1638    /// An allowlist of user type strings, used to control the granularity of
1639    /// user type information emitted in the trace. Exact, case-sensitive string
1640    /// matching is used.
1641    ///
1642    /// Any user type read from the device that is NOT present in the
1643    /// effective allowlist will have its type reported as
1644    /// "android.os.usertype.FILTERED".
1645    ///
1646    /// The effective allowlist is determined as follows:
1647    ///
1648    /// 1. If this 'user_type_filter' field is provided and non-empty:
1649    ///     This list itself is the effective allowlist.
1650    ///     Example TraceConfig:
1651    ///     --------------------
1652    ///     data_sources {
1653    ///         config {
1654    ///             name: "android.user_list"
1655    ///             target_buffer: 0
1656    ///             user_list_config {
1657    ///               # Only report these specific types, others become FILTERED.
1658    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1659    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1660    ///             }
1661    ///         }
1662    ///     }
1663    ///
1664    ///
1665    /// Note: This field does not support regular expressions.
1666    #[prost(string, repeated, tag = "1")]
1667    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1668}
1669/// Custom configuration for the "android.windowmanager" data source.
1670#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1671pub struct WindowManagerConfig {
1672    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
1673    pub log_frequency: ::core::option::Option<i32>,
1674    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
1675    pub log_level: ::core::option::Option<i32>,
1676    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
1677    pub log_mode: ::core::option::Option<i32>,
1678}
1679/// Nested message and enum types in `WindowManagerConfig`.
1680pub mod window_manager_config {
1681    #[derive(
1682        Clone,
1683        Copy,
1684        Debug,
1685        PartialEq,
1686        Eq,
1687        Hash,
1688        PartialOrd,
1689        Ord,
1690        ::prost::Enumeration
1691    )]
1692    #[repr(i32)]
1693    pub enum LogFrequency {
1694        Unspecified = 0,
1695        /// Trace state snapshots when a frame is committed.
1696        Frame = 1,
1697        /// Trace state snapshots every time a transaction is committed.
1698        Transaction = 2,
1699        /// Trace single state snapshots when the data source is started.
1700        SingleDump = 3,
1701    }
1702    impl LogFrequency {
1703        /// String value of the enum field names used in the ProtoBuf definition.
1704        ///
1705        /// The values are not transformed in any way and thus are considered stable
1706        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1707        pub fn as_str_name(&self) -> &'static str {
1708            match self {
1709                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1710                Self::Frame => "LOG_FREQUENCY_FRAME",
1711                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
1712                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1713            }
1714        }
1715        /// Creates an enum from field names used in the ProtoBuf definition.
1716        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1717            match value {
1718                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
1719                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
1720                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
1721                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
1722                _ => None,
1723            }
1724        }
1725    }
1726    #[derive(
1727        Clone,
1728        Copy,
1729        Debug,
1730        PartialEq,
1731        Eq,
1732        Hash,
1733        PartialOrd,
1734        Ord,
1735        ::prost::Enumeration
1736    )]
1737    #[repr(i32)]
1738    pub enum LogLevel {
1739        Unspecified = 0,
1740        /// Logs all elements with maximum amount of information.
1741        Verbose = 1,
1742        /// Logs all elements but doesn't write all configuration data.
1743        Debug = 2,
1744        /// Logs only visible elements, with the minimum amount of performance
1745        /// overhead
1746        Critical = 3,
1747    }
1748    impl LogLevel {
1749        /// String value of the enum field names used in the ProtoBuf definition.
1750        ///
1751        /// The values are not transformed in any way and thus are considered stable
1752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1753        pub fn as_str_name(&self) -> &'static str {
1754            match self {
1755                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1756                Self::Verbose => "LOG_LEVEL_VERBOSE",
1757                Self::Debug => "LOG_LEVEL_DEBUG",
1758                Self::Critical => "LOG_LEVEL_CRITICAL",
1759            }
1760        }
1761        /// Creates an enum from field names used in the ProtoBuf definition.
1762        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1763            match value {
1764                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
1765                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
1766                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
1767                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
1768                _ => None,
1769            }
1770        }
1771    }
1772    #[derive(
1773        Clone,
1774        Copy,
1775        Debug,
1776        PartialEq,
1777        Eq,
1778        Hash,
1779        PartialOrd,
1780        Ord,
1781        ::prost::Enumeration
1782    )]
1783    #[repr(i32)]
1784    pub enum LogMode {
1785        Unspecified = 0,
1786        /// Always logs a full state dump of the window hierarchy.
1787        FullState = 1,
1788        /// Logs a full state dump of the window hierarchy only when tracing starts.
1789        /// The following trace packets are lightweight patches containing only the
1790        /// last changes.
1791        Incremental = 2,
1792    }
1793    impl LogMode {
1794        /// String value of the enum field names used in the ProtoBuf definition.
1795        ///
1796        /// The values are not transformed in any way and thus are considered stable
1797        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1798        pub fn as_str_name(&self) -> &'static str {
1799            match self {
1800                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
1801                Self::FullState => "LOG_MODE_FULL_STATE",
1802                Self::Incremental => "LOG_MODE_INCREMENTAL",
1803            }
1804        }
1805        /// Creates an enum from field names used in the ProtoBuf definition.
1806        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1807            match value {
1808                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1809                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
1810                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
1811                _ => None,
1812            }
1813        }
1814    }
1815}
1816#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1817pub struct ChromeConfig {
1818    #[prost(string, optional, tag = "1")]
1819    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1820    /// When enabled, the data source should only fill in fields in the output that
1821    /// are not potentially privacy sensitive.
1822    #[prost(bool, optional, tag = "2")]
1823    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1824    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1825    /// JSON format. Note that the trace data will still be returned as a series of
1826    /// TracePackets, but the embedded data will be JSON instead of serialized
1827    /// protobuf.
1828    #[prost(bool, optional, tag = "3")]
1829    pub convert_to_legacy_json: ::core::option::Option<bool>,
1830    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
1831    pub client_priority: ::core::option::Option<i32>,
1832    /// Applicable only when using legacy JSON format.
1833    /// If |json_agent_label_filter| is not empty, only data pertaining to
1834    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1835    #[prost(string, optional, tag = "5")]
1836    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1837    ///   When enabled, event names should not contain package names.
1838    #[prost(bool, optional, tag = "6")]
1839    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1840}
1841/// Nested message and enum types in `ChromeConfig`.
1842pub mod chrome_config {
1843    /// Priority of the tracing session client. A higher priority session may
1844    /// preempt a lower priority one in configurations where concurrent sessions
1845    /// aren't supported.
1846    #[derive(
1847        Clone,
1848        Copy,
1849        Debug,
1850        PartialEq,
1851        Eq,
1852        Hash,
1853        PartialOrd,
1854        Ord,
1855        ::prost::Enumeration
1856    )]
1857    #[repr(i32)]
1858    pub enum ClientPriority {
1859        Unknown = 0,
1860        Background = 1,
1861        UserInitiated = 2,
1862    }
1863    impl ClientPriority {
1864        /// String value of the enum field names used in the ProtoBuf definition.
1865        ///
1866        /// The values are not transformed in any way and thus are considered stable
1867        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1868        pub fn as_str_name(&self) -> &'static str {
1869            match self {
1870                Self::Unknown => "UNKNOWN",
1871                Self::Background => "BACKGROUND",
1872                Self::UserInitiated => "USER_INITIATED",
1873            }
1874        }
1875        /// Creates an enum from field names used in the ProtoBuf definition.
1876        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1877            match value {
1878                "UNKNOWN" => Some(Self::Unknown),
1879                "BACKGROUND" => Some(Self::Background),
1880                "USER_INITIATED" => Some(Self::UserInitiated),
1881                _ => None,
1882            }
1883        }
1884    }
1885}
1886#[derive(Clone, PartialEq, ::prost::Message)]
1887pub struct ChromiumHistogramSamplesConfig {
1888    /// List of histograms to record. If no histogram is specified, all histograms
1889    /// are recorded.
1890    #[prost(message, repeated, tag = "1")]
1891    pub histograms: ::prost::alloc::vec::Vec<
1892        chromium_histogram_samples_config::HistogramSample,
1893    >,
1894    /// Default: false (i.e. histogram names are NOT filtered out by default)
1895    /// When true, histogram_name will be filtered out.
1896    #[prost(bool, optional, tag = "2")]
1897    pub filter_histogram_names: ::core::option::Option<bool>,
1898}
1899/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1900pub mod chromium_histogram_samples_config {
1901    /// Records when a value within the specified bounds \[min_value, max_value\] is
1902    /// emitted into a Chrome histogram.
1903    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1904    pub struct HistogramSample {
1905        #[prost(string, optional, tag = "1")]
1906        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1907        #[prost(int64, optional, tag = "2")]
1908        pub min_value: ::core::option::Option<i64>,
1909        #[prost(int64, optional, tag = "3")]
1910        pub max_value: ::core::option::Option<i64>,
1911    }
1912}
1913#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1914pub struct ChromiumSystemMetricsConfig {
1915    /// Samples counters every X ms.
1916    #[prost(uint32, optional, tag = "1")]
1917    pub sampling_interval_ms: ::core::option::Option<u32>,
1918}
1919#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1920pub struct V8Config {
1921    /// Whether to log the actual content of scripts (e.g. content of the JS file
1922    /// that was compiled to generate code).
1923    /// ATTENTION: This could considerably increase the size of the resuling trace
1924    ///             file.
1925    #[prost(bool, optional, tag = "1")]
1926    pub log_script_sources: ::core::option::Option<bool>,
1927    /// Whether to log the generated code for jitted functions (machine code or
1928    /// bytecode).
1929    /// ATTENTION: This could considerably increase the size of the resuling trace
1930    ///             file.
1931    #[prost(bool, optional, tag = "2")]
1932    pub log_instructions: ::core::option::Option<bool>,
1933}
1934/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1935/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1936/// ns-evntrace-event_trace_properties
1937#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1938pub struct EtwConfig {
1939    /// The kernel_flags determines the flags that will be used by the etw tracing
1940    /// session. These kernel flags have been built to expose the useful events
1941    /// captured from the kernel mode only.
1942    #[deprecated]
1943    #[prost(
1944        enumeration = "etw_config::KernelFlag",
1945        repeated,
1946        packed = "false",
1947        tag = "1"
1948    )]
1949    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1950    /// Provides events relating to the scheduler.
1951    #[prost(string, repeated, tag = "2")]
1952    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
1953        ::prost::alloc::string::String,
1954    >,
1955    /// Provides events relating to the memory manager.
1956    #[prost(string, repeated, tag = "3")]
1957    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1958    /// Provides events relating to file I/O.
1959    #[deprecated]
1960    #[prost(string, repeated, tag = "4")]
1961    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1962    /// Events for which stacks should be collected.
1963    #[prost(string, repeated, tag = "5")]
1964    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1965    /// Provides events relating to disk I/O.
1966    #[deprecated]
1967    #[prost(string, repeated, tag = "6")]
1968    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1969    /// Provides events relating to multiple kinds of IO including disk, cache, and
1970    /// network.
1971    #[prost(string, repeated, tag = "7")]
1972    pub system_io_provider_events: ::prost::alloc::vec::Vec<
1973        ::prost::alloc::string::String,
1974    >,
1975}
1976/// Nested message and enum types in `EtwConfig`.
1977pub mod etw_config {
1978    /// The KernelFlag represent list of kernel flags that we are intrested in.
1979    /// To get a more extensive list run 'xperf -providers k'.
1980    #[derive(
1981        Clone,
1982        Copy,
1983        Debug,
1984        PartialEq,
1985        Eq,
1986        Hash,
1987        PartialOrd,
1988        Ord,
1989        ::prost::Enumeration
1990    )]
1991    #[repr(i32)]
1992    pub enum KernelFlag {
1993        Cswitch = 0,
1994        Dispatcher = 1,
1995    }
1996    impl KernelFlag {
1997        /// String value of the enum field names used in the ProtoBuf definition.
1998        ///
1999        /// The values are not transformed in any way and thus are considered stable
2000        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2001        pub fn as_str_name(&self) -> &'static str {
2002            match self {
2003                Self::Cswitch => "CSWITCH",
2004                Self::Dispatcher => "DISPATCHER",
2005            }
2006        }
2007        /// Creates an enum from field names used in the ProtoBuf definition.
2008        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2009            match value {
2010                "CSWITCH" => Some(Self::Cswitch),
2011                "DISPATCHER" => Some(Self::Dispatcher),
2012                _ => None,
2013            }
2014        }
2015    }
2016}
2017#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2018pub struct FrozenFtraceConfig {
2019    /// The instance name which stores the previous boot ftrace data. Required.
2020    #[prost(string, optional, tag = "1")]
2021    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2022}
2023/// Next id: 38
2024#[derive(Clone, PartialEq, ::prost::Message)]
2025pub struct FtraceConfig {
2026    /// Ftrace events to record, example: "sched/sched_switch".
2027    #[prost(string, repeated, tag = "1")]
2028    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2029    /// Android-specific event categories:
2030    #[prost(string, repeated, tag = "2")]
2031    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2032    #[prost(string, repeated, tag = "3")]
2033    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2034    /// Some processes can emit data through atrace or through the perfetto SDK via
2035    /// the "track_event" data source. For these categories, the SDK will be
2036    /// preferred, if possible, for this config.
2037    #[prost(string, repeated, tag = "28")]
2038    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2039        ::prost::alloc::string::String,
2040    >,
2041    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2042    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2043    /// events for convenience (and the vendor-specific events on top).
2044    /// Introduced in: perfetto v52.
2045    #[prost(bool, optional, tag = "34")]
2046    pub atrace_userspace_only: ::core::option::Option<bool>,
2047    /// Size of each per-cpu kernel ftrace ring buffer.
2048    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2049    /// buffers cannot be resized without pausing recording in the kernel.
2050    #[prost(uint32, optional, tag = "10")]
2051    pub buffer_size_kb: ::core::option::Option<u32>,
2052    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2053    /// implementation to choose a bigger buffer size.
2054    ///
2055    /// Most configs for perfetto v43+ should simply leave both fields unset.
2056    ///
2057    /// If you need a config compatible with a range of perfetto builds and you
2058    /// used to set a non-default buffer_size_kb, consider setting both fields.
2059    /// Example:
2060    ///    buffer_size_kb: 4096
2061    ///    buffer_size_lower_bound: true
2062    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2063    /// On v43+, buffers will be at least 4 MB.
2064    /// In both cases, neither is guaranteed if there are other concurrent
2065    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2066    /// the recording in the kernel.
2067    /// Introduced in: perfetto v43.
2068    #[prost(bool, optional, tag = "27")]
2069    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2070    /// If set, specifies how often the tracing daemon reads from the kernel ring
2071    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2072    /// Leave unset unless you're fine-tuning a local config.
2073    #[prost(uint32, optional, tag = "11")]
2074    pub drain_period_ms: ::core::option::Option<u32>,
2075    /// If set, the tracing daemon will read kernel ring buffers as soon as
2076    /// they're filled past this percentage of occupancy. In other words, a value
2077    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2078    /// half-full. Not guaranteed if there are multiple concurrent tracing
2079    /// sessions.
2080    /// Currently does nothing on Linux kernels below v6.9.
2081    /// Introduced in: perfetto v48.
2082    #[prost(uint32, optional, tag = "29")]
2083    pub drain_buffer_percent: ::core::option::Option<u32>,
2084    #[prost(message, optional, tag = "12")]
2085    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2086    #[prost(message, optional, tag = "22")]
2087    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2088    /// Enables symbol name resolution against /proc/kallsyms.
2089    /// It requires that either traced_probes is running as root or that
2090    /// kptr_restrict has been manually lowered.
2091    /// It does not disclose KASLR, symbol addresses are mangled.
2092    #[prost(bool, optional, tag = "13")]
2093    pub symbolize_ksyms: ::core::option::Option<bool>,
2094    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2095    pub ksyms_mem_policy: ::core::option::Option<i32>,
2096    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2097    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2098    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2099    /// The historical context for this is the following:
2100    /// - Up to Android S (12), the rss_stat was internally throttled in its
2101    ///    kernel implementation.
2102    /// - A change introduced in the kernels after S has introduced a new
2103    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2104    ///    (hence very spammy).
2105    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2106    ///    need to deal with both cases.
2107    /// For more context: go/rss-stat-throttled.
2108    #[prost(bool, optional, tag = "15")]
2109    pub throttle_rss_stat: ::core::option::Option<bool>,
2110    /// If true, use self-describing proto messages when writing events not known
2111    /// at compile time (aka generic events). Each event bundle will have a set of
2112    /// serialised proto descriptors for events within that bundle.
2113    ///
2114    /// Default if unset:
2115    /// * v53+: true
2116    /// * before v53: false
2117    ///
2118    /// Added in: perfetto v50.
2119    #[prost(bool, optional, tag = "32")]
2120    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2121    /// If true, avoid enabling events that aren't statically known by
2122    /// traced_probes. Otherwise, the default is to emit such events as
2123    /// GenericFtraceEvent protos.
2124    /// Prefer to keep this flag at its default. This was added for Android
2125    /// tracing, where atrace categories and/or atrace HAL requested events can
2126    /// expand to events that aren't of interest to the tracing user.
2127    /// Introduced in: Android T.
2128    #[prost(bool, optional, tag = "16")]
2129    pub disable_generic_events: ::core::option::Option<bool>,
2130    /// The subset of syscalls to record. To record all syscalls, leave this unset
2131    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2132    /// * before perfetto v43, requires the config to also enable
2133    ///    raw_syscalls/sys_{enter,exit}.
2134    /// * perfetto v43+ does the right thing if you set only this field.
2135    /// Example: \["sys_read", "sys_open"\].
2136    /// Introduced in: Android U.
2137    #[prost(string, repeated, tag = "18")]
2138    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2139    /// If true, enable the "function_graph" kernel tracer that emits events
2140    /// whenever a kernel function is entered and exited
2141    /// (funcgraph_entry/funcgraph_exit).
2142    /// Notes on use:
2143    /// * Requires |symbolize_ksyms| for function name resolution.
2144    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2145    ///    set of functions, otherwise the event bandwidth will be too high for
2146    ///    practical use.
2147    /// * The data source might be rejected if there is already a concurrent
2148    ///    ftrace data source that does not use function graph itself, as we do not
2149    ///    support switching kernel tracers mid-trace.
2150    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2151    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2152    ///    "function_graph".
2153    /// Android:
2154    /// * Available only on debuggable builds.
2155    /// * Introduced in: Android U.
2156    #[prost(bool, optional, tag = "19")]
2157    pub enable_function_graph: ::core::option::Option<bool>,
2158    /// Constrains the set of functions traced when |enable_function_graph| is
2159    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2160    /// in which case all matching functions will be traced. See kernel
2161    /// documentation on ftrace "set_ftrace_filter" file for more details.
2162    /// Android:
2163    /// * Available only on debuggable builds.
2164    /// * Introduced in: Android U.
2165    #[prost(string, repeated, tag = "20")]
2166    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2167    /// If |enable_function_graph| is true, trace this set of functions *and* all
2168    /// of its callees. Supports globs. Can be set together with
2169    /// |function_filters|, in which case only callees matching the filter will be
2170    /// traced. If setting both, you most likely want all roots to also be
2171    /// included in |function_filters|.
2172    /// Android:
2173    /// * Available only on debuggable builds.
2174    /// * Introduced in: Android U.
2175    #[prost(string, repeated, tag = "21")]
2176    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2177    /// If |enable_function_graph| is true, only trace the specified
2178    /// number of calls down the stack. Sets the max_graph_depth value
2179    /// in sys/kernel/tracing/
2180    ///
2181    /// Only respected for the first tracing session that enables
2182    /// function_graph tracing.
2183    ///
2184    /// Introduced in: perfetto v51.
2185    /// Supported on: Android 25Q3+.
2186    #[prost(uint32, optional, tag = "33")]
2187    pub function_graph_max_depth: ::core::option::Option<u32>,
2188    /// Ftrace events to record, specific for kprobes and kretprobes
2189    #[prost(message, repeated, tag = "30")]
2190    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2191    /// If true, does not clear kernel ftrace buffers when starting the trace.
2192    /// This makes sense only if this is the first ftrace data source instance
2193    /// created after the daemon has been started. Can be useful for gathering boot
2194    /// traces, if ftrace has been separately configured (e.g. via kernel
2195    /// commandline).
2196    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2197    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2198    /// anything besides ftrace. Otherwise timestamps might be skewed.
2199    #[prost(bool, optional, tag = "23")]
2200    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2201    /// If true, overrides the default timestamp clock and uses a raw hardware
2202    /// based monotonic clock for getting timestamps.
2203    /// * Introduced in: Android U.
2204    #[prost(bool, optional, tag = "24")]
2205    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2206    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2207    /// for event recording. Normally, this means
2208    /// `/sys/kernel/tracing/instances/$instance_name`.
2209    ///
2210    /// Names "hyp" and "hypervisor" are reserved.
2211    ///
2212    /// The instance must already exist, the tracing daemon *will not* create it
2213    /// for you as it typically doesn't have such permissions.
2214    /// Only a subset of features is guaranteed to work with non-default instances,
2215    /// at the time of writing:
2216    ///   * ftrace_events
2217    ///   * buffer_size_kb
2218    #[prost(string, optional, tag = "25")]
2219    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2220    /// For perfetto developer use. If true and on a debuggable android build,
2221    /// serialise raw tracing pages that the implementation cannot parse.
2222    #[prost(bool, optional, tag = "31")]
2223    pub debug_ftrace_abi: ::core::option::Option<bool>,
2224    /// Filter ftrace events by Thread ID (TID).
2225    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2226    ///
2227    /// Note: this is an exclusive feature, see:
2228    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2229    ///
2230    /// Introduced in: perfetto v52.
2231    /// Supported on: Android 25Q3+.
2232    #[prost(uint32, repeated, packed = "false", tag = "35")]
2233    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2234    #[prost(message, repeated, tag = "36")]
2235    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2236    /// This mask restricts tracing to a specific set of CPUs using a
2237    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2238    /// 32-bit chunk of the CPU mask.
2239    ///
2240    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2241    ///    - Rightmost chunk: CPUs 0-31
2242    ///    - 2nd chunk from right: CPUs 32-63
2243    ///    - ...and so on.
2244    ///
2245    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2246    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2247    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2248    /// chunk0 to 0-31.
2249    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2250    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2251    ///
2252    /// Note: This is an exclusive feature, see:
2253    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2254    ///
2255    /// Introduced in: perfetto v52.
2256    /// Supported on: Android 25Q3+.
2257    #[prost(string, optional, tag = "37")]
2258    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2259    /// No-op in perfetto v28+. Name preserved because of existing references in
2260    /// textproto configs.
2261    #[deprecated]
2262    #[prost(bool, optional, tag = "14")]
2263    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2264}
2265/// Nested message and enum types in `FtraceConfig`.
2266pub mod ftrace_config {
2267    /// Configuration for compact encoding of scheduler events. When enabled (and
2268    /// recording the relevant ftrace events), specific high-volume events are
2269    /// encoded in a denser format than normal.
2270    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2271    pub struct CompactSchedConfig {
2272        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2273        /// record those events in the compact format.
2274        ///
2275        /// If the field is unset, the default is:
2276        /// * perfetto v42.0+: enabled
2277        /// * before: disabled
2278        #[prost(bool, optional, tag = "1")]
2279        pub enabled: ::core::option::Option<bool>,
2280    }
2281    /// Optional filter for "ftrace/print" events.
2282    ///
2283    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2284    /// are processed in order), its `allow` field will be used as the outcome: if
2285    /// `allow` is true, the event will be included in the trace, otherwise it will
2286    /// be discarded. If an event does not match any rule, it will be allowed by
2287    /// default (a rule with an empty prefix and allow=false, disallows everything
2288    /// by default).
2289    #[derive(Clone, PartialEq, ::prost::Message)]
2290    pub struct PrintFilter {
2291        #[prost(message, repeated, tag = "1")]
2292        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2293    }
2294    /// Nested message and enum types in `PrintFilter`.
2295    pub mod print_filter {
2296        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2297        pub struct Rule {
2298            #[prost(bool, optional, tag = "2")]
2299            pub allow: ::core::option::Option<bool>,
2300            #[prost(oneof = "rule::Match", tags = "1, 3")]
2301            pub r#match: ::core::option::Option<rule::Match>,
2302        }
2303        /// Nested message and enum types in `Rule`.
2304        pub mod rule {
2305            /// Matches an atrace message of the form:
2306            /// <type>|pid|<prefix>...
2307            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2308            pub struct AtraceMessage {
2309                #[prost(string, optional, tag = "1")]
2310                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2311                #[prost(string, optional, tag = "2")]
2312                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2313            }
2314            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2315            pub enum Match {
2316                /// This rule matches if `prefix` matches exactly with the beginning of
2317                /// the "ftrace/print" "buf" field.
2318                #[prost(string, tag = "1")]
2319                Prefix(::prost::alloc::string::String),
2320                /// This rule matches if the "buf" field contains an atrace-style print
2321                /// message as specified in `atrace_msg`.
2322                #[prost(message, tag = "3")]
2323                AtraceMsg(AtraceMessage),
2324            }
2325        }
2326    }
2327    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2328    pub struct KprobeEvent {
2329        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2330        #[prost(string, optional, tag = "1")]
2331        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2332        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
2333        pub r#type: ::core::option::Option<i32>,
2334    }
2335    /// Nested message and enum types in `KprobeEvent`.
2336    pub mod kprobe_event {
2337        #[derive(
2338            Clone,
2339            Copy,
2340            Debug,
2341            PartialEq,
2342            Eq,
2343            Hash,
2344            PartialOrd,
2345            Ord,
2346            ::prost::Enumeration
2347        )]
2348        #[repr(i32)]
2349        pub enum KprobeType {
2350            Unknown = 0,
2351            Kprobe = 1,
2352            Kretprobe = 2,
2353            Both = 3,
2354        }
2355        impl KprobeType {
2356            /// String value of the enum field names used in the ProtoBuf definition.
2357            ///
2358            /// The values are not transformed in any way and thus are considered stable
2359            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2360            pub fn as_str_name(&self) -> &'static str {
2361                match self {
2362                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
2363                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
2364                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
2365                    Self::Both => "KPROBE_TYPE_BOTH",
2366                }
2367            }
2368            /// Creates an enum from field names used in the ProtoBuf definition.
2369            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2370                match value {
2371                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
2372                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
2373                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
2374                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
2375                    _ => None,
2376                }
2377            }
2378        }
2379    }
2380    /// Tracefs options to set directly in the tracefs instance. This is a very
2381    /// niche feature since almost all of the options deal with formatting textual
2382    /// output (the /trace file), which perfetto doesn't use.
2383    ///
2384    /// The options with a known use-case:
2385    /// * event-fork: when using `tids_to_trace` above, the kernel will
2386    ///    automatically add newly spawned descendant threads to the set of TIDs.
2387    ///
2388    /// Full list of options is available at
2389    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
2390    ///
2391    /// Note: this is an exclusive feature, see:
2392    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2393    ///
2394    /// Introduced in: perfetto v52.
2395    /// Supported on: Android 25Q3+.
2396    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2397    pub struct TracefsOption {
2398        /// The name of the tracefs option as found in tracefs/trace_options (without
2399        /// the "no" prefix).
2400        #[prost(string, optional, tag = "1")]
2401        pub name: ::core::option::Option<::prost::alloc::string::String>,
2402        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
2403        pub state: ::core::option::Option<i32>,
2404    }
2405    /// Nested message and enum types in `TracefsOption`.
2406    pub mod tracefs_option {
2407        #[derive(
2408            Clone,
2409            Copy,
2410            Debug,
2411            PartialEq,
2412            Eq,
2413            Hash,
2414            PartialOrd,
2415            Ord,
2416            ::prost::Enumeration
2417        )]
2418        #[repr(i32)]
2419        pub enum State {
2420            Unknown = 0,
2421            Enabled = 1,
2422            Disabled = 2,
2423        }
2424        impl State {
2425            /// String value of the enum field names used in the ProtoBuf definition.
2426            ///
2427            /// The values are not transformed in any way and thus are considered stable
2428            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2429            pub fn as_str_name(&self) -> &'static str {
2430                match self {
2431                    Self::Unknown => "STATE_UNKNOWN",
2432                    Self::Enabled => "STATE_ENABLED",
2433                    Self::Disabled => "STATE_DISABLED",
2434                }
2435            }
2436            /// Creates an enum from field names used in the ProtoBuf definition.
2437            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2438                match value {
2439                    "STATE_UNKNOWN" => Some(Self::Unknown),
2440                    "STATE_ENABLED" => Some(Self::Enabled),
2441                    "STATE_DISABLED" => Some(Self::Disabled),
2442                    _ => None,
2443                }
2444            }
2445        }
2446    }
2447    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
2448    /// should keep the symbol map in memory (and reuse it for future tracing
2449    /// sessions) or clear it (saving memory) and re-create it on each tracing
2450    /// session (wasting cpu and wall time).
2451    /// The tradeoff is roughly:
2452    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
2453    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
2454    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
2455    #[derive(
2456        Clone,
2457        Copy,
2458        Debug,
2459        PartialEq,
2460        Eq,
2461        Hash,
2462        PartialOrd,
2463        Ord,
2464        ::prost::Enumeration
2465    )]
2466    #[repr(i32)]
2467    pub enum KsymsMemPolicy {
2468        KsymsUnspecified = 0,
2469        KsymsCleanupOnStop = 1,
2470        KsymsRetain = 2,
2471    }
2472    impl KsymsMemPolicy {
2473        /// String value of the enum field names used in the ProtoBuf definition.
2474        ///
2475        /// The values are not transformed in any way and thus are considered stable
2476        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2477        pub fn as_str_name(&self) -> &'static str {
2478            match self {
2479                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
2480                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
2481                Self::KsymsRetain => "KSYMS_RETAIN",
2482            }
2483        }
2484        /// Creates an enum from field names used in the ProtoBuf definition.
2485        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2486            match value {
2487                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
2488                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
2489                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
2490                _ => None,
2491            }
2492        }
2493    }
2494}
2495#[derive(Clone, PartialEq, ::prost::Message)]
2496pub struct GpuCounterConfig {
2497    /// Desired sampling interval for counters.
2498    #[prost(uint64, optional, tag = "1")]
2499    pub counter_period_ns: ::core::option::Option<u64>,
2500    /// List of counter IDs to be sampled.
2501    #[prost(uint32, repeated, packed = "false", tag = "2")]
2502    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2503    /// List of counter names to be sampled. Requires producer support; check
2504    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2505    /// Glob patterns may be used to match multiple counters by name; check
2506    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2507    #[prost(string, repeated, tag = "6")]
2508    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2509    /// Fix gpu clock rate during trace session.
2510    #[prost(bool, optional, tag = "4")]
2511    pub fix_gpu_clock: ::core::option::Option<bool>,
2512    /// Sample counters by instrumenting command buffers.
2513    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
2514    pub instrumented_sampling_mode: ::core::option::Option<
2515        gpu_counter_config::InstrumentedSamplingMode,
2516    >,
2517}
2518/// Nested message and enum types in `GpuCounterConfig`.
2519pub mod gpu_counter_config {
2520    /// Configuration for sampling counters by instrumenting command buffers.
2521    ///
2522    /// When instrumented_sampling_config is used (instead of the
2523    /// instrumented_sampling bool), the following steps determine whether
2524    /// instrumented counters are enabled for a given GPU activity:
2525    ///
2526    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2527    ///     activity must match at least one filter. If empty, all activities
2528    ///     pass this step.
2529    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2530    ///     activity must fall within a matching TX range. Activities in TX
2531    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2532    ///     take precedence over includes). If both are empty, all activities
2533    ///     pass this step.
2534    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2535    ///     activities within the specified skip/count ranges are instrumented.
2536    ///     If empty, all activities that passed the previous steps are
2537    ///     instrumented.
2538    #[derive(Clone, PartialEq, ::prost::Message)]
2539    pub struct InstrumentedSamplingConfig {
2540        /// GPU activity name filters. An activity matches if it matches any filter.
2541        #[prost(message, repeated, tag = "3")]
2542        pub activity_name_filters: ::prost::alloc::vec::Vec<
2543            instrumented_sampling_config::ActivityNameFilter,
2544        >,
2545        /// Glob patterns to use for including GPU activities in TX ranges. TX
2546        /// ranges are in-process annotations that mark different sections of GPU
2547        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2548        /// activity is included if any range in its nesting hierarchy matches.
2549        /// Only activities that fall within a matching TX range will be
2550        /// instrumented.
2551        #[prost(string, repeated, tag = "6")]
2552        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
2553            ::prost::alloc::string::String,
2554        >,
2555        /// Glob patterns to use for excluding GPU activities from TX ranges.
2556        /// TX ranges can be nested, and an activity is excluded if any range
2557        /// in its nesting hierarchy matches. Excludes take precedence over
2558        /// includes.
2559        #[prost(string, repeated, tag = "7")]
2560        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
2561            ::prost::alloc::string::String,
2562        >,
2563        /// Ranges of GPU activities to instrument. Applied after activity name
2564        /// and TX range filters. If empty, all activities that passed the
2565        /// previous filters are instrumented.
2566        #[prost(message, repeated, tag = "5")]
2567        pub activity_ranges: ::prost::alloc::vec::Vec<
2568            instrumented_sampling_config::ActivityRange,
2569        >,
2570    }
2571    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2572    pub mod instrumented_sampling_config {
2573        /// Filters GPU activities by name. Each filter specifies a glob pattern
2574        /// and the basis for matching (mangled or demangled kernel name).
2575        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2576        pub struct ActivityNameFilter {
2577            /// required. Glob pattern to use for GPU activity name filtering.
2578            #[prost(string, optional, tag = "1")]
2579            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2580            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2581            /// specified.
2582            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
2583            pub name_base: ::core::option::Option<i32>,
2584        }
2585        /// Nested message and enum types in `ActivityNameFilter`.
2586        pub mod activity_name_filter {
2587            #[derive(
2588                Clone,
2589                Copy,
2590                Debug,
2591                PartialEq,
2592                Eq,
2593                Hash,
2594                PartialOrd,
2595                Ord,
2596                ::prost::Enumeration
2597            )]
2598            #[repr(i32)]
2599            pub enum NameBase {
2600                /// Match against the mangled (compiler-encoded) kernel name.
2601                /// Example: for a kernel whose demangled name is
2602                /// "matmul(float*,int,int)", the mangled name might be
2603                /// "_Z6matmulPfii". The glob pattern is matched against this
2604                /// mangled form.
2605                MangledKernelName = 0,
2606                /// Match against the fully demangled kernel name, including
2607                /// parameters, templates, and qualifiers.
2608                /// Example: "matmul(float*,int,int)". The glob pattern is
2609                /// matched against this full demangled form.
2610                DemangledKernelName = 1,
2611                /// Match against only the function name portion of the
2612                /// demangled kernel name, without parameters, templates,
2613                /// return types, or namespaces.
2614                /// Example: "matmul". The glob pattern is matched against
2615                /// just the bare function name.
2616                FunctionName = 2,
2617            }
2618            impl NameBase {
2619                /// String value of the enum field names used in the ProtoBuf definition.
2620                ///
2621                /// The values are not transformed in any way and thus are considered stable
2622                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2623                pub fn as_str_name(&self) -> &'static str {
2624                    match self {
2625                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
2626                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2627                        Self::FunctionName => "FUNCTION_NAME",
2628                    }
2629                }
2630                /// Creates an enum from field names used in the ProtoBuf definition.
2631                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2632                    match value {
2633                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
2634                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
2635                        "FUNCTION_NAME" => Some(Self::FunctionName),
2636                        _ => None,
2637                    }
2638                }
2639            }
2640        }
2641        /// Defines a range of GPU activities to instrument.
2642        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2643        pub struct ActivityRange {
2644            /// Number of GPU activities to skip before starting to instrument
2645            /// command buffers. Defaults to 0 if not specified.
2646            #[prost(uint32, optional, tag = "1")]
2647            pub skip: ::core::option::Option<u32>,
2648            /// Limit for the number of GPU activities to sample counters for by
2649            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2650            /// remaining activities) if not specified.
2651            #[prost(uint32, optional, tag = "2")]
2652            pub count: ::core::option::Option<u32>,
2653        }
2654    }
2655    /// Sample counters by instrumenting command buffers.
2656    #[derive(Clone, PartialEq, ::prost::Oneof)]
2657    pub enum InstrumentedSamplingMode {
2658        #[prost(bool, tag = "3")]
2659        InstrumentedSampling(bool),
2660        #[prost(message, tag = "5")]
2661        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2662    }
2663}
2664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2665pub struct GpuRenderStagesConfig {
2666    /// Enable to separate the color and depth/stencil load and store stages
2667    /// into a separate stages. If disabled, the depth/stencil load and store
2668    /// stages will be combined.  Disabled by default. This option has no effect if
2669    /// Low Overhead mode is enabled.
2670    #[prost(bool, optional, tag = "1")]
2671    pub full_loadstore: ::core::option::Option<bool>,
2672    /// Use the low overhead mode for traces. In this mode render stages are
2673    /// combined into a single workload stage. This provides less granular data but
2674    /// induces minimal GPU overhead. Disabled by default.
2675    #[prost(bool, optional, tag = "2")]
2676    pub low_overhead: ::core::option::Option<bool>,
2677    /// Trace metrics to capture for each render stage
2678    #[prost(string, repeated, tag = "3")]
2679    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2680}
2681#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2682pub struct VulkanMemoryConfig {
2683    /// Tracking driver memory usage events
2684    #[prost(bool, optional, tag = "1")]
2685    pub track_driver_memory_usage: ::core::option::Option<bool>,
2686    /// Tracking device memory usage events
2687    #[prost(bool, optional, tag = "2")]
2688    pub track_device_memory_usage: ::core::option::Option<bool>,
2689}
2690/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2691/// systems.
2692#[derive(Clone, PartialEq, ::prost::Message)]
2693pub struct InodeFileConfig {
2694    /// How long to pause between batches.
2695    #[prost(uint32, optional, tag = "1")]
2696    pub scan_interval_ms: ::core::option::Option<u32>,
2697    /// How long to wait before the first scan in order to accumulate inodes.
2698    #[prost(uint32, optional, tag = "2")]
2699    pub scan_delay_ms: ::core::option::Option<u32>,
2700    /// How many inodes to scan in one batch.
2701    #[prost(uint32, optional, tag = "3")]
2702    pub scan_batch_size: ::core::option::Option<u32>,
2703    /// Do not scan for inodes not found in the static map.
2704    #[prost(bool, optional, tag = "4")]
2705    pub do_not_scan: ::core::option::Option<bool>,
2706    /// If non-empty, only scan inodes corresponding to block devices named in
2707    /// this list.
2708    #[prost(string, repeated, tag = "5")]
2709    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2710    /// When encountering an inode belonging to a block device corresponding
2711    /// to one of the mount points in this map, scan its scan_roots instead.
2712    #[prost(message, repeated, tag = "6")]
2713    pub mount_point_mapping: ::prost::alloc::vec::Vec<
2714        inode_file_config::MountPointMappingEntry,
2715    >,
2716}
2717/// Nested message and enum types in `InodeFileConfig`.
2718pub mod inode_file_config {
2719    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2720    pub struct MountPointMappingEntry {
2721        #[prost(string, optional, tag = "1")]
2722        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2723        #[prost(string, repeated, tag = "2")]
2724        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2725    }
2726}
2727#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2728pub struct ConsoleConfig {
2729    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
2730    pub output: ::core::option::Option<i32>,
2731    #[prost(bool, optional, tag = "2")]
2732    pub enable_colors: ::core::option::Option<bool>,
2733}
2734/// Nested message and enum types in `ConsoleConfig`.
2735pub mod console_config {
2736    #[derive(
2737        Clone,
2738        Copy,
2739        Debug,
2740        PartialEq,
2741        Eq,
2742        Hash,
2743        PartialOrd,
2744        Ord,
2745        ::prost::Enumeration
2746    )]
2747    #[repr(i32)]
2748    pub enum Output {
2749        Unspecified = 0,
2750        Stdout = 1,
2751        Stderr = 2,
2752    }
2753    impl Output {
2754        /// String value of the enum field names used in the ProtoBuf definition.
2755        ///
2756        /// The values are not transformed in any way and thus are considered stable
2757        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2758        pub fn as_str_name(&self) -> &'static str {
2759            match self {
2760                Self::Unspecified => "OUTPUT_UNSPECIFIED",
2761                Self::Stdout => "OUTPUT_STDOUT",
2762                Self::Stderr => "OUTPUT_STDERR",
2763            }
2764        }
2765        /// Creates an enum from field names used in the ProtoBuf definition.
2766        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2767            match value {
2768                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
2769                "OUTPUT_STDOUT" => Some(Self::Stdout),
2770                "OUTPUT_STDERR" => Some(Self::Stderr),
2771                _ => None,
2772            }
2773        }
2774    }
2775}
2776/// Configuration for trace packet interception. Used for diverting trace data to
2777/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2778/// Perfetto SDK.
2779#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2780pub struct InterceptorConfig {
2781    /// Matches the name given to RegisterInterceptor().
2782    #[prost(string, optional, tag = "1")]
2783    pub name: ::core::option::Option<::prost::alloc::string::String>,
2784    #[prost(message, optional, tag = "100")]
2785    pub console_config: ::core::option::Option<ConsoleConfig>,
2786}
2787/// Configuration for the "linux.systemd_journald" data source.
2788/// Next field id: 4
2789#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2790pub struct SystemdJournaldConfig {
2791    /// Minimum syslog priority level to capture (inclusive).
2792    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
2793    /// Default (0 / unset): capture all priorities (equivalent to 7).
2794    #[prost(uint32, optional, tag = "1")]
2795    pub min_prio: ::core::option::Option<u32>,
2796    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
2797    /// matches one of these strings.
2798    #[prost(string, repeated, tag = "2")]
2799    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2800    /// If non-empty, only capture journal entries from these systemd unit names.
2801    #[prost(string, repeated, tag = "3")]
2802    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2803}
2804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2805pub struct AndroidPowerConfig {
2806    #[prost(uint32, optional, tag = "1")]
2807    pub battery_poll_ms: ::core::option::Option<u32>,
2808    #[prost(
2809        enumeration = "android_power_config::BatteryCounters",
2810        repeated,
2811        packed = "false",
2812        tag = "2"
2813    )]
2814    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
2815    /// Where available enables per-power-rail measurements.
2816    #[prost(bool, optional, tag = "3")]
2817    pub collect_power_rails: ::core::option::Option<bool>,
2818    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
2819    /// Available from Android S.
2820    #[prost(bool, optional, tag = "4")]
2821    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
2822    /// Provides a breakdown of time in state for various subsystems.
2823    /// Available from Android U.
2824    #[prost(bool, optional, tag = "5")]
2825    pub collect_entity_state_residency: ::core::option::Option<bool>,
2826}
2827/// Nested message and enum types in `AndroidPowerConfig`.
2828pub mod android_power_config {
2829    #[derive(
2830        Clone,
2831        Copy,
2832        Debug,
2833        PartialEq,
2834        Eq,
2835        Hash,
2836        PartialOrd,
2837        Ord,
2838        ::prost::Enumeration
2839    )]
2840    #[repr(i32)]
2841    pub enum BatteryCounters {
2842        BatteryCounterUnspecified = 0,
2843        /// Coulomb counter.
2844        BatteryCounterCharge = 1,
2845        /// Charge (%).
2846        BatteryCounterCapacityPercent = 2,
2847        /// Instantaneous current.
2848        BatteryCounterCurrent = 3,
2849        /// Avg current.
2850        BatteryCounterCurrentAvg = 4,
2851        /// Instantaneous voltage.
2852        BatteryCounterVoltage = 5,
2853    }
2854    impl BatteryCounters {
2855        /// String value of the enum field names used in the ProtoBuf definition.
2856        ///
2857        /// The values are not transformed in any way and thus are considered stable
2858        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2859        pub fn as_str_name(&self) -> &'static str {
2860            match self {
2861                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
2862                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
2863                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
2864                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
2865                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
2866                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
2867            }
2868        }
2869        /// Creates an enum from field names used in the ProtoBuf definition.
2870        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2871            match value {
2872                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
2873                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
2874                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
2875                    Some(Self::BatteryCounterCapacityPercent)
2876                }
2877                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
2878                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
2879                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
2880                _ => None,
2881            }
2882        }
2883    }
2884}
2885/// Configuration that allows to boost the priority of the 'traced' or
2886/// 'traced_probs' processes, by changing the scheduler configuration.
2887/// Only supported on Linux and Android the boosted process must have
2888/// 'CAP_SYS_NICE' capability.
2889#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2890pub struct PriorityBoostConfig {
2891    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
2892    pub policy: ::core::option::Option<i32>,
2893    #[prost(uint32, optional, tag = "2")]
2894    pub priority: ::core::option::Option<u32>,
2895}
2896/// Nested message and enum types in `PriorityBoostConfig`.
2897pub mod priority_boost_config {
2898    #[derive(
2899        Clone,
2900        Copy,
2901        Debug,
2902        PartialEq,
2903        Eq,
2904        Hash,
2905        PartialOrd,
2906        Ord,
2907        ::prost::Enumeration
2908    )]
2909    #[repr(i32)]
2910    pub enum BoostPolicy {
2911        PolicyUnspecified = 0,
2912        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
2913        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
2914        /// than default 0, 20 is the highest priority.
2915        /// Note: this is the opposite semantic of the cmdline nice, and is done for
2916        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
2917        PolicySchedOther = 1,
2918        /// The Real-time policy, Priority range: \[1; 99\]
2919        PolicySchedFifo = 2,
2920    }
2921    impl BoostPolicy {
2922        /// String value of the enum field names used in the ProtoBuf definition.
2923        ///
2924        /// The values are not transformed in any way and thus are considered stable
2925        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2926        pub fn as_str_name(&self) -> &'static str {
2927            match self {
2928                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
2929                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
2930                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
2931            }
2932        }
2933        /// Creates an enum from field names used in the ProtoBuf definition.
2934        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2935            match value {
2936                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
2937                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
2938                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
2939                _ => None,
2940            }
2941        }
2942    }
2943}
2944/// Config for polling process-related information from /proc/pid/status and
2945/// related files on Linux.
2946///
2947/// Data source name: "linux.process_stats".
2948#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2949pub struct ProcessStatsConfig {
2950    #[prost(
2951        enumeration = "process_stats_config::Quirks",
2952        repeated,
2953        packed = "false",
2954        tag = "1"
2955    )]
2956    pub quirks: ::prost::alloc::vec::Vec<i32>,
2957    /// If enabled all processes will be scanned and dumped when the trace starts.
2958    #[prost(bool, optional, tag = "2")]
2959    pub scan_all_processes_on_start: ::core::option::Option<bool>,
2960    /// If enabled thread names are also recoded (this is redundant if sched_switch
2961    /// is enabled).
2962    #[prost(bool, optional, tag = "3")]
2963    pub record_thread_names: ::core::option::Option<bool>,
2964    /// If > 0 samples counters (see process_stats.proto) from
2965    /// /proc/pid/status and oom_score_adj every X ms.
2966    /// This is required to be > 100ms to avoid excessive CPU usage.
2967    #[prost(uint32, optional, tag = "4")]
2968    pub proc_stats_poll_ms: ::core::option::Option<u32>,
2969    /// Explicit caching period during which the polling won't re-emit identical
2970    /// counter values. This is required to be either = 0 or a multiple of
2971    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
2972    /// rounded down to the nearest multiple.
2973    #[prost(uint32, optional, tag = "6")]
2974    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
2975    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
2976    /// /proc/pid/smaps_rollup.
2977    ///
2978    /// Android: does NOT work with the system daemons by default, as it requires
2979    /// running the recording process (traced_probes or tracebox) as root. It is
2980    /// possible to avoid the root requirement, but the exact steps depend on the
2981    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
2982    /// check, and might be further covered by the procfs "hidepid" mount option.
2983    #[prost(bool, optional, tag = "10")]
2984    pub scan_smaps_rollup: ::core::option::Option<bool>,
2985    /// If true: process descriptions will include process age (starttime in
2986    /// /proc/pid/stat).
2987    /// Introduced in: perfetto v44.
2988    #[prost(bool, optional, tag = "11")]
2989    pub record_process_age: ::core::option::Option<bool>,
2990    /// If true and |proc_stats_poll_ms| is set, process stats will include time
2991    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
2992    /// Introduced in: perfetto v44.
2993    #[prost(bool, optional, tag = "12")]
2994    pub record_process_runtime: ::core::option::Option<bool>,
2995    /// If true obtain per-process dmabuf resident set size from
2996    /// /proc/pid/dmabuf_rss.
2997    /// This feature is not in upstream linux, and is available only on some
2998    /// Android kernels.
2999    #[prost(bool, optional, tag = "13")]
3000    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
3001    /// WARNING: unmaintained and deprecated. If true this will resolve file
3002    /// descriptors for each process so these can be mapped to their actual device
3003    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
3004    /// or new fds opened after initially scanning a process will not be
3005    /// recognized.
3006    #[prost(bool, optional, tag = "9")]
3007    pub resolve_process_fds: ::core::option::Option<bool>,
3008    /// If true, do *not* write a ProcessTree::Thread message for the main thread
3009    /// of a process. This was the default behaviour before perfetto v58.
3010    ///
3011    /// Added in perfetto v58.
3012    #[prost(bool, optional, tag = "14")]
3013    pub skip_main_thread_message: ::core::option::Option<bool>,
3014}
3015/// Nested message and enum types in `ProcessStatsConfig`.
3016pub mod process_stats_config {
3017    #[derive(
3018        Clone,
3019        Copy,
3020        Debug,
3021        PartialEq,
3022        Eq,
3023        Hash,
3024        PartialOrd,
3025        Ord,
3026        ::prost::Enumeration
3027    )]
3028    #[repr(i32)]
3029    pub enum Quirks {
3030        Unspecified = 0,
3031        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
3032        /// startup is now disabled by default and can be re-enabled using the
3033        /// |scan_all_processes_on_start| arg.
3034        #[deprecated]
3035        DisableInitialDump = 1,
3036        /// If set, disables the special interaction with "linux.ftrace" data source,
3037        /// where the process stats rescrapes any thread id seen in the ftrace
3038        /// stream.
3039        DisableOnDemand = 2,
3040    }
3041    impl Quirks {
3042        /// String value of the enum field names used in the ProtoBuf definition.
3043        ///
3044        /// The values are not transformed in any way and thus are considered stable
3045        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3046        pub fn as_str_name(&self) -> &'static str {
3047            match self {
3048                Self::Unspecified => "QUIRKS_UNSPECIFIED",
3049                #[allow(deprecated)]
3050                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
3051                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
3052            }
3053        }
3054        /// Creates an enum from field names used in the ProtoBuf definition.
3055        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3056            match value {
3057                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
3058                "DISABLE_INITIAL_DUMP" => {
3059                    Some(#[allow(deprecated)] Self::DisableInitialDump)
3060                }
3061                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
3062                _ => None,
3063            }
3064        }
3065    }
3066}
3067/// Configuration for go/heapprofd.
3068/// Next id: 28
3069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3070pub struct HeapprofdConfig {
3071    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
3072    ///
3073    /// These are:
3074    /// * All heaps if heap_sampling_intervals is empty.
3075    /// * Those profiled due to all_heaps and not named in heaps if
3076    ///    heap_sampling_intervals is not empty.
3077    /// * The implicit libc.malloc heap if heaps is empty.
3078    ///
3079    /// Set to 1 for perfect accuracy.
3080    /// Otherwise, sample every sample_interval_bytes on average.
3081    ///
3082    /// See
3083    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
3084    /// for more details.
3085    ///
3086    /// BUGS
3087    /// Before Android 12, setting this to 0 would crash the target process.
3088    ///
3089    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
3090    /// this field or with heap_sampling_intervals), otherwise the producer will
3091    /// not start.
3092    #[prost(uint64, optional, tag = "1")]
3093    pub sampling_interval_bytes: ::core::option::Option<u64>,
3094    /// If less than the given numbers of bytes are left free in the shared
3095    /// memory buffer, increase sampling interval by a factor of two.
3096    /// Adaptive sampling is disabled when set to 0.
3097    #[prost(uint64, optional, tag = "24")]
3098    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
3099    /// Stop doubling the sampling_interval once the sampling interval has reached
3100    /// this value.
3101    #[prost(uint64, optional, tag = "25")]
3102    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
3103    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
3104    /// as the following section (A), and on newer versions are both (A) and (B):
3105    ///
3106    /// (A) E.g. surfaceflinger, com.android.phone
3107    /// This input is normalized in the following way: if it contains slashes,
3108    /// everything up to the last slash is discarded. If it contains "@",
3109    /// everything after the first @ is discared.
3110    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
3111    /// This transformation is also applied to the processes' command lines when
3112    /// matching.
3113    ///
3114    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
3115    /// case it is matched against running processes' command lines using glob
3116    /// semantics. If the pattern starts with '/' it is matched against the full
3117    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
3118    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
3119    /// normalized as described above.
3120    /// Wildcard patterns are supported only for profiling already-running
3121    /// processes. A config must set no_startup=true if using wildcards, or it will
3122    /// be rejected.
3123    #[prost(string, repeated, tag = "2")]
3124    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3125    /// For watermark based triggering or local debugging.
3126    #[prost(uint64, repeated, packed = "false", tag = "4")]
3127    pub pid: ::prost::alloc::vec::Vec<u64>,
3128    /// Only profile target if it was installed by one of the packages given.
3129    /// Special values are:
3130    /// * @system: installed on the system partition
3131    /// * @product: installed on the product partition
3132    /// * @null: sideloaded
3133    /// Supported on Android 12+.
3134    #[prost(string, repeated, tag = "26")]
3135    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3136    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
3137    /// "malloc".
3138    ///
3139    /// Introduced in Android 12.
3140    #[prost(string, repeated, tag = "20")]
3141    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3142    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
3143    /// combination with all_heaps;
3144    ///
3145    /// Introduced in Android 12.
3146    #[prost(string, repeated, tag = "27")]
3147    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3148    #[prost(bool, optional, tag = "23")]
3149    pub stream_allocations: ::core::option::Option<bool>,
3150    /// If given, needs to be the same length as heaps and gives the sampling
3151    /// interval for the respective entry in heaps.
3152    ///
3153    /// Otherwise, sampling_interval_bytes is used.
3154    ///
3155    /// It is recommended to set sampling_interval_bytes to a reasonable default
3156    /// value when using this, as a value of 0 for sampling_interval_bytes will
3157    /// crash the target process before Android 12.
3158    ///
3159    /// Introduced in Android 12.
3160    ///
3161    /// All values must be non-zero or the producer will not start.
3162    #[prost(uint64, repeated, packed = "false", tag = "22")]
3163    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
3164    /// Sample all heaps registered by target process. Introduced in Android 12.
3165    #[prost(bool, optional, tag = "21")]
3166    pub all_heaps: ::core::option::Option<bool>,
3167    /// Profile all processes eligible for profiling on the system.
3168    /// See
3169    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
3170    /// for which processes are eligible.
3171    ///
3172    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
3173    /// will crash when trying to launch a new process as it will have an
3174    /// unexpected open socket to heapprofd.
3175    ///
3176    /// heapprofd will likely be overloaded by the amount of data for low
3177    /// sampling intervals.
3178    #[prost(bool, optional, tag = "5")]
3179    pub all: ::core::option::Option<bool>,
3180    /// Do not profile processes whose anon RSS + swap < given value.
3181    /// Introduced in Android 11.
3182    #[prost(uint32, optional, tag = "15")]
3183    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3184    /// Stop profile if heapprofd memory usage goes beyond the given value.
3185    /// Introduced in Android 11.
3186    #[prost(uint32, optional, tag = "16")]
3187    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
3188    /// Stop profile if heapprofd CPU time since start of this data-source
3189    /// goes beyond given value.
3190    /// Introduced in Android 11.
3191    #[prost(uint64, optional, tag = "17")]
3192    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
3193    /// Do not emit function names for mappings starting with this prefix.
3194    /// E.g. /system to not emit symbols for any system libraries.
3195    #[prost(string, repeated, tag = "7")]
3196    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3197    /// Dump at a predefined interval.
3198    #[prost(message, optional, tag = "6")]
3199    pub continuous_dump_config: ::core::option::Option<
3200        heapprofd_config::ContinuousDumpConfig,
3201    >,
3202    /// Size of the shared memory buffer between the profiled processes and
3203    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
3204    /// MiB.
3205    ///
3206    /// Needs to be:
3207    /// * at least 8192,
3208    /// * a power of two,
3209    /// * a multiple of 4096.
3210    #[prost(uint64, optional, tag = "8")]
3211    pub shmem_size_bytes: ::core::option::Option<u64>,
3212    /// When the shmem buffer is full, block the client instead of ending the
3213    /// trace. Use with caution as this will significantly slow down the target
3214    /// process.
3215    #[prost(bool, optional, tag = "9")]
3216    pub block_client: ::core::option::Option<bool>,
3217    /// If set, stop the trace session after blocking the client for this
3218    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
3219    /// Introduced in Android 11.
3220    #[prost(uint32, optional, tag = "14")]
3221    pub block_client_timeout_us: ::core::option::Option<u32>,
3222    /// Do not profile processes from startup, only match already running
3223    /// processes.
3224    ///
3225    /// Can not be set at the same time as no_running.
3226    /// Introduced in Android 11.
3227    #[prost(bool, optional, tag = "10")]
3228    pub no_startup: ::core::option::Option<bool>,
3229    /// Do not profile running processes. Only match processes on startup.
3230    ///
3231    /// Can not be set at the same time as no_startup.
3232    /// Introduced in Android 11.
3233    #[prost(bool, optional, tag = "11")]
3234    pub no_running: ::core::option::Option<bool>,
3235    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
3236    /// at the point in time when the sampled heap usage of the process was at its
3237    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
3238    /// self_allocated and self_freed to not be set.
3239    /// Introduced in Android 11.
3240    #[prost(bool, optional, tag = "13")]
3241    pub dump_at_max: ::core::option::Option<bool>,
3242    /// Escape hatch if the session is being torn down because of a forked child
3243    /// that shares memory space, but is not correctly identified as a vforked
3244    /// child.
3245    /// Introduced in Android 11.
3246    #[prost(bool, optional, tag = "18")]
3247    pub disable_fork_teardown: ::core::option::Option<bool>,
3248    /// We try to automatically detect when a target applicatation vforks but then
3249    /// does a memory allocation (or free). This auto-detection can be disabled
3250    /// with this.
3251    /// Introduced in Android 11.
3252    #[prost(bool, optional, tag = "19")]
3253    pub disable_vfork_detection: ::core::option::Option<bool>,
3254}
3255/// Nested message and enum types in `HeapprofdConfig`.
3256pub mod heapprofd_config {
3257    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3258    pub struct ContinuousDumpConfig {
3259        /// ms to wait before first dump.
3260        #[prost(uint32, optional, tag = "5")]
3261        pub dump_phase_ms: ::core::option::Option<u32>,
3262        /// ms to wait between following dumps.
3263        #[prost(uint32, optional, tag = "6")]
3264        pub dump_interval_ms: ::core::option::Option<u32>,
3265    }
3266}
3267/// Config for collecting /proc/pid/smaps.
3268#[derive(Clone, PartialEq, ::prost::Message)]
3269pub struct SmapsConfig {
3270    /// Set of fields to collect.
3271    /// If unset, defaults to: size, rss, anonymous, swap.
3272    #[prost(
3273        enumeration = "smaps_config::VmaField",
3274        repeated,
3275        packed = "false",
3276        tag = "1"
3277    )]
3278    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
3279    /// If false, mappings are aggregated by their path name.
3280    /// If true, each mapping is serialised separately.
3281    #[prost(bool, optional, tag = "2")]
3282    pub unaggregated: ::core::option::Option<bool>,
3283    /// Optional ordered list of redaction rules for the name of the mapping.
3284    /// Note that all mappings will still be emitted, these rules only affect the
3285    /// emitted name.
3286    /// If unset, all names are written as is.
3287    /// If set, the first matching rule decides on the action.
3288    /// If no rules match, the name is written as is.
3289    #[prost(message, repeated, tag = "3")]
3290    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
3291}
3292/// Nested message and enum types in `SmapsConfig`.
3293pub mod smaps_config {
3294    #[derive(
3295        Clone,
3296        Copy,
3297        Debug,
3298        PartialEq,
3299        Eq,
3300        Hash,
3301        PartialOrd,
3302        Ord,
3303        ::prost::Enumeration
3304    )]
3305    #[repr(i32)]
3306    pub enum VmaField {
3307        Unknown = 0,
3308        Size = 1,
3309        Rss = 2,
3310        Anonymous = 3,
3311        Swap = 4,
3312        SharedClean = 5,
3313        SharedDirty = 6,
3314        PrivateClean = 7,
3315        PrivateDirty = 8,
3316        Locked = 9,
3317        Pss = 10,
3318        PssDirty = 11,
3319        SwapPss = 12,
3320    }
3321    impl VmaField {
3322        /// String value of the enum field names used in the ProtoBuf definition.
3323        ///
3324        /// The values are not transformed in any way and thus are considered stable
3325        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3326        pub fn as_str_name(&self) -> &'static str {
3327            match self {
3328                Self::Unknown => "VMA_FIELD_UNKNOWN",
3329                Self::Size => "VMA_FIELD_SIZE",
3330                Self::Rss => "VMA_FIELD_RSS",
3331                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
3332                Self::Swap => "VMA_FIELD_SWAP",
3333                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
3334                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
3335                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
3336                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
3337                Self::Locked => "VMA_FIELD_LOCKED",
3338                Self::Pss => "VMA_FIELD_PSS",
3339                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
3340                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
3341            }
3342        }
3343        /// Creates an enum from field names used in the ProtoBuf definition.
3344        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3345            match value {
3346                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
3347                "VMA_FIELD_SIZE" => Some(Self::Size),
3348                "VMA_FIELD_RSS" => Some(Self::Rss),
3349                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
3350                "VMA_FIELD_SWAP" => Some(Self::Swap),
3351                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
3352                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
3353                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
3354                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
3355                "VMA_FIELD_LOCKED" => Some(Self::Locked),
3356                "VMA_FIELD_PSS" => Some(Self::Pss),
3357                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
3358                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
3359                _ => None,
3360            }
3361        }
3362    }
3363}
3364#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3365pub struct RedactionRule {
3366    /// The pattern to match against.
3367    #[prost(string, optional, tag = "1")]
3368    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
3369    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
3370    pub match_mode: ::core::option::Option<i32>,
3371    /// If the pattern matches, keep the entire name. In other words, do not
3372    /// redact. This option exists since the rules are evaluated in order, so a
3373    /// more specific allow rule with keep_full can match before a more general
3374    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
3375    /// |keep_path_elements|.
3376    #[prost(bool, optional, tag = "3")]
3377    pub keep_full: ::core::option::Option<bool>,
3378    /// If the pattern matches, replace the name with this string (defaulting to
3379    /// <pf_redacted> if unset). The final emitted name might be further augmented
3380    /// by the options below keeping parts of the original name.
3381    #[prost(string, optional, tag = "4")]
3382    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
3383    /// If the pattern matches, keep the file extension, if any.
3384    /// Can be combined with |keep_path_elements|.
3385    #[prost(bool, optional, tag = "5")]
3386    pub keep_file_extension: ::core::option::Option<bool>,
3387    /// If the pattern matches, keep the first N path elements (as separated by
3388    /// '/'). If the name is not a path, this option does nothing. Can be combined
3389    /// with |keep_file_extension|.
3390    #[prost(uint32, optional, tag = "6")]
3391    pub keep_path_elements: ::core::option::Option<u32>,
3392}
3393/// Nested message and enum types in `RedactionRule`.
3394pub mod redaction_rule {
3395    /// How to match |pattern| against the name of the mapping.
3396    /// Note for future extensions: unrecognised enums are treated as always
3397    /// matching.
3398    #[derive(
3399        Clone,
3400        Copy,
3401        Debug,
3402        PartialEq,
3403        Eq,
3404        Hash,
3405        PartialOrd,
3406        Ord,
3407        ::prost::Enumeration
3408    )]
3409    #[repr(i32)]
3410    pub enum MatchMode {
3411        Unknown = 0,
3412        /// The pattern matches if it is a prefix of the mapping name.
3413        Prefix = 1,
3414        /// The pattern is matched against the mapping name as a pathname glob
3415        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
3416        /// The key distinction is that path separators in the name are *not* matched
3417        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
3418        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
3419        /// Note: any "(deleted)" suffix is excluded before matching.
3420        GlobPath = 2,
3421        /// The pattern is matched against the mapping name without special-casing
3422        /// path separators. So a pattern of the form "/usr/*/llvm" would match
3423        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
3424        /// Note: any "(deleted)" suffix is excluded before matching.
3425        GlobString = 3,
3426    }
3427    impl MatchMode {
3428        /// String value of the enum field names used in the ProtoBuf definition.
3429        ///
3430        /// The values are not transformed in any way and thus are considered stable
3431        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3432        pub fn as_str_name(&self) -> &'static str {
3433            match self {
3434                Self::Unknown => "MATCH_MODE_UNKNOWN",
3435                Self::Prefix => "MATCH_MODE_PREFIX",
3436                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
3437                Self::GlobString => "MATCH_MODE_GLOB_STRING",
3438            }
3439        }
3440        /// Creates an enum from field names used in the ProtoBuf definition.
3441        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3442            match value {
3443                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
3444                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
3445                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
3446                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
3447                _ => None,
3448            }
3449        }
3450    }
3451}
3452/// Configuration for managed app heap graph snapshots.
3453#[derive(Clone, PartialEq, ::prost::Message)]
3454pub struct JavaHprofConfig {
3455    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
3456    /// comm string). The semantics of this field were changed since its original
3457    /// introduction.
3458    ///
3459    /// On Android T+ (13+), this field can specify a single wildcard (*), and
3460    /// the profiler will attempt to match it in two possible ways:
3461    /// * if the pattern starts with a '/', then it is matched against the first
3462    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
3463    ///    "/bin/echo".
3464    /// * otherwise the pattern is matched against the part of argv0
3465    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
3466    ///    For example "echo" would match "/bin/echo".
3467    ///
3468    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
3469    /// normalized prior to an exact string comparison. Normalization is as
3470    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
3471    /// the string contains forward slashes, trim everything up to and including
3472    /// the last one.
3473    ///
3474    /// Implementation note: in either case, at most 511 characters of cmdline
3475    /// are considered.
3476    #[prost(string, repeated, tag = "1")]
3477    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3478    /// For watermark based triggering or local debugging.
3479    #[prost(uint64, repeated, packed = "false", tag = "2")]
3480    pub pid: ::prost::alloc::vec::Vec<u64>,
3481    /// Only profile target if it was installed by one of the packages given.
3482    /// Special values are:
3483    /// * @system: installed on the system partition
3484    /// * @product: installed on the product partition
3485    /// * @null: sideloaded
3486    /// Supported on Android 12+.
3487    #[prost(string, repeated, tag = "7")]
3488    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3489    /// Dump at a predefined interval.
3490    #[prost(message, optional, tag = "3")]
3491    pub continuous_dump_config: ::core::option::Option<
3492        java_hprof_config::ContinuousDumpConfig,
3493    >,
3494    /// Do not profile processes whose anon RSS + swap < given value.
3495    #[prost(uint32, optional, tag = "4")]
3496    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3497    /// Do not profile processes whose Java heap size < given value.
3498    #[prost(uint32, optional, tag = "9")]
3499    pub min_java_heap_size_kb: ::core::option::Option<u32>,
3500    /// Include the process' /proc/self/smaps.
3501    /// This only shows maps that:
3502    /// * start with /system
3503    /// * start with /vendor
3504    /// * start with /data/app
3505    /// * contain "extracted in memory from Y", where Y matches any of the above
3506    ///
3507    /// Superseded by |smaps_config| in perfetto v58+.
3508    #[prost(bool, optional, tag = "5")]
3509    pub dump_smaps: ::core::option::Option<bool>,
3510    /// If set, include /proc/self/smaps memory mappings.
3511    ///
3512    /// Added in perfetto v58.
3513    #[prost(message, optional, tag = "8")]
3514    pub smaps_config: ::core::option::Option<SmapsConfig>,
3515    /// Exclude objects of the following types from the profile. This can be
3516    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
3517    #[prost(string, repeated, tag = "6")]
3518    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3519    /// Dump the callsite of the thread triggering the OutOfMemoryError.
3520    /// Only applicable to OutOfMemoryError heap dumps
3521    #[prost(bool, optional, tag = "10")]
3522    pub dump_oome_callstack: ::core::option::Option<bool>,
3523}
3524/// Nested message and enum types in `JavaHprofConfig`.
3525pub mod java_hprof_config {
3526    /// If dump_interval_ms != 0, the following configuration is used.
3527    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3528    pub struct ContinuousDumpConfig {
3529        /// ms to wait before first continuous dump.
3530        /// A dump is always created at the beginning of the trace.
3531        #[prost(uint32, optional, tag = "1")]
3532        pub dump_phase_ms: ::core::option::Option<u32>,
3533        /// ms to wait between following dumps.
3534        #[prost(uint32, optional, tag = "2")]
3535        pub dump_interval_ms: ::core::option::Option<u32>,
3536        /// If true, scans all the processes to find `process_cmdline` and filter by
3537        /// `min_anonymous_memory_kb` only at data source start. Default on Android
3538        /// S-.
3539        ///
3540        /// If false, rescans all the processes to find on every dump. Default on
3541        /// Android T+.
3542        #[prost(bool, optional, tag = "3")]
3543        pub scan_pids_only_on_start: ::core::option::Option<bool>,
3544    }
3545}
3546#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3547pub struct PerfEvents {}
3548/// Nested message and enum types in `PerfEvents`.
3549pub mod perf_events {
3550    /// The primary event to count. If recording multiple events, this
3551    /// counter is the "group leader".
3552    /// Commented from the perspective of its use in |PerfEventConfig|.
3553    /// Next id: 13
3554    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3555    pub struct Timebase {
3556        /// Optional modifiers for the event. Modelled after the perftool's
3557        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
3558        /// Currently supported: count scoping such as :u, :k, :uk, ...
3559        /// Modifiers can differ between the timebase and followers.
3560        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
3561        pub modifiers: ::prost::alloc::vec::Vec<i32>,
3562        /// If set, samples will be timestamped with the given clock.
3563        /// If unset, the clock is chosen by the implementation.
3564        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
3565        /// used for hardware events (due to interrupt safety), for which the
3566        /// recommendation is to use one of the monotonic clocks.
3567        #[prost(enumeration = "PerfClock", optional, tag = "11")]
3568        pub timestamp_clock: ::core::option::Option<i32>,
3569        /// Optional arbitrary name for the event, to identify it in the parsed
3570        /// trace. Does *not* affect the profiling itself. If unset, the trace
3571        /// parser will choose a suitable name.
3572        #[prost(string, optional, tag = "10")]
3573        pub name: ::core::option::Option<::prost::alloc::string::String>,
3574        /// How often to snapshot the counter, along with any follower events and
3575        /// any additional sampled data such as callstacks.
3576        ///
3577        /// This choice also controls how the readings are taken:
3578        /// * With |frequency| or |period|, samples are taken by the kernel
3579        ///    into a ring buffer. Analogous to `perf record`.
3580        /// * With |poll_period_ms|, the userspace periodically snapshots
3581        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3582        /// Prefer the sampling options unless you're recording PMUs whose
3583        /// perf drivers only support the reading mode.
3584        ///
3585        /// If unset, an implementation-defined sampling default is used.
3586        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
3587        pub interval: ::core::option::Option<timebase::Interval>,
3588        /// Counting event to use as the timebase.
3589        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3590        /// which is what you usually want.
3591        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
3592        pub event: ::core::option::Option<timebase::Event>,
3593    }
3594    /// Nested message and enum types in `Timebase`.
3595    pub mod timebase {
3596        /// How often to snapshot the counter, along with any follower events and
3597        /// any additional sampled data such as callstacks.
3598        ///
3599        /// This choice also controls how the readings are taken:
3600        /// * With |frequency| or |period|, samples are taken by the kernel
3601        ///    into a ring buffer. Analogous to `perf record`.
3602        /// * With |poll_period_ms|, the userspace periodically snapshots
3603        ///    the counters using the read syscall. Analogous to `perf stat -I`.
3604        /// Prefer the sampling options unless you're recording PMUs whose
3605        /// perf drivers only support the reading mode.
3606        ///
3607        /// If unset, an implementation-defined sampling default is used.
3608        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
3609        pub enum Interval {
3610            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
3611            /// same as 1/period.
3612            /// Details: the actual sampling will still be based on a period, but the
3613            /// kernel will dynamically adjust it based on the observed event rate, to
3614            /// approximate this frequency. Works best with steady-rate events like
3615            /// timers.
3616            /// Not guaranteed to be honored as the kernel can throttle the sampling
3617            /// rate if it's too high.
3618            #[prost(uint64, tag = "2")]
3619            Frequency(u64),
3620            /// Per-cpu sampling will occur every |period| counts of |event|.
3621            /// Prefer |frequency| by default, as it's easier to oversample with a
3622            /// fixed period.
3623            /// Not guaranteed to be honored as the kernel can throttle the sampling
3624            /// rate if it's too high.
3625            #[prost(uint64, tag = "1")]
3626            Period(u64),
3627            /// Per-cpu values are read by the userspace every interval. If using this
3628            /// mode, only follower events are supported. Options such as
3629            /// |PerfEventConfig.CallstackSampling| are incompatible.
3630            /// The period can't be guaranteed to be exact since the readings are taken
3631            /// by userspace.
3632            #[prost(uint32, tag = "6")]
3633            PollPeriodMs(u32),
3634        }
3635        /// Counting event to use as the timebase.
3636        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
3637        /// which is what you usually want.
3638        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3639        pub enum Event {
3640            #[prost(enumeration = "super::Counter", tag = "4")]
3641            Counter(i32),
3642            #[prost(message, tag = "3")]
3643            Tracepoint(super::Tracepoint),
3644            #[prost(message, tag = "5")]
3645            RawEvent(super::RawEvent),
3646        }
3647    }
3648    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3649    pub struct Tracepoint {
3650        /// Group and name for the tracepoint, acceptable forms:
3651        /// * "sched/sched_switch"
3652        /// * "sched:sched_switch"
3653        #[prost(string, optional, tag = "1")]
3654        pub name: ::core::option::Option<::prost::alloc::string::String>,
3655        /// Optional field-level filter for the tracepoint. Only events matching this
3656        /// filter will be counted (and therefore contribute to the sampling period).
3657        /// Example: "prev_pid >= 42 && next_pid == 0".
3658        /// For full syntax, see kernel documentation on "Event filtering":
3659        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
3660        #[prost(string, optional, tag = "2")]
3661        pub filter: ::core::option::Option<::prost::alloc::string::String>,
3662    }
3663    /// Syscall-level description of the event, propagated to the perf_event_attr
3664    /// struct. Primarily for local use-cases, since the event availability and
3665    /// encoding is hardware-specific.
3666    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3667    pub struct RawEvent {
3668        /// Either |type| or |pmu_name| can be set.
3669        #[prost(uint32, optional, tag = "1")]
3670        pub r#type: ::core::option::Option<u32>,
3671        #[prost(uint64, optional, tag = "2")]
3672        pub config: ::core::option::Option<u64>,
3673        #[prost(uint64, optional, tag = "3")]
3674        pub config1: ::core::option::Option<u64>,
3675        #[prost(uint64, optional, tag = "4")]
3676        pub config2: ::core::option::Option<u64>,
3677        /// The name of a dynamic PMU under /sys/bus/event_source/devices
3678        /// (e.g. "armv8_pmuv3").
3679        /// If set, leave |type| unset.
3680        /// Android: the relevant sysfs paths are not allowlisted by default, so
3681        /// this option will require a rooted device with selinux disabled.
3682        #[prost(string, optional, tag = "5")]
3683        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
3684    }
3685    /// Builtin counter names from the uapi header. Commented with their perf tool
3686    /// aliases.
3687    /// TODO(rsavitski): consider generating enums for cache events (should be
3688    /// finite), and generally make this list as extensive as possible. Excluding
3689    /// things like dynamic PMUs since those don't fit into a static enum.
3690    /// Next id: 21
3691    #[derive(
3692        Clone,
3693        Copy,
3694        Debug,
3695        PartialEq,
3696        Eq,
3697        Hash,
3698        PartialOrd,
3699        Ord,
3700        ::prost::Enumeration
3701    )]
3702    #[repr(i32)]
3703    pub enum Counter {
3704        UnknownCounter = 0,
3705        /// cpu-clock
3706        SwCpuClock = 1,
3707        /// page-faults, faults
3708        SwPageFaults = 2,
3709        /// task-clock
3710        SwTaskClock = 3,
3711        /// context-switches, cs
3712        SwContextSwitches = 4,
3713        /// cpu-migrations, migrations
3714        SwCpuMigrations = 5,
3715        /// minor-faults
3716        SwPageFaultsMin = 6,
3717        /// major-faults
3718        SwPageFaultsMaj = 7,
3719        /// alignment-faults
3720        SwAlignmentFaults = 8,
3721        /// emulation-faults
3722        SwEmulationFaults = 9,
3723        /// dummy
3724        SwDummy = 20,
3725        /// cpu-cycles, cycles
3726        HwCpuCycles = 10,
3727        /// instructions
3728        HwInstructions = 11,
3729        /// cache-references
3730        HwCacheReferences = 12,
3731        /// cache-misses
3732        HwCacheMisses = 13,
3733        /// branch-instructions, branches
3734        HwBranchInstructions = 14,
3735        /// branch-misses
3736        HwBranchMisses = 15,
3737        /// bus-cycles
3738        HwBusCycles = 16,
3739        /// stalled-cycles-frontend, idle-cycles-frontend
3740        HwStalledCyclesFrontend = 17,
3741        /// stalled-cycles-backend, idle-cycles-backend
3742        HwStalledCyclesBackend = 18,
3743        /// ref-cycles
3744        HwRefCpuCycles = 19,
3745    }
3746    impl Counter {
3747        /// String value of the enum field names used in the ProtoBuf definition.
3748        ///
3749        /// The values are not transformed in any way and thus are considered stable
3750        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3751        pub fn as_str_name(&self) -> &'static str {
3752            match self {
3753                Self::UnknownCounter => "UNKNOWN_COUNTER",
3754                Self::SwCpuClock => "SW_CPU_CLOCK",
3755                Self::SwPageFaults => "SW_PAGE_FAULTS",
3756                Self::SwTaskClock => "SW_TASK_CLOCK",
3757                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
3758                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
3759                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
3760                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
3761                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
3762                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
3763                Self::SwDummy => "SW_DUMMY",
3764                Self::HwCpuCycles => "HW_CPU_CYCLES",
3765                Self::HwInstructions => "HW_INSTRUCTIONS",
3766                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
3767                Self::HwCacheMisses => "HW_CACHE_MISSES",
3768                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
3769                Self::HwBranchMisses => "HW_BRANCH_MISSES",
3770                Self::HwBusCycles => "HW_BUS_CYCLES",
3771                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
3772                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
3773                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
3774            }
3775        }
3776        /// Creates an enum from field names used in the ProtoBuf definition.
3777        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3778            match value {
3779                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
3780                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
3781                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
3782                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
3783                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
3784                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
3785                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
3786                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
3787                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
3788                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
3789                "SW_DUMMY" => Some(Self::SwDummy),
3790                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
3791                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
3792                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
3793                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
3794                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
3795                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
3796                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
3797                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
3798                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
3799                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
3800                _ => None,
3801            }
3802        }
3803    }
3804    /// Subset of clocks that is supported by perf timestamping.
3805    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
3806    /// would require additions to the trace clock synchronisation logic.
3807    #[derive(
3808        Clone,
3809        Copy,
3810        Debug,
3811        PartialEq,
3812        Eq,
3813        Hash,
3814        PartialOrd,
3815        Ord,
3816        ::prost::Enumeration
3817    )]
3818    #[repr(i32)]
3819    pub enum PerfClock {
3820        UnknownPerfClock = 0,
3821        Realtime = 1,
3822        Monotonic = 2,
3823        MonotonicRaw = 3,
3824        Boottime = 4,
3825    }
3826    impl PerfClock {
3827        /// String value of the enum field names used in the ProtoBuf definition.
3828        ///
3829        /// The values are not transformed in any way and thus are considered stable
3830        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3831        pub fn as_str_name(&self) -> &'static str {
3832            match self {
3833                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
3834                Self::Realtime => "PERF_CLOCK_REALTIME",
3835                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
3836                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
3837                Self::Boottime => "PERF_CLOCK_BOOTTIME",
3838            }
3839        }
3840        /// Creates an enum from field names used in the ProtoBuf definition.
3841        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3842            match value {
3843                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
3844                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
3845                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
3846                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
3847                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
3848                _ => None,
3849            }
3850        }
3851    }
3852    #[derive(
3853        Clone,
3854        Copy,
3855        Debug,
3856        PartialEq,
3857        Eq,
3858        Hash,
3859        PartialOrd,
3860        Ord,
3861        ::prost::Enumeration
3862    )]
3863    #[repr(i32)]
3864    pub enum EventModifier {
3865        UnknownEventModifier = 0,
3866        /// count only while in userspace
3867        CountUserspace = 1,
3868        /// count only while in kernel
3869        CountKernel = 2,
3870        /// count only while in hypervisor
3871        CountHypervisor = 3,
3872    }
3873    impl EventModifier {
3874        /// String value of the enum field names used in the ProtoBuf definition.
3875        ///
3876        /// The values are not transformed in any way and thus are considered stable
3877        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3878        pub fn as_str_name(&self) -> &'static str {
3879            match self {
3880                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
3881                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
3882                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
3883                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
3884            }
3885        }
3886        /// Creates an enum from field names used in the ProtoBuf definition.
3887        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3888            match value {
3889                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
3890                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
3891                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
3892                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
3893                _ => None,
3894            }
3895        }
3896    }
3897}
3898/// Additional events associated with a leader.
3899/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
3900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3901pub struct FollowerEvent {
3902    /// Modifiers can differ between the timebase and followers.
3903    #[prost(
3904        enumeration = "perf_events::EventModifier",
3905        repeated,
3906        packed = "false",
3907        tag = "5"
3908    )]
3909    pub modifiers: ::prost::alloc::vec::Vec<i32>,
3910    /// Optional arbitrary name for the event, to identify it in the parsed
3911    /// trace. Does *not* affect the profiling itself. If unset, the trace
3912    /// parser will choose a suitable name.
3913    #[prost(string, optional, tag = "4")]
3914    pub name: ::core::option::Option<::prost::alloc::string::String>,
3915    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
3916    pub event: ::core::option::Option<follower_event::Event>,
3917}
3918/// Nested message and enum types in `FollowerEvent`.
3919pub mod follower_event {
3920    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
3921    pub enum Event {
3922        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
3923        Counter(i32),
3924        #[prost(message, tag = "2")]
3925        Tracepoint(super::perf_events::Tracepoint),
3926        #[prost(message, tag = "3")]
3927        RawEvent(super::perf_events::RawEvent),
3928    }
3929}
3930/// Configuration for the traced_perf profiler.
3931///
3932/// Example config for basic cpu profiling:
3933///    perf_event_config {
3934///      timebase {
3935///        frequency: 80
3936///      }
3937///      callstack_sampling {
3938///        scope {
3939///          target_cmdline: "surfaceflinger"
3940///          target_cmdline: "system_server"
3941///        }
3942///        kernel_frames: true
3943///      }
3944///    }
3945///
3946/// Next id: 23
3947#[derive(Clone, PartialEq, ::prost::Message)]
3948pub struct PerfEventConfig {
3949    /// What event to sample on, and how often.
3950    /// Defined in common/perf_events.proto.
3951    #[prost(message, optional, tag = "15")]
3952    pub timebase: ::core::option::Option<perf_events::Timebase>,
3953    /// Other events associated with the leader described in the timebase.
3954    #[prost(message, repeated, tag = "19")]
3955    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
3956    /// If set, the profiler will sample userspace processes' callstacks at the
3957    /// interval specified by the |timebase|.
3958    /// If unset, the profiler will record only the event counts.
3959    #[prost(message, optional, tag = "16")]
3960    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
3961    /// List of cpu indices for counting. If empty, the default is all cpus.
3962    ///
3963    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
3964    /// counter-only traces. A future change will likely reorganise the options,
3965    /// but this field will continue to be supported.
3966    ///
3967    /// Available since: perfetto v50.
3968    #[prost(uint32, repeated, packed = "false", tag = "20")]
3969    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
3970    /// Allow failure of perf_event_open
3971    #[prost(bool, optional, tag = "21")]
3972    pub ignore_open_failure: ::core::option::Option<bool>,
3973    /// If not empty, consider only CPUs whose CPUID matches one of these values.
3974    #[prost(string, repeated, tag = "22")]
3975    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3976    /// How often the per-cpu ring buffers are read by the producer.
3977    /// If unset, an implementation-defined default is used.
3978    #[prost(uint32, optional, tag = "8")]
3979    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
3980    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
3981    /// kernel. If set, must be a power of two.
3982    /// If unset, an implementation-defined default is used.
3983    #[prost(uint32, optional, tag = "3")]
3984    pub ring_buffer_pages: ::core::option::Option<u32>,
3985    /// Drop samples if the heap memory held by the samples in the unwinder queue
3986    /// is above the given limit. This counts the memory across all concurrent data
3987    /// sources (not just this one's), and there is no fairness guarantee - the
3988    /// whole quota might be used up by a concurrent source.
3989    #[prost(uint64, optional, tag = "17")]
3990    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
3991    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
3992    /// footprint exceeds this value.
3993    #[prost(uint32, optional, tag = "13")]
3994    pub max_daemon_memory_kb: ::core::option::Option<u32>,
3995    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
3996    /// sampled process. This is primarily for Android, where this lookup is
3997    /// asynchronous. As long as the producer is waiting, the associated samples
3998    /// will be kept enqueued (putting pressure on the capacity of the shared
3999    /// unwinding queue). Once a lookup for a process expires, all associated
4000    /// samples are discarded. However, if the lookup still succeeds after the
4001    /// timeout, future samples will be handled normally.
4002    /// If unset, an implementation-defined default is used.
4003    #[prost(uint32, optional, tag = "9")]
4004    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
4005    /// Optional period for clearing state cached by the userspace unwinder. This
4006    /// is a heavy operation that is only necessary for traces that target a wide
4007    /// set of processes, and require the memory footprint to be reset
4008    /// periodically. To effectively disable the cache clearing, set to a value
4009    /// greater than your trace duration.
4010    ///
4011    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
4012    ///
4013    /// If zero or unset:
4014    /// * before perfetto v52: no cache clearing.
4015    /// * perfetto v52+: implementation chooses an infrequent default.
4016    #[prost(uint32, optional, tag = "10")]
4017    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
4018    /// If set, only profile target if it was installed by a package with one of
4019    /// these names. Special values:
4020    /// * "@system": installed on the system partition
4021    /// * "@product": installed on the product partition
4022    /// * "@null": sideloaded
4023    /// Supported on Android 12+.
4024    #[prost(string, repeated, tag = "18")]
4025    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4026    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
4027    /// We rely on this to detect such configs.
4028    #[prost(bool, optional, tag = "1")]
4029    pub all_cpus: ::core::option::Option<bool>,
4030    #[prost(uint32, optional, tag = "2")]
4031    pub sampling_frequency: ::core::option::Option<u32>,
4032    #[prost(bool, optional, tag = "12")]
4033    pub kernel_frames: ::core::option::Option<bool>,
4034    #[prost(int32, repeated, packed = "false", tag = "4")]
4035    pub target_pid: ::prost::alloc::vec::Vec<i32>,
4036    #[prost(string, repeated, tag = "5")]
4037    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4038    #[prost(int32, repeated, packed = "false", tag = "6")]
4039    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4040    #[prost(string, repeated, tag = "7")]
4041    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4042    #[prost(uint32, optional, tag = "11")]
4043    pub additional_cmdline_count: ::core::option::Option<u32>,
4044}
4045/// Nested message and enum types in `PerfEventConfig`.
4046pub mod perf_event_config {
4047    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4048    pub struct CallstackSampling {
4049        /// Defines a set of processes for which samples are retained/skipped. If
4050        /// unset, all samples are kept, but beware that it will be very heavy on the
4051        /// stack unwinder, which might start dropping samples due to overload.
4052        #[prost(message, optional, tag = "1")]
4053        pub scope: ::core::option::Option<Scope>,
4054        /// If true, callstacks will include the kernel-space frames. Such frames can
4055        /// be identified by a magical "kernel" string as their mapping name.
4056        /// Requires traced_perf to be running as root, or kptr_restrict to have been
4057        /// manually unrestricted. On Android, the platform should do the right thing
4058        /// on debug builds.
4059        /// This does *not* disclose KASLR, as only the function names are emitted.
4060        #[prost(bool, optional, tag = "2")]
4061        pub kernel_frames: ::core::option::Option<bool>,
4062        /// Whether to record and unwind userspace callstacks. If unset, defaults to
4063        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
4064        /// as the most common default (this defaulting is only applicable if the
4065        /// outer CallstackSampling message is explicitly set).
4066        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
4067        pub user_frames: ::core::option::Option<i32>,
4068    }
4069    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4070    pub struct Scope {
4071        /// Process ID (TGID) allowlist. If this list is not empty, only matching
4072        /// samples will be retained. If multiple allow/deny-lists are
4073        /// specified by the config, then all of them are evaluated for each sampled
4074        /// process.
4075        #[prost(int32, repeated, packed = "false", tag = "1")]
4076        pub target_pid: ::prost::alloc::vec::Vec<i32>,
4077        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4078        /// comm string). The semantics of this field were changed since its original
4079        /// introduction.
4080        ///
4081        /// On Android T+ (13+), this field can specify a single wildcard (*), and
4082        /// the profiler will attempt to match it in two possible ways:
4083        /// * if the pattern starts with a '/', then it is matched against the first
4084        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4085        ///    "/bin/echo".
4086        /// * otherwise the pattern is matched against the part of argv0
4087        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4088        ///    For example "echo" would match "/bin/echo".
4089        ///
4090        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4091        /// normalized prior to an exact string comparison. Normalization is as
4092        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4093        /// the string contains forward slashes, trim everything up to and including
4094        /// the last one.
4095        ///
4096        /// Implementation note: in either case, at most 511 characters of cmdline
4097        /// are considered.
4098        #[prost(string, repeated, tag = "2")]
4099        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4100        /// List of excluded pids.
4101        #[prost(int32, repeated, packed = "false", tag = "3")]
4102        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4103        /// List of excluded cmdlines. See description of |target_cmdline| for how
4104        /// this is handled.
4105        #[prost(string, repeated, tag = "4")]
4106        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4107        /// Number of additional command lines to sample. Only those which are
4108        /// neither explicitly included nor excluded will be considered. Processes
4109        /// are accepted on a first come, first served basis.
4110        #[prost(uint32, optional, tag = "5")]
4111        pub additional_cmdline_count: ::core::option::Option<u32>,
4112        /// If set to N, all encountered processes will be put into one of the N
4113        /// possible bins, and only one randomly-chosen bin will be selected for
4114        /// unwinding. The binning is simply "pid % N", under the assumption that
4115        /// low-order bits of pids are roughly uniformly distributed. Other explicit
4116        /// inclusions/exclusions in this |Scope| message are still respected.
4117        ///
4118        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
4119        /// values will be queryable in trace processor under the "stats" table as
4120        /// "perf_process_shard_count" and "perf_chosen_process_shard".
4121        ///
4122        /// NB: all data sources in a config that set |process_shard_count| must set
4123        /// it to the same value. The profiler will choose one bin for all those data
4124        /// sources.
4125        #[prost(uint32, optional, tag = "6")]
4126        pub process_shard_count: ::core::option::Option<u32>,
4127    }
4128    /// Userspace unwinding mode.
4129    #[derive(
4130        Clone,
4131        Copy,
4132        Debug,
4133        PartialEq,
4134        Eq,
4135        Hash,
4136        PartialOrd,
4137        Ord,
4138        ::prost::Enumeration
4139    )]
4140    #[repr(i32)]
4141    pub enum UnwindMode {
4142        UnwindUnknown = 0,
4143        /// Do not unwind userspace:
4144        UnwindSkip = 1,
4145        /// Use libunwindstack (default):
4146        UnwindDwarf = 2,
4147        /// Use userspace frame pointer unwinder:
4148        UnwindFramePointer = 3,
4149        /// Ask the kernel to unwind the userspace stack via frame pointers, using
4150        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
4151        /// sample, which avoids the per-sample copy cost and the depth limit
4152        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
4153        /// (including system libraries) is built with frame pointers - the kernel
4154        /// walks the chain and returns instruction addresses, which still need to
4155        /// be symbolized offline using the recorded process mappings.
4156        UnwindKernelFramePointer = 4,
4157    }
4158    impl UnwindMode {
4159        /// String value of the enum field names used in the ProtoBuf definition.
4160        ///
4161        /// The values are not transformed in any way and thus are considered stable
4162        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4163        pub fn as_str_name(&self) -> &'static str {
4164            match self {
4165                Self::UnwindUnknown => "UNWIND_UNKNOWN",
4166                Self::UnwindSkip => "UNWIND_SKIP",
4167                Self::UnwindDwarf => "UNWIND_DWARF",
4168                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
4169                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
4170            }
4171        }
4172        /// Creates an enum from field names used in the ProtoBuf definition.
4173        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4174            match value {
4175                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
4176                "UNWIND_SKIP" => Some(Self::UnwindSkip),
4177                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
4178                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
4179                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
4180                _ => None,
4181            }
4182        }
4183    }
4184}
4185#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4186pub struct ProtoVmConfig {
4187    #[prost(uint32, optional, tag = "1")]
4188    pub memory_limit_kb: ::core::option::Option<u32>,
4189}
4190/// QnxConfig is used with trace_qnx_probes build from
4191/// <https://github.com/qnx-ports/perfetto>
4192#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4193pub struct QnxConfig {
4194    /// The number of buffers that tracelog will init for the QNX trace.
4195    #[prost(uint32, optional, tag = "1")]
4196    pub qnx_kernel_buffers: ::core::option::Option<u32>,
4197    /// The number of kernel buffers that tracelog will init for the QNX trace.
4198    #[prost(uint32, optional, tag = "2")]
4199    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
4200    /// Flag indicating whether the QNX kernel tracing should produce wide
4201    /// events which contain additional data or fast events which are most
4202    /// concise. In fast mode we lose the priority information
4203    #[prost(bool, optional, tag = "3")]
4204    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
4205    /// The number of pages initialized by default the parser's page cache.
4206    #[prost(uint32, optional, tag = "4")]
4207    pub qnx_cache_pages: ::core::option::Option<u32>,
4208    /// The max pages the page cache should allocate (must be at least as big)
4209    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
4210    /// unbounded. The cache will prefer to re-use existing pages so growth will
4211    /// only happen when needed (when parser is not keeping up).
4212    #[prost(int32, optional, tag = "5")]
4213    pub qnx_cache_max_pages: ::core::option::Option<i32>,
4214    /// The initial size of the the buffer used to hold the trace header values
4215    /// this dynamic buffer will grow as needed but reallocs can be avoided by
4216    /// selecting an initial size large enough to hold all the initial header
4217    /// data.
4218    #[prost(uint32, optional, tag = "6")]
4219    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
4220}
4221/// This file is named 'statsd_tracing_config.proto' rather than
4222/// 'statsd_config.proto' (which would be more consistent with the other
4223/// config protos) so it doesn't show up and confuse folks looking for
4224/// the existing statsd_config.proto for configuring statsd itself.
4225/// Same for the config proto itself.
4226#[derive(Clone, PartialEq, ::prost::Message)]
4227pub struct StatsdTracingConfig {
4228    /// This is for the common case of the atom id being known in the enum AtomId.
4229    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
4230    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
4231    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
4232    /// (e.g. non-upstream atoms that don't exist in AOSP).
4233    #[prost(int32, repeated, packed = "false", tag = "2")]
4234    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
4235    #[prost(message, repeated, tag = "3")]
4236    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
4237}
4238#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4239pub struct StatsdPullAtomConfig {
4240    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
4241    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4242    #[prost(int32, repeated, packed = "false", tag = "2")]
4243    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
4244    #[prost(int32, optional, tag = "3")]
4245    pub pull_frequency_ms: ::core::option::Option<i32>,
4246    #[prost(string, repeated, tag = "4")]
4247    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4248}
4249/// This file defines the configuration for the Linux /proc poller data source,
4250/// which injects counters in the trace.
4251/// Counters that are needed in the trace must be explicitly listed in the
4252/// *_counters fields. This is to avoid spamming the trace with all counters
4253/// at all times.
4254/// The sampling rate is configurable. All polling rates (*_period_ms) need
4255/// to be integer multiples of each other.
4256/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
4257/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
4258#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4259pub struct SysStatsConfig {
4260    /// Polls /proc/meminfo every X ms, if non-zero.
4261    /// This is required to be > 10ms to avoid excessive CPU usage.
4262    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
4263    #[prost(uint32, optional, tag = "1")]
4264    pub meminfo_period_ms: ::core::option::Option<u32>,
4265    /// If empty all known counters are reported. Otherwise, only the counters
4266    /// specified below are reported.
4267    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
4268    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
4269    /// Polls /proc/vmstat every X ms, if non-zero.
4270    /// This is required to be > 10ms to avoid excessive CPU usage.
4271    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
4272    #[prost(uint32, optional, tag = "3")]
4273    pub vmstat_period_ms: ::core::option::Option<u32>,
4274    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
4275    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
4276    /// Pols /proc/stat every X ms, if non-zero.
4277    /// This is required to be > 10ms to avoid excessive CPU usage.
4278    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
4279    #[prost(uint32, optional, tag = "5")]
4280    pub stat_period_ms: ::core::option::Option<u32>,
4281    #[prost(
4282        enumeration = "sys_stats_config::StatCounters",
4283        repeated,
4284        packed = "false",
4285        tag = "6"
4286    )]
4287    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
4288    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
4289    /// This is required to be > 10ms to avoid excessive CPU usage.
4290    /// This option can be used to record unchanging values.
4291    /// Updates from frequency changes can come from ftrace/set_clock_rate.
4292    #[prost(uint32, optional, tag = "7")]
4293    pub devfreq_period_ms: ::core::option::Option<u32>,
4294    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
4295    /// This is required to be > 10ms to avoid excessive CPU usage.
4296    #[prost(uint32, optional, tag = "8")]
4297    pub cpufreq_period_ms: ::core::option::Option<u32>,
4298    /// Polls /proc/buddyinfo every X ms, if non-zero.
4299    /// This is required to be > 10ms to avoid excessive CPU usage.
4300    #[prost(uint32, optional, tag = "9")]
4301    pub buddyinfo_period_ms: ::core::option::Option<u32>,
4302    /// Polls /proc/diskstats every X ms, if non-zero.
4303    /// This is required to be > 10ms to avoid excessive CPU usage.
4304    #[prost(uint32, optional, tag = "10")]
4305    pub diskstat_period_ms: ::core::option::Option<u32>,
4306    /// Polls /proc/pressure/* every X ms, if non-zero.
4307    /// This is required to be > 10ms to avoid excessive CPU usage.
4308    #[prost(uint32, optional, tag = "11")]
4309    pub psi_period_ms: ::core::option::Option<u32>,
4310    /// Polls /sys/class/thermal/* every X ms, if non-zero.
4311    /// This is required to be > 10ms to avoid excessive CPU usage.
4312    #[prost(uint32, optional, tag = "12")]
4313    pub thermal_period_ms: ::core::option::Option<u32>,
4314    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
4315    /// This is required to be > 10ms to avoid excessive CPU usage.
4316    #[prost(uint32, optional, tag = "13")]
4317    pub cpuidle_period_ms: ::core::option::Option<u32>,
4318    /// Polls device-specific GPU frequency info every X ms, if non-zero.
4319    /// This is required to be > 10ms to avoid excessive CPU usage.
4320    #[prost(uint32, optional, tag = "14")]
4321    pub gpufreq_period_ms: ::core::option::Option<u32>,
4322    /// Polls /proc/slabinfo every X ms, if non-zero.
4323    /// This is required to be > 10ms to avoid excessive CPU usage.
4324    #[prost(uint32, optional, tag = "15")]
4325    pub slab_period_ms: ::core::option::Option<u32>,
4326}
4327/// Nested message and enum types in `SysStatsConfig`.
4328pub mod sys_stats_config {
4329    #[derive(
4330        Clone,
4331        Copy,
4332        Debug,
4333        PartialEq,
4334        Eq,
4335        Hash,
4336        PartialOrd,
4337        Ord,
4338        ::prost::Enumeration
4339    )]
4340    #[repr(i32)]
4341    pub enum StatCounters {
4342        StatUnspecified = 0,
4343        StatCpuTimes = 1,
4344        StatIrqCounts = 2,
4345        StatSoftirqCounts = 3,
4346        StatForkCount = 4,
4347    }
4348    impl StatCounters {
4349        /// String value of the enum field names used in the ProtoBuf definition.
4350        ///
4351        /// The values are not transformed in any way and thus are considered stable
4352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4353        pub fn as_str_name(&self) -> &'static str {
4354            match self {
4355                Self::StatUnspecified => "STAT_UNSPECIFIED",
4356                Self::StatCpuTimes => "STAT_CPU_TIMES",
4357                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
4358                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
4359                Self::StatForkCount => "STAT_FORK_COUNT",
4360            }
4361        }
4362        /// Creates an enum from field names used in the ProtoBuf definition.
4363        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4364            match value {
4365                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
4366                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
4367                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
4368                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
4369                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
4370                _ => None,
4371            }
4372        }
4373    }
4374}
4375/// This data-source does a one-off recording of system information when
4376/// the trace starts.
4377/// Currently this includes:
4378/// - Values of
4379/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
4380/// datasource has no configuration options at present.
4381#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4382pub struct SystemInfoConfig {
4383    /// If true, records hardware interrupt ID-to-name mappings from
4384    /// /proc/interrupts.
4385    #[prost(bool, optional, tag = "1")]
4386    pub irq_names: ::core::option::Option<bool>,
4387}
4388/// The configuration for a fake producer used in tests.
4389#[derive(Clone, PartialEq, ::prost::Message)]
4390pub struct TestConfig {
4391    /// The number of messages the fake producer should send.
4392    #[prost(uint32, optional, tag = "1")]
4393    pub message_count: ::core::option::Option<u32>,
4394    /// The maximum number of messages which should be sent each second.
4395    /// The actual obserced speed may be lower if the producer is unable to
4396    /// work fast enough.
4397    /// If this is zero or unset, the producer will send as fast as possible.
4398    #[prost(uint32, optional, tag = "2")]
4399    pub max_messages_per_second: ::core::option::Option<u32>,
4400    /// The seed value for a simple multiplicative congruential pseudo-random
4401    /// number sequence.
4402    #[prost(uint32, optional, tag = "3")]
4403    pub seed: ::core::option::Option<u32>,
4404    /// The size of each message in bytes. Should be greater than or equal 5 to
4405    /// account for the number of bytes needed to encode the random number and a
4406    /// null byte for the string.
4407    #[prost(uint32, optional, tag = "4")]
4408    pub message_size: ::core::option::Option<u32>,
4409    /// Whether the producer should send a event batch when the data source is
4410    /// is initially registered.
4411    #[prost(bool, optional, tag = "5")]
4412    pub send_batch_on_register: ::core::option::Option<bool>,
4413    #[prost(message, optional, tag = "6")]
4414    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
4415}
4416/// Nested message and enum types in `TestConfig`.
4417pub mod test_config {
4418    #[derive(Clone, PartialEq, ::prost::Message)]
4419    pub struct DummyFields {
4420        #[prost(uint32, optional, tag = "1")]
4421        pub field_uint32: ::core::option::Option<u32>,
4422        #[prost(int32, optional, tag = "2")]
4423        pub field_int32: ::core::option::Option<i32>,
4424        #[prost(uint64, optional, tag = "3")]
4425        pub field_uint64: ::core::option::Option<u64>,
4426        #[prost(int64, optional, tag = "4")]
4427        pub field_int64: ::core::option::Option<i64>,
4428        #[prost(fixed64, optional, tag = "5")]
4429        pub field_fixed64: ::core::option::Option<u64>,
4430        #[prost(sfixed64, optional, tag = "6")]
4431        pub field_sfixed64: ::core::option::Option<i64>,
4432        #[prost(fixed32, optional, tag = "7")]
4433        pub field_fixed32: ::core::option::Option<u32>,
4434        #[prost(sfixed32, optional, tag = "8")]
4435        pub field_sfixed32: ::core::option::Option<i32>,
4436        #[prost(double, optional, tag = "9")]
4437        pub field_double: ::core::option::Option<f64>,
4438        #[prost(float, optional, tag = "10")]
4439        pub field_float: ::core::option::Option<f32>,
4440        #[prost(sint64, optional, tag = "11")]
4441        pub field_sint64: ::core::option::Option<i64>,
4442        #[prost(sint32, optional, tag = "12")]
4443        pub field_sint32: ::core::option::Option<i32>,
4444        #[prost(string, optional, tag = "13")]
4445        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
4446        #[prost(bytes = "vec", optional, tag = "14")]
4447        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4448    }
4449}
4450/// The following fields define the set of enabled trace categories. Each list
4451/// item is a glob.
4452///
4453/// To determine if category is enabled, it is checked against the filters in
4454/// the following order:
4455///
4456///    1. Exact matches in enabled categories.
4457///    2. Exact matches in enabled tags.
4458///    3. Exact matches in disabled categories.
4459///    4. Exact matches in disabled tags.
4460///    5. Pattern matches in enabled categories.
4461///    6. Pattern matches in enabled tags.
4462///    7. Pattern matches in disabled categories.
4463///    8. Pattern matches in disabled tags.
4464///
4465/// If none of the steps produced a match:
4466///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
4467///   default.
4468///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
4469///
4470/// Examples:
4471///
4472///   - To enable all non-slow/debug categories:
4473///
4474///        enabled_categories: "*"
4475///
4476///   - To enable specific categories:
4477///
4478///        disabled_categories: "*"
4479///        enabled_categories: "my_category"
4480///        enabled_categories: "my_category2"
4481///
4482///   - To enable only categories with a specific tag:
4483///
4484///        disabled_tags: "*"
4485///        enabled_tags: "my_tag"
4486///
4487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4488pub struct TrackEventConfig {
4489    /// Default: \[\]
4490    #[prost(string, repeated, tag = "1")]
4491    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4492    /// Default: \[\]
4493    #[prost(string, repeated, tag = "2")]
4494    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4495    /// Default: \["slow", "debug"\]
4496    #[prost(string, repeated, tag = "3")]
4497    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4498    /// Default: \[\]
4499    #[prost(string, repeated, tag = "4")]
4500    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4501    /// Default: false (i.e. enabled by default)
4502    #[prost(bool, optional, tag = "5")]
4503    pub disable_incremental_timestamps: ::core::option::Option<bool>,
4504    /// Allows to specify a custom unit different than the default (ns).
4505    /// Also affects thread timestamps if enable_thread_time_sampling = true.
4506    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
4507    /// 3000 ns = 3 us.
4508    /// Default: 1 (if unset, it should be read as 1).
4509    #[prost(uint64, optional, tag = "6")]
4510    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
4511    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
4512    /// When true, any debug annotations provided as arguments to the
4513    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
4514    /// still be emitted even if set to true.
4515    #[prost(bool, optional, tag = "7")]
4516    pub filter_debug_annotations: ::core::option::Option<bool>,
4517    /// Default: false (i.e. disabled)
4518    /// When true, the SDK samples and emits the current thread time counter value
4519    /// for each event on the current thread's track. This value represents the
4520    /// total CPU time consumed by that thread since its creation.
4521    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
4522    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
4523    #[prost(bool, optional, tag = "8")]
4524    pub enable_thread_time_sampling: ::core::option::Option<bool>,
4525    /// When enable_thread_time_sampling is true, and this is specified, thread
4526    /// time is sampled only if the elapsed wall time >
4527    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
4528    /// Effectively, this means thread time will have a leeway of
4529    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
4530    #[prost(uint64, optional, tag = "10")]
4531    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
4532    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
4533    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
4534    /// out.
4535    #[prost(bool, optional, tag = "9")]
4536    pub filter_dynamic_event_names: ::core::option::Option<bool>,
4537}
4538/// The configuration that is passed to each data source when starting tracing.
4539/// Next id: 143
4540#[derive(Clone, PartialEq, ::prost::Message)]
4541pub struct DataSourceConfig {
4542    /// Data source unique name, e.g., "linux.ftrace". This must match
4543    /// the name passed by the data source when it registers (see
4544    /// RegisterDataSource()).
4545    #[prost(string, optional, tag = "1")]
4546    pub name: ::core::option::Option<::prost::alloc::string::String>,
4547    /// The index of the logging buffer where TracePacket(s) will be stored.
4548    /// This field is quite subtle as it has a double semantic:
4549    /// 1) When the config is passed, this field is a 0-based index relative to the
4550    ///     buffer array in the TraceConfig and defines the mapping between data
4551    ///     sources and config. From v54 this is optional because the user can
4552    ///     instead use target_buffer_name.
4553    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
4554    ///     producer, it overwrites this field with the global buffer index (which
4555    ///     depends on other tracing sessions active). This tells the producer which
4556    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
4557    ///     service always sets the resolved global id, even when using
4558    ///     `target_buffer_name`.
4559    /// In hindsight we should have used two different fields given even in v0 they
4560    /// had a different semantic. But now it's too late as this would be a major
4561    /// protocol breaking change.
4562    #[prost(uint32, optional, tag = "2")]
4563    pub target_buffer: ::core::option::Option<u32>,
4564    /// Alternative to |target_buffer|. References a buffer by name (as specified
4565    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
4566    /// readable and less error-prone than using buffer indices.
4567    /// If both |target_buffer| and |target_buffer_name| are specified, they must
4568    /// refer to the same buffer, otherwise the service will reject the config.
4569    /// Using both fields allows configs to work with both old and new versions
4570    /// of the tracing service. Introduced in v54.
4571    #[prost(string, optional, tag = "11")]
4572    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
4573    /// Set by the service to indicate the duration of the trace.
4574    /// DO NOT SET in consumer as this will be overridden by the service.
4575    #[prost(uint32, optional, tag = "3")]
4576    pub trace_duration_ms: ::core::option::Option<u32>,
4577    /// If true, |trace_duration_ms| should count also time in suspend. This
4578    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
4579    #[prost(bool, optional, tag = "122")]
4580    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4581    /// Set by the service to indicate how long it waits after StopDataSource.
4582    /// DO NOT SET in consumer as this will be overridden by the service.
4583    #[prost(uint32, optional, tag = "7")]
4584    pub stop_timeout_ms: ::core::option::Option<u32>,
4585    /// Set by the service to indicate whether this tracing session has extra
4586    /// guardrails.
4587    /// DO NOT SET in consumer as this will be overridden by the service.
4588    #[prost(bool, optional, tag = "6")]
4589    pub enable_extra_guardrails: ::core::option::Option<bool>,
4590    /// Set by the service to indicate which user initiated this trace.
4591    /// DO NOT SET in consumer as this will be overridden by the service.
4592    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
4593    pub session_initiator: ::core::option::Option<i32>,
4594    /// Set by the service to indicate which tracing session the data source
4595    /// belongs to. The intended use case for this is checking if two data sources,
4596    /// one of which produces metadata for the other one, belong to the same trace
4597    /// session and hence should be linked together.
4598    /// This field was introduced in Aug 2018 after Android P.
4599    /// DO NOT SET in consumer as this will be overridden by the service.
4600    #[prost(uint64, optional, tag = "4")]
4601    pub tracing_session_id: ::core::option::Option<u64>,
4602    /// How to behave when the producer runs out of space in the shared memory
4603    /// buffer. This is only honored by some data sources (in the SDK, the data
4604    /// sources registered with a configurable buffer exhausted policy).
4605    #[prost(
4606        enumeration = "data_source_config::BufferExhaustedPolicy",
4607        optional,
4608        tag = "9"
4609    )]
4610    pub buffer_exhausted_policy: ::core::option::Option<i32>,
4611    #[prost(message, optional, tag = "10")]
4612    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
4613    /// TODO(primiano): today when we enable a protovm_config, we actually accept
4614    /// that if N producers advertise M different versions of the same program we
4615    /// will create M instances of that program.
4616    /// To overcome this, we could move the program to the TraceConfig. But doing
4617    /// so would bloat the trace config size too big and create problems to statsd.
4618    /// Once the config store (b/482305876) exists we should move protovm programs
4619    /// onto that.
4620    #[prost(message, optional, tag = "12")]
4621    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
4622    /// Data source name: linux.ftrace
4623    #[prost(message, optional, tag = "100")]
4624    pub ftrace_config: ::core::option::Option<FtraceConfig>,
4625    /// Data source name: linux.inode_file_map
4626    #[prost(message, optional, tag = "102")]
4627    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
4628    /// Data source name: linux.process_stats
4629    #[prost(message, optional, tag = "103")]
4630    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
4631    /// Data source name: linux.sys_stats
4632    #[prost(message, optional, tag = "104")]
4633    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
4634    /// Data source name: android.heapprofd
4635    /// Introduced in Android 10.
4636    #[prost(message, optional, tag = "105")]
4637    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
4638    /// Data source name: android.java_hprof
4639    /// Introduced in Android 11.
4640    #[prost(message, optional, tag = "110")]
4641    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
4642    /// Data source name: android.power
4643    #[prost(message, optional, tag = "106")]
4644    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
4645    /// Data source name: android.log
4646    #[prost(message, optional, tag = "107")]
4647    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
4648    /// Data source name: gpu.counters
4649    #[prost(message, optional, tag = "108")]
4650    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
4651    /// Data source name: android.game_interventions
4652    #[prost(message, optional, tag = "116")]
4653    pub android_game_intervention_list_config: ::core::option::Option<
4654        AndroidGameInterventionListConfig,
4655    >,
4656    /// Data source name: android.packages_list
4657    #[prost(message, optional, tag = "109")]
4658    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
4659    /// Data source name: linux.perf
4660    #[prost(message, optional, tag = "111")]
4661    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
4662    /// Data source name: vulkan.memory_tracker
4663    #[prost(message, optional, tag = "112")]
4664    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
4665    /// Data source name: track_event
4666    #[prost(message, optional, tag = "113")]
4667    pub track_event_config: ::core::option::Option<TrackEventConfig>,
4668    /// Data source name: android.polled_state
4669    #[prost(message, optional, tag = "114")]
4670    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
4671    /// Data source name: android.system_property
4672    #[prost(message, optional, tag = "118")]
4673    pub android_system_property_config: ::core::option::Option<
4674        AndroidSystemPropertyConfig,
4675    >,
4676    /// Data source name: android.statsd
4677    #[prost(message, optional, tag = "117")]
4678    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
4679    /// Data source name: linux.system_info
4680    #[prost(message, optional, tag = "119")]
4681    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
4682    /// Data source name: linux.frozen_ftrace
4683    #[prost(message, optional, tag = "136")]
4684    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
4685    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
4686    /// avoid proto serialization and de-serialization there because that would
4687    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
4688    /// C++ class for it so it can pass around plain C++ objets.
4689    #[prost(message, optional, tag = "101")]
4690    pub chrome_config: ::core::option::Option<ChromeConfig>,
4691    /// Data source name: code.v8.dev
4692    #[prost(message, optional, tag = "127")]
4693    pub v8_config: ::core::option::Option<V8Config>,
4694    /// If an interceptor is specified here, packets for this data source will be
4695    /// rerouted to the interceptor instead of the main trace buffer. This can be
4696    /// used, for example, to write trace data into ETW or for logging trace points
4697    /// to the console.
4698    ///
4699    /// Note that interceptors are only supported by data sources registered
4700    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
4701    /// traced_probes) may not support interception.
4702    #[prost(message, optional, tag = "115")]
4703    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
4704    /// Data source name: android.network_packets.
4705    /// Introduced in Android 14 (U).
4706    #[prost(message, optional, tag = "120")]
4707    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
4708    /// Data source name: android.surfaceflinger.layers
4709    #[prost(message, optional, tag = "121")]
4710    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
4711    /// Data source name: android.surfaceflinger.transactions
4712    #[prost(message, optional, tag = "123")]
4713    pub surfaceflinger_transactions_config: ::core::option::Option<
4714        SurfaceFlingerTransactionsConfig,
4715    >,
4716    /// Data source name: android.sdk_sysprop_guard
4717    /// Introduced in Android 14 (U) QPR1.
4718    #[prost(message, optional, tag = "124")]
4719    pub android_sdk_sysprop_guard_config: ::core::option::Option<
4720        AndroidSdkSyspropGuardConfig,
4721    >,
4722    /// Data source name: windows.etw
4723    #[prost(message, optional, tag = "125")]
4724    pub etw_config: ::core::option::Option<EtwConfig>,
4725    /// Data source name: android.protolog
4726    #[prost(message, optional, tag = "126")]
4727    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
4728    /// Data source name: android.input.inputevent
4729    #[prost(message, optional, tag = "128")]
4730    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
4731    /// Data source name: android.pixel.modem
4732    #[prost(message, optional, tag = "129")]
4733    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
4734    /// Data source name: android.windowmanager
4735    #[prost(message, optional, tag = "130")]
4736    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
4737    /// Data source name: org.chromium.system_metrics
4738    #[prost(message, optional, tag = "131")]
4739    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
4740    /// Data source name: android.kernel_wakelocks
4741    #[prost(message, optional, tag = "132")]
4742    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
4743    /// Data source name: gpu.renderstages
4744    #[prost(message, optional, tag = "133")]
4745    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
4746    /// Data source name: org.chromium.histogram_samples
4747    #[prost(message, optional, tag = "134")]
4748    pub chromium_histogram_samples: ::core::option::Option<
4749        ChromiumHistogramSamplesConfig,
4750    >,
4751    /// Data source name: android.app_wakelocks
4752    #[prost(message, optional, tag = "135")]
4753    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
4754    /// Data source name: android.cpu_per_uid
4755    #[prost(message, optional, tag = "137")]
4756    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
4757    /// Data source name: android.user_list
4758    #[prost(message, optional, tag = "138")]
4759    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
4760    /// Data source name: android.inputmethod
4761    #[prost(message, optional, tag = "139")]
4762    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
4763    /// Data source name: android.aflags
4764    #[prost(message, optional, tag = "140")]
4765    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
4766    /// Data source name: linux.systemd_journald
4767    #[prost(message, optional, tag = "141")]
4768    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
4769    /// Data source name: android.display.video
4770    #[prost(message, optional, tag = "142")]
4771    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
4772    /// Data source name: qnx.kernel
4773    #[prost(message, optional, tag = "150")]
4774    pub qnx_config: ::core::option::Option<QnxConfig>,
4775    /// This is a fallback mechanism to send a free-form text config to the
4776    /// producer. In theory this should never be needed. All the code that
4777    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
4778    /// the trace config proto and propagate unknown fields. However, if anything
4779    /// in the pipeline (client or backend) ends up breaking this forward compat
4780    /// plan, this field will become the escape hatch to allow future data sources
4781    /// to get some meaningful configuration.
4782    #[prost(string, optional, tag = "1000")]
4783    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
4784    /// This field is only used for testing.
4785    #[prost(message, optional, tag = "1001")]
4786    pub for_testing: ::core::option::Option<TestConfig>,
4787}
4788/// Nested message and enum types in `DataSourceConfig`.
4789pub mod data_source_config {
4790    #[derive(
4791        Clone,
4792        Copy,
4793        Debug,
4794        PartialEq,
4795        Eq,
4796        Hash,
4797        PartialOrd,
4798        Ord,
4799        ::prost::Enumeration
4800    )]
4801    #[repr(i32)]
4802    pub enum SessionInitiator {
4803        Unspecified = 0,
4804        /// This trace was initiated from a trusted system app has DUMP and
4805        /// USAGE_STATS permission. This system app is expected to not expose the
4806        /// trace to the user of the device.
4807        /// This is determined by checking the UID initiating the trace.
4808        TrustedSystem = 1,
4809    }
4810    impl SessionInitiator {
4811        /// String value of the enum field names used in the ProtoBuf definition.
4812        ///
4813        /// The values are not transformed in any way and thus are considered stable
4814        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4815        pub fn as_str_name(&self) -> &'static str {
4816            match self {
4817                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
4818                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
4819            }
4820        }
4821        /// Creates an enum from field names used in the ProtoBuf definition.
4822        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4823            match value {
4824                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
4825                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
4826                _ => None,
4827            }
4828        }
4829    }
4830    #[derive(
4831        Clone,
4832        Copy,
4833        Debug,
4834        PartialEq,
4835        Eq,
4836        Hash,
4837        PartialOrd,
4838        Ord,
4839        ::prost::Enumeration
4840    )]
4841    #[repr(i32)]
4842    pub enum BufferExhaustedPolicy {
4843        /// The data source will use its default buffer exhausted policy, specified
4844        /// by the code when the data source is registered.
4845        BufferExhaustedUnspecified = 0,
4846        /// The data source will drop packets when there's no space in the shared
4847        /// memory buffer.
4848        BufferExhaustedDrop = 1,
4849        /// The data source will wait when there's no space in the shared memory
4850        /// buffer. If there's still not space, after a few seconds, the whole
4851        /// producer process will be aborted.
4852        BufferExhaustedStallThenAbort = 2,
4853        /// The data source will wait when there's no space in the shared memory
4854        /// buffer.  If there's still not space, after a few seconds, the data source
4855        /// will drop packets.
4856        BufferExhaustedStallThenDrop = 3,
4857    }
4858    impl BufferExhaustedPolicy {
4859        /// String value of the enum field names used in the ProtoBuf definition.
4860        ///
4861        /// The values are not transformed in any way and thus are considered stable
4862        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4863        pub fn as_str_name(&self) -> &'static str {
4864            match self {
4865                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
4866                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
4867                Self::BufferExhaustedStallThenAbort => {
4868                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
4869                }
4870                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
4871            }
4872        }
4873        /// Creates an enum from field names used in the ProtoBuf definition.
4874        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4875            match value {
4876                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
4877                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
4878                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
4879                    Some(Self::BufferExhaustedStallThenAbort)
4880                }
4881                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
4882                    Some(Self::BufferExhaustedStallThenDrop)
4883                }
4884                _ => None,
4885            }
4886        }
4887    }
4888}
4889/// The overall config that is used when starting a new tracing session through
4890/// ProducerPort::StartTracing().
4891/// It contains the general config for the logging buffer(s) and the configs for
4892/// all the data source being enabled.
4893///
4894/// Next id: 49.
4895#[derive(Clone, PartialEq, ::prost::Message)]
4896pub struct TraceConfig {
4897    #[prost(message, repeated, tag = "1")]
4898    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
4899    #[prost(message, repeated, tag = "2")]
4900    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
4901    #[prost(message, optional, tag = "20")]
4902    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
4903    /// If specified, the trace will be stopped |duration_ms| after starting.
4904    /// This does *not* count the time the system is suspended, so we will run
4905    /// for duration_ms of system activity, not wall time.
4906    ///
4907    /// However in case of traces with triggers, see
4908    /// TriggerConfig.trigger_timeout_ms instead.
4909    #[prost(uint32, optional, tag = "3")]
4910    pub duration_ms: ::core::option::Option<u32>,
4911    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
4912    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
4913    /// Linux/Android, no-op on other platforms. This is used when dealing with
4914    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
4915    /// wall-time, making them more likely to hit device reboots (and hence loss).
4916    /// This option also changes consistently the semantic of
4917    /// TriggerConfig.stop_delay_ms.
4918    #[prost(bool, optional, tag = "36")]
4919    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
4920    /// This is set when --dropbox is passed to the Perfetto command line client
4921    /// and enables guardrails that limit resource usage for traces requested
4922    /// by statsd.
4923    #[prost(bool, optional, tag = "4")]
4924    pub enable_extra_guardrails: ::core::option::Option<bool>,
4925    /// Reject producers that are not running under the same UID as the tracing
4926    /// service.
4927    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
4928    pub lockdown_mode: ::core::option::Option<i32>,
4929    #[prost(message, repeated, tag = "6")]
4930    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
4931    /// Statsd-specific metadata.
4932    #[prost(message, optional, tag = "7")]
4933    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
4934    /// When true && |output_path| is empty, the EnableTracing() request must
4935    /// provide a file descriptor. The service will then periodically read packets
4936    /// out of the trace buffer and store it into the passed file.
4937    /// If |output_path| is not empty no fd should be passed, the service
4938    /// will create a new file and write into that (see comment below).
4939    #[prost(bool, optional, tag = "8")]
4940    pub write_into_file: ::core::option::Option<bool>,
4941    /// This must point to a non-existing file. If the file exists the service
4942    /// will NOT overwrite and will fail instead as a security precaution.
4943    /// On Android, when this is used with the system traced, the path must be
4944    /// within /data/misc/perfetto-traces/ or the trace will fail.
4945    /// This option has been introduced in Android R. Before R write_into_file
4946    /// can be used only with the "pass a file descriptor over IPC" mode.
4947    #[prost(string, optional, tag = "29")]
4948    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
4949    /// Optional. If non-zero tunes the write period. A min value of 100ms is
4950    /// enforced (i.e. smaller values are ignored).
4951    #[prost(uint32, optional, tag = "9")]
4952    pub file_write_period_ms: ::core::option::Option<u32>,
4953    /// Optional. When non zero the periodic write stops once at most X bytes
4954    /// have been written into the file. Tracing is disabled when this limit is
4955    /// reached, even if |duration_ms| has not been reached yet.
4956    #[prost(uint64, optional, tag = "10")]
4957    pub max_file_size_bytes: ::core::option::Option<u64>,
4958    #[prost(message, optional, tag = "11")]
4959    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
4960    /// When true, data sources are not started until an explicit call to
4961    /// StartTracing() on the consumer port. This is to support early
4962    /// initialization and fast trace triggering. This can be used only when the
4963    /// Consumer explicitly triggers the StartTracing() method.
4964    /// This should not be used in a remote trace config via statsd, doing so will
4965    /// result in a hung trace session.
4966    #[prost(bool, optional, tag = "12")]
4967    pub deferred_start: ::core::option::Option<bool>,
4968    /// When set, it periodically issues a Flush() to all data source, forcing them
4969    /// to commit their data into the tracing service. This can be used for
4970    /// quasi-real-time streaming mode and to guarantee some partial ordering of
4971    /// events in the trace in windows of X ms.
4972    ///
4973    /// Warning: Perfetto automatically handles periodic flushing so in most
4974    /// scenarios setting this field is not needed. High frequency flushing can
4975    /// significantly impact performance.
4976    #[prost(uint32, optional, tag = "13")]
4977    pub flush_period_ms: ::core::option::Option<u32>,
4978    /// Wait for this long for producers to acknowledge flush requests.
4979    /// Default 5s.
4980    #[prost(uint32, optional, tag = "14")]
4981    pub flush_timeout_ms: ::core::option::Option<u32>,
4982    /// Wait for this long for producers to acknowledge stop requests.
4983    /// Default 5s.
4984    #[prost(uint32, optional, tag = "23")]
4985    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
4986    /// Android-only. If set, sends an intent to the Traceur system app when the
4987    /// trace ends to notify it about the trace readiness.
4988    #[prost(bool, optional, tag = "16")]
4989    pub notify_traceur: ::core::option::Option<bool>,
4990    /// This field was introduced in Android S.
4991    /// Android-only. If set to a value > 0, marks the trace session as a candidate
4992    /// for being attached to a bugreport. This field effectively acts as a z-index
4993    /// for bugreports. When Android's dumpstate runs perfetto
4994    /// --save-for-bugreport, traced will pick the tracing session with the highest
4995    /// score (score <= 0 is ignored) and:
4996    /// On Android S, T:  will steal its contents, save the trace into
4997    ///      a known path and stop prematurely.
4998    /// On Android U+: will create a read-only snapshot and save that into a known
4999    ///      path, without stoppin the original tracing session.
5000    /// When this field is set the tracing session becomes eligible to be cloned
5001    /// by other UIDs.
5002    #[prost(int32, optional, tag = "30")]
5003    pub bugreport_score: ::core::option::Option<i32>,
5004    /// When set, defines name of the file that will be saved under
5005    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
5006    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
5007    /// starting from the highest `bugreport_score`.
5008    /// Introduced in v42 / Android V.
5009    #[prost(string, optional, tag = "38")]
5010    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
5011    #[prost(message, optional, tag = "17")]
5012    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
5013    /// When this is non-empty the perfetto command line tool will ignore the rest
5014    /// of this TraceConfig and instead connect to the perfetto service as a
5015    /// producer and send these triggers, potentially stopping or starting traces
5016    /// that were previous configured to use a TriggerConfig.
5017    #[prost(string, repeated, tag = "18")]
5018    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5019    #[prost(message, optional, tag = "21")]
5020    pub incremental_state_config: ::core::option::Option<
5021        trace_config::IncrementalStateConfig,
5022    >,
5023    /// No longer needed as we unconditionally allow tracing on user builds.
5024    #[deprecated]
5025    #[prost(bool, optional, tag = "19")]
5026    pub allow_user_build_tracing: ::core::option::Option<bool>,
5027    /// If set the tracing service will ensure there is at most one tracing session
5028    /// with this key.
5029    #[prost(string, optional, tag = "22")]
5030    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
5031    #[deprecated]
5032    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
5033    pub compression_type: ::core::option::Option<i32>,
5034    #[prost(message, optional, tag = "47")]
5035    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
5036    #[prost(message, optional, tag = "25")]
5037    pub incident_report_config: ::core::option::Option<
5038        trace_config::IncidentReportConfig,
5039    >,
5040    /// Android-only. Not for general use. If specified, sets the logging to statsd
5041    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
5042    /// this to enabled (if not explicitly set in the config) when specifying
5043    /// --upload.
5044    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
5045    pub statsd_logging: ::core::option::Option<i32>,
5046    /// An identifier clients can use to tie this trace to other logging.
5047    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
5048    /// Trace UUID. If this field is set, the tracing service will respect the
5049    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
5050    /// gap-less snapshotting is not used.
5051    #[deprecated]
5052    #[prost(int64, optional, tag = "27")]
5053    pub trace_uuid_msb: ::core::option::Option<i64>,
5054    #[deprecated]
5055    #[prost(int64, optional, tag = "28")]
5056    pub trace_uuid_lsb: ::core::option::Option<i64>,
5057    #[prost(message, optional, tag = "33")]
5058    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
5059    #[prost(message, optional, tag = "34")]
5060    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
5061    #[prost(message, optional, tag = "35")]
5062    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
5063    #[prost(message, repeated, tag = "39")]
5064    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
5065    /// Priority boost to be applied to the traced process, when the session is
5066    /// running.
5067    #[prost(message, optional, tag = "40")]
5068    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
5069    /// When set to a value > 0, this tracing session will be started in
5070    /// "exclusive mode". This has the following semantics:
5071    /// - It can only be set by shell or root users.
5072    /// - A new exclusive session will only be started if its priority is strictly
5073    ///    higher than any other active tracing session.
5074    /// - If a new exclusive session is started, all other existing tracing
5075    ///    sessions (exclusive or not) are aborted.
5076    /// - While an exclusive session is active, any new non-exclusive session (or
5077    ///    any exclusive session with a lower or equal priority) will be rejected.
5078    ///
5079    /// Introduced in: perfetto v52.
5080    /// Supported on: Android 25Q3+.
5081    #[prost(uint32, optional, tag = "41")]
5082    pub exclusive_prio: ::core::option::Option<u32>,
5083    /// Configures how the service should handle flushing data from producers
5084    /// before periodically writing the trace into the output file.
5085    /// Only applicable when |write_into_file| is true.
5086    ///
5087    /// By default, if |write_into_file| is set, the service periodically issues
5088    /// a Flush() to all data sources before writing buffers into the file.
5089    /// This ensures the file always contains the latest available data.
5090    ///
5091    /// Introduced in: perfetto v54.
5092    /// Supported on: Android 26Q1+.
5093    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
5094    pub write_flush_mode: ::core::option::Option<i32>,
5095    /// Whether to sync the output file to storage after each periodic write pass.
5096    /// Only applicable when |write_into_file| is true.
5097    ///
5098    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
5099    /// sync to storage on every write.
5100    ///
5101    /// Introduced in: perfetto v54.
5102    /// Supported on: Android 26Q1+.
5103    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
5104    pub fflush_post_write: ::core::option::Option<i32>,
5105    /// When true, data sources in remote producers (machines connected via
5106    /// traced_relay) will be matched by default. When false (the default), data
5107    /// sources only match the host machine. In either case, an explicit
5108    /// |DataSource.machine_name_filter| takes priority.
5109    ///
5110    /// NB: perfetto versions before v54 do not have this option and match across
5111    /// machines by default. To be compatible across this version boundary, either
5112    /// set this field to true, or set an explicit machine_name_filter on all data
5113    /// sources.
5114    ///
5115    /// Introduced in: perfetto v54.
5116    #[prost(bool, optional, tag = "43")]
5117    pub trace_all_machines: ::core::option::Option<bool>,
5118    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
5119    /// into it and surfaced by trace_processor in the `metadata` table (see
5120    /// common/trace_attributes.proto). Typically set via
5121    /// `perfetto --add-attribute key=value`.
5122    ///
5123    /// Introduced in: perfetto v58.
5124    #[prost(message, optional, tag = "48")]
5125    pub trace_attributes: ::core::option::Option<TraceAttributes>,
5126}
5127/// Nested message and enum types in `TraceConfig`.
5128pub mod trace_config {
5129    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5130    pub struct BufferConfig {
5131        #[prost(uint32, optional, tag = "1")]
5132        pub size_kb: ::core::option::Option<u32>,
5133        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
5134        pub fill_policy: ::core::option::Option<i32>,
5135        /// When true the buffer is moved (rather than copied) onto the cloned
5136        /// session, and an empty buffer of the same size is allocated in the source
5137        /// tracing session. This feature will likely get deprecated in the future.
5138        /// It been introduced mainly to support the surfaceflinger snapshot dump
5139        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
5140        /// that case we don't want to retain another in-memory copy of the buffer.
5141        #[prost(bool, optional, tag = "5")]
5142        pub transfer_on_clone: ::core::option::Option<bool>,
5143        /// Used in conjunction with transfer_on_clone. When true the buffer is
5144        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
5145        /// that if the data source took too long to write the data in a previous
5146        /// clone-related flush, we don't end up with a mixture of leftovers from
5147        /// the previous write and new data.
5148        #[prost(bool, optional, tag = "6")]
5149        pub clear_before_clone: ::core::option::Option<bool>,
5150        /// Optional name for this buffer. If set, data sources can reference this
5151        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
5152        /// using the buffer index. Buffer names must be unique within a tracing
5153        /// session. This provides a more human-readable and less error-prone way to
5154        /// configure which buffer a data source writes to.
5155        #[prost(string, optional, tag = "7")]
5156        pub name: ::core::option::Option<::prost::alloc::string::String>,
5157        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
5158        pub experimental_mode: ::core::option::Option<i32>,
5159    }
5160    /// Nested message and enum types in `BufferConfig`.
5161    pub mod buffer_config {
5162        #[derive(
5163            Clone,
5164            Copy,
5165            Debug,
5166            PartialEq,
5167            Eq,
5168            Hash,
5169            PartialOrd,
5170            Ord,
5171            ::prost::Enumeration
5172        )]
5173        #[repr(i32)]
5174        pub enum FillPolicy {
5175            Unspecified = 0,
5176            /// Default behavior. The buffer operates as a conventional ring buffer.
5177            /// If the writer is faster than the reader (or if the reader reads only
5178            /// after tracing is stopped) newly written packets will overwrite old
5179            /// packets.
5180            RingBuffer = 1,
5181            /// Behaves like RING_BUFFER as long as there is space in the buffer or
5182            /// the reader catches up with the writer. As soon as the writer hits
5183            /// an unread chunk, it stops accepting new data in the buffer.
5184            Discard = 2,
5185        }
5186        impl FillPolicy {
5187            /// String value of the enum field names used in the ProtoBuf definition.
5188            ///
5189            /// The values are not transformed in any way and thus are considered stable
5190            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5191            pub fn as_str_name(&self) -> &'static str {
5192                match self {
5193                    Self::Unspecified => "UNSPECIFIED",
5194                    Self::RingBuffer => "RING_BUFFER",
5195                    Self::Discard => "DISCARD",
5196                }
5197            }
5198            /// Creates an enum from field names used in the ProtoBuf definition.
5199            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5200                match value {
5201                    "UNSPECIFIED" => Some(Self::Unspecified),
5202                    "RING_BUFFER" => Some(Self::RingBuffer),
5203                    "DISCARD" => Some(Self::Discard),
5204                    _ => None,
5205                }
5206            }
5207        }
5208        /// When true, uses the experimental TraceBufferV2 implementation for this
5209        /// buffer. This is for testing purposes only and may be removed in future
5210        /// versions.
5211        #[derive(
5212            Clone,
5213            Copy,
5214            Debug,
5215            PartialEq,
5216            Eq,
5217            Hash,
5218            PartialOrd,
5219            Ord,
5220            ::prost::Enumeration
5221        )]
5222        #[repr(i32)]
5223        pub enum ExperimentalMode {
5224            /// Use the default V1 implementation.
5225            ModeUnspecified = 0,
5226            /// Use TraceBufferV2.
5227            TraceBufferV2 = 1,
5228        }
5229        impl ExperimentalMode {
5230            /// String value of the enum field names used in the ProtoBuf definition.
5231            ///
5232            /// The values are not transformed in any way and thus are considered stable
5233            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5234            pub fn as_str_name(&self) -> &'static str {
5235                match self {
5236                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
5237                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
5238                }
5239            }
5240            /// Creates an enum from field names used in the ProtoBuf definition.
5241            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5242                match value {
5243                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
5244                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
5245                    _ => None,
5246                }
5247            }
5248        }
5249    }
5250    #[derive(Clone, PartialEq, ::prost::Message)]
5251    pub struct DataSource {
5252        /// Filters and data-source specific config. It contains also the unique name
5253        /// of the data source, the one passed in the  DataSourceDescriptor when they
5254        /// register on the service.
5255        #[prost(message, optional, tag = "1")]
5256        pub config: ::core::option::Option<super::DataSourceConfig>,
5257        /// Optional. If multiple producers (~processes) expose the same data source
5258        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
5259        /// the data source is enabled only for producers whose names match any of
5260        /// the filters.
5261        /// |producer_name_filter| has to be an exact match, while
5262        /// |producer_name_regex_filter| is a regular expression.
5263        /// This allows to enable a data source only for specific processes.
5264        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
5265        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
5266        #[prost(string, repeated, tag = "2")]
5267        pub producer_name_filter: ::prost::alloc::vec::Vec<
5268            ::prost::alloc::string::String,
5269        >,
5270        #[prost(string, repeated, tag = "3")]
5271        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
5272            ::prost::alloc::string::String,
5273        >,
5274        /// Filter by machine names. The name of a machine is determined by the
5275        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
5276        /// variable is not set then the
5277        /// persist.traced_relay.machine_name system property is used. If the
5278        /// sysprop isn't set or not in an Android system, then the machine name by
5279        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
5280        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
5281        /// to the host machine, which is the machine running traced.
5282        #[prost(string, repeated, tag = "4")]
5283        pub machine_name_filter: ::prost::alloc::vec::Vec<
5284            ::prost::alloc::string::String,
5285        >,
5286    }
5287    /// Config for disabling builtin data sources in the tracing service.
5288    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5289    pub struct BuiltinDataSource {
5290        /// Disable emitting clock timestamps into the trace.
5291        #[prost(bool, optional, tag = "1")]
5292        pub disable_clock_snapshotting: ::core::option::Option<bool>,
5293        /// Disable echoing the original trace config in the trace.
5294        #[prost(bool, optional, tag = "2")]
5295        pub disable_trace_config: ::core::option::Option<bool>,
5296        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
5297        #[prost(bool, optional, tag = "3")]
5298        pub disable_system_info: ::core::option::Option<bool>,
5299        /// Disable emitting events for data-source state changes (e.g. the marker
5300        /// for all data sources having ACKed the start of the trace).
5301        #[prost(bool, optional, tag = "4")]
5302        pub disable_service_events: ::core::option::Option<bool>,
5303        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
5304        /// also ClockSnapshot's primary_trace_clock. The configured value is written
5305        /// into the trace as part of the ClockSnapshots emitted by the service.
5306        /// Trace processor will attempt to translate packet/event timestamps from
5307        /// various data sources (and their chosen clock domains) to this domain
5308        /// during import. Added in Android R.
5309        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
5310        pub primary_trace_clock: ::core::option::Option<i32>,
5311        /// Time interval in between snapshotting of sync markers, clock snapshots,
5312        /// stats, and other periodic service-emitted events. Note that the service
5313        /// only keeps track of the first and the most recent snapshot until
5314        /// ReadBuffers() is called.
5315        #[prost(uint32, optional, tag = "6")]
5316        pub snapshot_interval_ms: ::core::option::Option<u32>,
5317        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
5318        /// clock should be used for periodic snapshots of service-emitted events.
5319        /// This means, if a snapshot *should* have happened during suspend, it will
5320        /// happen immediately after the device resumes.
5321        ///
5322        /// Choosing a clock like this is done on best-effort basis; not all
5323        /// platforms (e.g. Windows) expose a clock which can be used for periodic
5324        /// tasks counting suspend. If such a clock is not available, the service
5325        /// falls back to the best-available alternative.
5326        ///
5327        /// Introduced in Android S.
5328        /// TODO(lalitm): deprecate this in T and make this the default if nothing
5329        /// crashes in S.
5330        #[prost(bool, optional, tag = "7")]
5331        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
5332        /// Disables the reporting of per-trace-writer histograms in TraceStats.
5333        #[prost(bool, optional, tag = "8")]
5334        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
5335        /// Disable emitting extension descriptors into the trace.
5336        #[prost(bool, optional, tag = "9")]
5337        pub disable_extension_descriptors: ::core::option::Option<bool>,
5338        /// Emit state changes of other tracing sessions running concurrently
5339        /// with this one (see ConcurrentSessionEvent).
5340        ///
5341        /// Introduced in v58 / Android 26Q3+.
5342        #[prost(bool, optional, tag = "10")]
5343        pub enable_concurrent_session_events: ::core::option::Option<bool>,
5344    }
5345    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5346    pub struct ProducerConfig {
5347        /// Identifies the producer for which this config is for.
5348        #[prost(string, optional, tag = "1")]
5349        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
5350        /// Specifies the preferred size of the shared memory buffer. If the size is
5351        /// larger than the max size, the max will be used. If it is smaller than
5352        /// the page size or doesn't fit pages evenly into it, it will fall back to
5353        /// the size specified by the producer or finally the default shared memory
5354        /// size.
5355        #[prost(uint32, optional, tag = "2")]
5356        pub shm_size_kb: ::core::option::Option<u32>,
5357        /// Specifies the preferred size of each page in the shared memory buffer.
5358        /// Must be an integer multiple of 4K.
5359        #[prost(uint32, optional, tag = "3")]
5360        pub page_size_kb: ::core::option::Option<u32>,
5361    }
5362    /// Contains statsd-specific metadata about an alert associated with the trace.
5363    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5364    pub struct StatsdMetadata {
5365        /// The identifier of the alert which triggered this trace.
5366        #[prost(int64, optional, tag = "1")]
5367        pub triggering_alert_id: ::core::option::Option<i64>,
5368        /// The uid which registered the triggering configuration with statsd.
5369        #[prost(int32, optional, tag = "2")]
5370        pub triggering_config_uid: ::core::option::Option<i32>,
5371        /// The identifier of the config which triggered the alert.
5372        #[prost(int64, optional, tag = "3")]
5373        pub triggering_config_id: ::core::option::Option<i64>,
5374        /// The identifier of the subscription which triggered this trace.
5375        #[prost(int64, optional, tag = "4")]
5376        pub triggering_subscription_id: ::core::option::Option<i64>,
5377    }
5378    /// Contains flags which override the default values of the guardrails inside
5379    /// Perfetto.
5380    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5381    pub struct GuardrailOverrides {
5382        /// Override the default limit (in bytes) for uploading data to server within
5383        /// a 24 hour period.
5384        /// On R-, this override only affected userdebug builds. Since S, it also
5385        /// affects user builds.
5386        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
5387        /// was removed from Perfetto.
5388        #[deprecated]
5389        #[prost(uint64, optional, tag = "1")]
5390        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
5391        /// Overrides the guardrail for maximum trace buffer size.
5392        /// Available on U+
5393        #[prost(uint32, optional, tag = "2")]
5394        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
5395    }
5396    /// Triggers allow producers to start or stop the tracing session when an event
5397    /// occurs.
5398    ///
5399    /// For example if we are tracing probabilistically, most traces will be
5400    /// uninteresting. Triggers allow us to keep only the interesting ones such as
5401    /// those traces during which the device temperature reached a certain
5402    /// threshold. In this case the producer can activate a trigger to keep
5403    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
5404    /// (START_TRACING) because it knows something is about to happen.
5405    #[derive(Clone, PartialEq, ::prost::Message)]
5406    pub struct TriggerConfig {
5407        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
5408        pub trigger_mode: ::core::option::Option<i32>,
5409        /// This flag is really a workaround for b/274931668. This is needed only
5410        /// when deploying configs to different versions of the tracing service.
5411        /// When this is set to true this has the same effect of setting trigger_mode
5412        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
5413        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
5414        /// versions of Android and fall back to STOP_TRACING on older versions where
5415        /// CLONE_SNAPSHOT did not exist.
5416        /// When using this flag, trigger_mode must be set to STOP_TRACING.
5417        #[prost(bool, optional, tag = "5")]
5418        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
5419        /// A list of triggers which are related to this configuration. If ANY
5420        /// trigger is seen then an action will be performed based on |trigger_mode|.
5421        #[prost(message, repeated, tag = "2")]
5422        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
5423        /// Required and must be positive if a TriggerConfig is specified. This is
5424        /// how long this TraceConfig should wait for a trigger to arrive. After this
5425        /// period of time if no trigger is seen the TracingSession will be cleaned
5426        /// up.
5427        #[prost(uint32, optional, tag = "3")]
5428        pub trigger_timeout_ms: ::core::option::Option<u32>,
5429    }
5430    /// Nested message and enum types in `TriggerConfig`.
5431    pub mod trigger_config {
5432        #[derive(Clone, PartialEq, ::prost::Message)]
5433        pub struct Trigger {
5434            /// The producer must specify this name to activate the trigger.
5435            #[prost(string, optional, tag = "1")]
5436            pub name: ::core::option::Option<::prost::alloc::string::String>,
5437            /// An std::regex that will match the producer that can activate this
5438            /// trigger. This is optional. If unset any producers can activate this
5439            /// trigger.
5440            #[prost(string, optional, tag = "2")]
5441            pub producer_name_regex: ::core::option::Option<
5442                ::prost::alloc::string::String,
5443            >,
5444            /// After a trigger is received either in START_TRACING or STOP_TRACING
5445            /// mode then the trace will end |stop_delay_ms| after triggering.
5446            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
5447            /// snapshot.
5448            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
5449            /// based on wall-clock, counting also time in suspend.
5450            #[prost(uint32, optional, tag = "3")]
5451            pub stop_delay_ms: ::core::option::Option<u32>,
5452            /// Limits the number of traces this trigger can start/stop in a rolling
5453            /// 24 hour window. If this field is unset or zero, no limit is applied and
5454            /// activiation of this trigger *always* starts/stops the trace.
5455            #[prost(uint32, optional, tag = "4")]
5456            pub max_per_24_h: ::core::option::Option<u32>,
5457            /// A value between 0 and 1 which encodes the probability of skipping a
5458            /// trigger with this name. This is useful for reducing the probability
5459            /// of high-frequency triggers from dominating trace finaization. If this
5460            /// field is unset or zero, the trigger will *never* be skipped. If this
5461            /// field is greater than or equal to 1, this trigger will *always* be
5462            /// skipped i.e. it will be as if this trigger was never included in the
5463            /// first place.
5464            /// This probability check is applied *before* any other limits. For
5465            /// example, if |max_per_24_h| is also set, first we will check if the
5466            /// probability bar is met and only then will we check the |max_per_24_h|
5467            /// limit.
5468            #[prost(double, optional, tag = "5")]
5469            pub skip_probability: ::core::option::Option<f64>,
5470        }
5471        #[derive(
5472            Clone,
5473            Copy,
5474            Debug,
5475            PartialEq,
5476            Eq,
5477            Hash,
5478            PartialOrd,
5479            Ord,
5480            ::prost::Enumeration
5481        )]
5482        #[repr(i32)]
5483        pub enum TriggerMode {
5484            Unspecified = 0,
5485            /// When this mode is chosen, data sources are not started until one of the
5486            /// |triggers| are received. This supports early initialization and fast
5487            /// starting of the tracing system. On triggering, the session will then
5488            /// record for |stop_delay_ms|. However if no trigger is seen
5489            /// after |trigger_timeout_ms| the session will be stopped and no data will
5490            /// be returned.
5491            StartTracing = 1,
5492            /// When this mode is chosen, the session will be started via the normal
5493            /// EnableTracing() & StartTracing(). If no trigger is ever seen
5494            /// the session will be stopped after |trigger_timeout_ms| and no data will
5495            /// be returned. However if triggered the trace will stop after
5496            /// |stop_delay_ms| and any data in the buffer will be returned to the
5497            /// consumer.
5498            StopTracing = 2,
5499            /// When this mode is chosen, this causes a snapshot of the current tracing
5500            /// session to be created after |stop_delay_ms| while the current tracing
5501            /// session continues undisturbed (% an extra flush). This mode can be
5502            /// used only when the tracing session is handled by the "perfetto" cmdline
5503            /// client (which is true in 90% of cases). Part of the business logic
5504            /// necessary for this behavior, and ensuing file handling, lives in
5505            /// perfetto_cmd.cc . On other consumers, this causes only a notification
5506            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
5507            /// consumer is supposed to call CloneSession() itself after the event.
5508            /// Use use_clone_snapshot_if_available=true when targeting older versions
5509            /// of perfetto.
5510            CloneSnapshot = 4,
5511        }
5512        impl TriggerMode {
5513            /// String value of the enum field names used in the ProtoBuf definition.
5514            ///
5515            /// The values are not transformed in any way and thus are considered stable
5516            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5517            pub fn as_str_name(&self) -> &'static str {
5518                match self {
5519                    Self::Unspecified => "UNSPECIFIED",
5520                    Self::StartTracing => "START_TRACING",
5521                    Self::StopTracing => "STOP_TRACING",
5522                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
5523                }
5524            }
5525            /// Creates an enum from field names used in the ProtoBuf definition.
5526            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5527                match value {
5528                    "UNSPECIFIED" => Some(Self::Unspecified),
5529                    "START_TRACING" => Some(Self::StartTracing),
5530                    "STOP_TRACING" => Some(Self::StopTracing),
5531                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
5532                    _ => None,
5533                }
5534            }
5535        }
5536    }
5537    /// Configuration for trace contents that reference earlier trace data. For
5538    /// example, a data source might intern strings, and emit packets containing
5539    /// {interned id : string} pairs. Future packets from that data source can then
5540    /// use the interned ids instead of duplicating the raw string contents. The
5541    /// trace parser will then need to use that interning table to fully interpret
5542    /// the rest of the trace.
5543    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5544    pub struct IncrementalStateConfig {
5545        /// If nonzero, notify eligible data sources to clear their incremental state
5546        /// periodically, with the given period. The notification is sent only to
5547        /// data sources that have |handles_incremental_state_clear| set in their
5548        /// DataSourceDescriptor. The notification requests that the data source
5549        /// stops referring to past trace contents. This is particularly useful when
5550        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
5551        /// trace data.
5552        ///
5553        /// Warning: this time-based global clearing is likely to be removed in the
5554        /// future, to be replaced with a smarter way of sending the notifications
5555        /// only when necessary.
5556        #[prost(uint32, optional, tag = "1")]
5557        pub clear_period_ms: ::core::option::Option<u32>,
5558    }
5559    /// Selects and configures the compression codec, superseding
5560    /// |compression_type|. The codec is chosen by which sub-message is set; when
5561    /// several are set the service picks the highest-numbered one it supports and
5562    /// ignores codecs it doesn't know, so a single config can target old and new
5563    /// services. Falls back to |compression_type| (deflate-only), if given.
5564    ///
5565    /// Introduced in: perfetto v58.
5566    /// Supported on: Android 26Q3+.
5567    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5568    pub struct CompressionConfig {
5569        /// If a config sets more than one of these, the service picks the one with
5570        /// the highest field number (see the rule above): e.g. with deflate (1) and
5571        /// zstd (2) both set, zstd wins.
5572        #[prost(message, optional, tag = "1")]
5573        pub deflate: ::core::option::Option<compression_config::Deflate>,
5574        #[prost(message, optional, tag = "2")]
5575        pub zstd: ::core::option::Option<compression_config::Zstd>,
5576    }
5577    /// Nested message and enum types in `CompressionConfig`.
5578    pub mod compression_config {
5579        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
5580        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5581        pub struct Deflate {}
5582        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5583        pub struct Zstd {
5584            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
5585            /// default (3). Levels above the max are clamped; negatives are valid
5586            /// faster, lower-ratio modes.
5587            #[prost(int32, optional, tag = "1")]
5588            pub level: ::core::option::Option<i32>,
5589        }
5590    }
5591    /// Android-only. Not for general use. If set, saves the trace into an
5592    /// incident. This field is read by perfetto_cmd, rather than the tracing
5593    /// service. This field must be set when passing the --upload flag to
5594    /// perfetto_cmd.
5595    ///
5596    /// In this message, either:
5597    ///   * all of |destination_package|, |destination_class| and |privacy_level|
5598    ///     must be set.
5599    ///   * |skip_incidentd| must be explicitly set to true.
5600    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5601    pub struct IncidentReportConfig {
5602        #[prost(string, optional, tag = "1")]
5603        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
5604        #[prost(string, optional, tag = "2")]
5605        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
5606        /// Level of filtering in the requested incident. See |Destination| in
5607        /// frameworks/base/core/proto/android/privacy.proto.
5608        #[prost(int32, optional, tag = "3")]
5609        pub privacy_level: ::core::option::Option<i32>,
5610        /// If true, then skips saving the trace to incidentd.
5611        ///
5612        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5613        /// or when we explicitly don't want traces to go to incidentd even when they
5614        /// usually would (e.g. configs deployed using statsd but only used for
5615        /// inclusion in bugreports using |bugreport_score|).
5616        ///
5617        /// The motivation for having this flag, instead of just not setting
5618        /// |incident_report_config|, is prevent accidents where
5619        /// |incident_report_config| is omitted by mistake.
5620        #[prost(bool, optional, tag = "5")]
5621        pub skip_incidentd: ::core::option::Option<bool>,
5622        /// If true, do not write the trace into dropbox (i.e. incident only).
5623        /// Otherwise, write to both dropbox and incident.
5624        /// TODO(lalitm): remove this field as we no longer use Dropbox.
5625        #[deprecated]
5626        #[prost(bool, optional, tag = "4")]
5627        pub skip_dropbox: ::core::option::Option<bool>,
5628    }
5629    /// When set applies a post-filter to the trace contents using the filter
5630    /// provided. The filter is applied at ReadBuffers() time and works both in the
5631    /// case of IPC readback and write_into_file. This filter can be generated
5632    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
5633    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
5634    /// design.
5635    ///
5636    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
5637    /// Android T with a different field number. Updated in Android U with a new
5638    /// bytecode version which supports string filtering.
5639    ///
5640    /// =========================
5641    /// Filter bytecode.
5642    /// =========================
5643    #[derive(Clone, PartialEq, ::prost::Message)]
5644    pub struct TraceFilter {
5645        /// The bytecode as implemented in Android T.
5646        #[prost(bytes = "vec", optional, tag = "1")]
5647        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5648        /// The bytecode as implemented in Android U. Adds support for string
5649        /// filtering.
5650        #[prost(bytes = "vec", optional, tag = "2")]
5651        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5652        #[prost(message, optional, tag = "3")]
5653        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
5654        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
5655        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
5656        /// versions ignore this field; new versions apply it.
5657        ///
5658        /// The motivation for this is that adding new opcodes in a backwards
5659        /// compatible way while also minimizing config size is hard. Instead, the
5660        /// overlay mechanism allows us to "patch" specific fields in the original
5661        /// bytecode_v2 with new semantics.
5662        ///
5663        /// See RFC 0011-subset-string-filter-rules.md for more info.
5664        ///
5665        /// Note:
5666        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
5667        /// markers), this overlay uses a triplet format with explicit indices:
5668        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
5669        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
5670        /// Entries must be sorted by (msg_index, field_id).
5671        ///
5672        /// The parser processes bytecode_v2 and this overlay simultaneously:
5673        ///   - any field not mentioned in the overlay is parsed as usual
5674        ///   - any field in the overlay but *not* in the bytecode_v2 is added
5675        ///     with its overlay value
5676        ///   - any field in both the overlay and bytecode_v2 takes the value in the
5677        ///     overlay, the bytecode_v2 value is ignored.
5678        ///
5679        /// Note: despite the name, this was broken in v54 (the overlay was not
5680        /// passed through to the bytecode parser). Only works in v55+.
5681        #[prost(bytes = "vec", optional, tag = "4")]
5682        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5683        /// String filter chain for Perfetto v54+. Rules in this chain either
5684        /// overwrite rules in string_filter_chain (if the name matches) or are
5685        /// appended (if the name doesn't match). This allows modifying existing
5686        /// rules (e.g., changing policy) without duplicating the entire chain.
5687        /// Rules without a name are always appended.
5688        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5689        /// Introduced in: Perfetto v54.
5690        #[prost(message, optional, tag = "5")]
5691        pub string_filter_chain_v54: ::core::option::Option<
5692            trace_filter::StringFilterChain,
5693        >,
5694    }
5695    /// Nested message and enum types in `TraceFilter`.
5696    pub mod trace_filter {
5697        /// A rule specifies how strings should be filtered.
5698        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5699        pub struct StringFilterRule {
5700            /// The policy (i.e. algorithm) dictating how strings matching this rule
5701            /// should be handled.
5702            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
5703            pub policy: ::core::option::Option<i32>,
5704            /// The regex pattern used to match against each string.
5705            #[prost(string, optional, tag = "2")]
5706            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
5707            /// The string which should appear after the tgid in atrace tracepoint
5708            /// strings.
5709            #[prost(string, optional, tag = "3")]
5710            pub atrace_payload_starts_with: ::core::option::Option<
5711                ::prost::alloc::string::String,
5712            >,
5713            /// Optional name for the rule. When merging chains (e.g. via
5714            /// string_filter_chain_v54), rules with matching names in the newer chain
5715            /// will overwrite rules in the base chain. Rules without a name (empty or
5716            /// unset) are always treated as distinct and will be appended.
5717            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5718            /// Introduced in: Perfetto v54.
5719            #[prost(string, optional, tag = "4")]
5720            pub name: ::core::option::Option<::prost::alloc::string::String>,
5721            /// The semantic types this rule applies to.
5722            ///
5723            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
5724            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
5725            /// - If non-empty, the rule applies only to fields whose semantic type
5726            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
5727            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
5728            ///
5729            /// Examples:
5730            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
5731            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
5732            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
5733            ///
5734            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
5735            /// Introduced in: Perfetto v54.
5736            #[prost(
5737                enumeration = "super::super::SemanticType",
5738                repeated,
5739                packed = "false",
5740                tag = "5"
5741            )]
5742            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
5743        }
5744        /// A chain is a list of rules which string will be sequentially checked
5745        /// against.
5746        #[derive(Clone, PartialEq, ::prost::Message)]
5747        pub struct StringFilterChain {
5748            #[prost(message, repeated, tag = "1")]
5749            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
5750        }
5751        /// A policy specifies which algorithm should be used for filtering the
5752        /// string.
5753        #[derive(
5754            Clone,
5755            Copy,
5756            Debug,
5757            PartialEq,
5758            Eq,
5759            Hash,
5760            PartialOrd,
5761            Ord,
5762            ::prost::Enumeration
5763        )]
5764        #[repr(i32)]
5765        pub enum StringFilterPolicy {
5766            SfpUnspecified = 0,
5767            /// Tries to match the string field against |regex_pattern|. If it
5768            /// matches, all matching groups are "redacted" (i.e. replaced with a
5769            /// constant string) and filtering is terminated (i.e. no further rules are
5770            /// checked). If it doesn't match, the string is left unchanged and the
5771            /// next rule in chain is considered.
5772            SfpMatchRedactGroups = 1,
5773            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
5774            /// checking the regex. Specifically, it tries to parse the string field as
5775            /// an atrace tracepoint and checks if the post-tgid field starts with
5776            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5777            /// this check succeeds.
5778            SfpAtraceMatchRedactGroups = 2,
5779            /// Tries to match the string field against |regex_pattern|. If it
5780            /// matches, filtering is terminated (i.e. no further rules are checked).
5781            /// If it doesn't match, the string is left unchanged and the next rule in
5782            /// chain is considered.
5783            SfpMatchBreak = 3,
5784            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
5785            /// the regex. Specifically, it tries to parse the string field as an
5786            /// atrace tracepoint and checks if the post-tgid field starts with
5787            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
5788            /// this check succeeds.
5789            SfpAtraceMatchBreak = 4,
5790            /// Tries to repeatedly search (i.e. find substrings of) the string field
5791            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
5792            /// replaced with a constant string). Once there are no further matches,
5793            /// filtering is terminated (i.e. no further rules are checked).
5794            ///
5795            /// Note that this is policy is a "search" policy not a "match" policy
5796            /// unlike the above policies:
5797            ///   * Match policies require matching the full string i.e. there is an
5798            ///     implicit leading `^` and trailing `$`.
5799            ///   * Search policies perform repeated partial matching of the string
5800            ///     e.g.
5801            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
5802            ///       - Pattern: `foo=(\d+)`
5803            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
5804            ///     where P6O is the redaction string
5805            ///
5806            /// All of this is only performed after some pre-work where we try to parse
5807            /// the string field as an atrace tracepoint and check if the post-tgid
5808            /// field starts with |atrace_post_tgid_starts_with|.
5809            ///
5810            /// If there are no partial matches, the string is left unchanged and the
5811            /// next rule in chain is considered.
5812            SfpAtraceRepeatedSearchRedactGroups = 5,
5813        }
5814        impl StringFilterPolicy {
5815            /// String value of the enum field names used in the ProtoBuf definition.
5816            ///
5817            /// The values are not transformed in any way and thus are considered stable
5818            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5819            pub fn as_str_name(&self) -> &'static str {
5820                match self {
5821                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
5822                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
5823                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
5824                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
5825                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
5826                    Self::SfpAtraceRepeatedSearchRedactGroups => {
5827                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
5828                    }
5829                }
5830            }
5831            /// Creates an enum from field names used in the ProtoBuf definition.
5832            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5833                match value {
5834                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
5835                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
5836                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
5837                        Some(Self::SfpAtraceMatchRedactGroups)
5838                    }
5839                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
5840                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
5841                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
5842                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
5843                    }
5844                    _ => None,
5845                }
5846            }
5847        }
5848    }
5849    /// Android-only. Not for general use. If set, reports the trace to the
5850    /// Android framework. This field is read by perfetto_cmd, rather than the
5851    /// tracing service. This field must be set when passing the --upload flag to
5852    /// perfetto_cmd.
5853    ///
5854    /// In this message, either:
5855    ///   * |reporter_service_package| and |reporter_service_class| must be set.
5856    ///   * |skip_reporting| must be explicitly set to true.
5857    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5858    pub struct AndroidReportConfig {
5859        #[prost(string, optional, tag = "1")]
5860        pub reporter_service_package: ::core::option::Option<
5861            ::prost::alloc::string::String,
5862        >,
5863        #[prost(string, optional, tag = "2")]
5864        pub reporter_service_class: ::core::option::Option<
5865            ::prost::alloc::string::String,
5866        >,
5867        /// If true, then skips reporting the trace to Android framework.
5868        ///
5869        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
5870        /// or when we explicitly don't want to report traces to the framework even
5871        /// when they usually would (e.g. configs deployed using statsd but only
5872        /// used for inclusion in bugreports using |bugreport_score|).
5873        ///
5874        /// The motivation for having this flag, instead of just not setting
5875        /// |framework_report_config|, is prevent accidents where
5876        /// |framework_report_config| is omitted by mistake.
5877        #[prost(bool, optional, tag = "3")]
5878        pub skip_report: ::core::option::Option<bool>,
5879        /// If true, will direct the Android framework to read the data in trace
5880        /// file and pass it to the reporter class over a pipe instead of passing
5881        /// the file descriptor directly.
5882        ///
5883        /// This flag is needed because the Android test framework does not
5884        /// currently support priv-app helper apps (in terms of SELinux) and we
5885        /// really don't want to add an allow rule for untrusted_app to receive
5886        /// trace fds.
5887        ///
5888        /// Because of this, we instead will direct the framework to create a new
5889        /// pipe and pass this to the reporter process instead. As the pipe is
5890        /// created by the framework, we won't have any problems with SELinux
5891        /// (system_server is already allowed to pass pipe fds, even
5892        /// to untrusted apps).
5893        ///
5894        /// As the name suggests this option *MUST* only be used for testing.
5895        /// Note that the framework will reject (and drop) files which are too
5896        /// large both for simplicity and to be minimize the amount of data we
5897        /// pass to a non-priv app (note that the framework will still check
5898        /// manifest permissions even though SELinux permissions are worked around).
5899        #[prost(bool, optional, tag = "4")]
5900        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
5901    }
5902    /// If set, delays the start of tracing by a random duration. The duration is
5903    /// chosen from a uniform distribution between the specified minimum and
5904    /// maximum.
5905    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
5906    /// not work if you communicate with traced directly over the consumer API.
5907    /// Introduced in Android T.
5908    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5909    pub struct CmdTraceStartDelay {
5910        #[prost(uint32, optional, tag = "1")]
5911        pub min_delay_ms: ::core::option::Option<u32>,
5912        #[prost(uint32, optional, tag = "2")]
5913        pub max_delay_ms: ::core::option::Option<u32>,
5914    }
5915    /// When non-empty, ensures that for a each semaphore named `name at most
5916    /// `max_other_session_count`` *other* sessions (whose value is taken of the
5917    /// minimum of all values specified by this config or any already-running
5918    /// session) can be be running.
5919    ///
5920    /// If a semaphore "acquisition" fails, EnableTracing will return an error
5921    /// and the tracing session will not be started (or elgible to start in
5922    /// the case of deferred sessions).
5923    ///
5924    /// This is easiest to explain with an example. Suppose the tracing service has
5925    /// the following active tracing sessions:
5926    ///    S1 = [{name=foo, max_other_session_count=2},
5927    ///          {name=bar, max_other_session_count=0}]
5928    ///    S2 = [{name=foo, max_other_session_count=1},
5929    ///          {name=baz, max_other_session_count=1}]
5930    ///
5931    /// Then, for a new session, the following would be the expected behaviour of
5932    /// EnableSession given the state of `session_semaphores`.
5933    ///    Q: session_semaphores = \[\]
5934    ///    A: Allowed because it does not specify any semaphores. Will be allowed
5935    ///       no matter the state of any other tracing session.
5936    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
5937    ///    A: Allowed because both S2 and this config specify
5938    ///       max_other_session_count=1 for baz.
5939    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
5940    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
5941    ///       takes that slot.
5942    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
5943    ///    A: Denied because S1 takes the the slot specified by both S1 and
5944    ///       this config.
5945    ///
5946    /// Introduced in 24Q3 (Android V).
5947    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5948    pub struct SessionSemaphore {
5949        /// The name of the semaphore. Acts as a unique identifier across all
5950        /// tracing sessions (including the one being started).
5951        #[prost(string, optional, tag = "1")]
5952        pub name: ::core::option::Option<::prost::alloc::string::String>,
5953        /// The maximum number of *other* sesssions which specify the same semaphore
5954        /// which can be active. The minimum of this value across all tracing
5955        /// sessions and the value specified by the config is used when deciding
5956        /// whether the tracing session can be started.
5957        #[prost(uint64, optional, tag = "2")]
5958        pub max_other_session_count: ::core::option::Option<u64>,
5959    }
5960    #[derive(
5961        Clone,
5962        Copy,
5963        Debug,
5964        PartialEq,
5965        Eq,
5966        Hash,
5967        PartialOrd,
5968        Ord,
5969        ::prost::Enumeration
5970    )]
5971    #[repr(i32)]
5972    pub enum LockdownModeOperation {
5973        LockdownUnchanged = 0,
5974        LockdownClear = 1,
5975        LockdownSet = 2,
5976    }
5977    impl LockdownModeOperation {
5978        /// String value of the enum field names used in the ProtoBuf definition.
5979        ///
5980        /// The values are not transformed in any way and thus are considered stable
5981        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5982        pub fn as_str_name(&self) -> &'static str {
5983            match self {
5984                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
5985                Self::LockdownClear => "LOCKDOWN_CLEAR",
5986                Self::LockdownSet => "LOCKDOWN_SET",
5987            }
5988        }
5989        /// Creates an enum from field names used in the ProtoBuf definition.
5990        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5991            match value {
5992                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
5993                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
5994                "LOCKDOWN_SET" => Some(Self::LockdownSet),
5995                _ => None,
5996            }
5997        }
5998    }
5999    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
6000    /// that only ever selects deflate. Kept for backwards compatibility with
6001    /// Perfetto <= v57, whose services predate |compression|. Best effort.
6002    #[derive(
6003        Clone,
6004        Copy,
6005        Debug,
6006        PartialEq,
6007        Eq,
6008        Hash,
6009        PartialOrd,
6010        Ord,
6011        ::prost::Enumeration
6012    )]
6013    #[repr(i32)]
6014    pub enum CompressionType {
6015        Unspecified = 0,
6016        Deflate = 1,
6017    }
6018    impl CompressionType {
6019        /// String value of the enum field names used in the ProtoBuf definition.
6020        ///
6021        /// The values are not transformed in any way and thus are considered stable
6022        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6023        pub fn as_str_name(&self) -> &'static str {
6024            match self {
6025                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
6026                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
6027            }
6028        }
6029        /// Creates an enum from field names used in the ProtoBuf definition.
6030        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6031            match value {
6032                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6033                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
6034                _ => None,
6035            }
6036        }
6037    }
6038    #[derive(
6039        Clone,
6040        Copy,
6041        Debug,
6042        PartialEq,
6043        Eq,
6044        Hash,
6045        PartialOrd,
6046        Ord,
6047        ::prost::Enumeration
6048    )]
6049    #[repr(i32)]
6050    pub enum StatsdLogging {
6051        Unspecified = 0,
6052        Enabled = 1,
6053        Disabled = 2,
6054    }
6055    impl StatsdLogging {
6056        /// String value of the enum field names used in the ProtoBuf definition.
6057        ///
6058        /// The values are not transformed in any way and thus are considered stable
6059        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6060        pub fn as_str_name(&self) -> &'static str {
6061            match self {
6062                Self::Unspecified => "STATSD_LOGGING_UNSPECIFIED",
6063                Self::Enabled => "STATSD_LOGGING_ENABLED",
6064                Self::Disabled => "STATSD_LOGGING_DISABLED",
6065            }
6066        }
6067        /// Creates an enum from field names used in the ProtoBuf definition.
6068        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6069            match value {
6070                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
6071                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
6072                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
6073                _ => None,
6074            }
6075        }
6076    }
6077    #[derive(
6078        Clone,
6079        Copy,
6080        Debug,
6081        PartialEq,
6082        Eq,
6083        Hash,
6084        PartialOrd,
6085        Ord,
6086        ::prost::Enumeration
6087    )]
6088    #[repr(i32)]
6089    pub enum WriteFlushMode {
6090        /// Same as WRITE_FLUSH_AUTO.
6091        WriteFlushUnspecified = 0,
6092        /// Default mode. The service automatically determines the flush frequency
6093        /// to balance performance and data freshness:
6094        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
6095        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
6096        ///     issued every 5s.
6097        /// 2) If file_write_period_ms > 5s:
6098        ///     A flush is issued before every periodic write into the file.
6099        WriteFlushAuto = 1,
6100        /// Do not flush buffers before periodic writes into the file.
6101        /// Use this mode if you want to minimize the performance impact of flushes
6102        /// and can tolerate potentially missing the most recent data in the trace
6103        /// file until the end of the session or an explicit flush.
6104        /// When this mode is selected, |flush_period_ms| is respected.
6105        WriteFlushDisabled = 2,
6106        /// Issue a flush before every periodic write into the file.
6107        /// This ensures that each write into the file contains the most up-to-date
6108        /// data from all data sources, but may have a higher performance overhead.
6109        WriteFlushEnabled = 3,
6110    }
6111    impl WriteFlushMode {
6112        /// String value of the enum field names used in the ProtoBuf definition.
6113        ///
6114        /// The values are not transformed in any way and thus are considered stable
6115        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6116        pub fn as_str_name(&self) -> &'static str {
6117            match self {
6118                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
6119                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
6120                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
6121                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
6122            }
6123        }
6124        /// Creates an enum from field names used in the ProtoBuf definition.
6125        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6126            match value {
6127                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
6128                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
6129                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
6130                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
6131                _ => None,
6132            }
6133        }
6134    }
6135    #[derive(
6136        Clone,
6137        Copy,
6138        Debug,
6139        PartialEq,
6140        Eq,
6141        Hash,
6142        PartialOrd,
6143        Ord,
6144        ::prost::Enumeration
6145    )]
6146    #[repr(i32)]
6147    pub enum FFlushMode {
6148        /// Default: same as FFLUSH_DISABLED.
6149        FflushUnspecified = 0,
6150        /// Do not explicitly sync the file to storage after each write pass.
6151        FflushDisabled = 1,
6152        /// Explicitly sync the file to storage (via fdatasync) after each periodic
6153        /// write pass. Increases data durability at the cost of higher disk I/O
6154        /// overhead.
6155        FflushEnabled = 2,
6156    }
6157    impl FFlushMode {
6158        /// String value of the enum field names used in the ProtoBuf definition.
6159        ///
6160        /// The values are not transformed in any way and thus are considered stable
6161        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6162        pub fn as_str_name(&self) -> &'static str {
6163            match self {
6164                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
6165                Self::FflushDisabled => "FFLUSH_DISABLED",
6166                Self::FflushEnabled => "FFLUSH_ENABLED",
6167            }
6168        }
6169        /// Creates an enum from field names used in the ProtoBuf definition.
6170        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6171            match value {
6172                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
6173                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
6174                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
6175                _ => None,
6176            }
6177        }
6178    }
6179}
6180#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6181pub struct Utsname {
6182    #[prost(string, optional, tag = "1")]
6183    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
6184    #[prost(string, optional, tag = "2")]
6185    pub version: ::core::option::Option<::prost::alloc::string::String>,
6186    #[prost(string, optional, tag = "3")]
6187    pub release: ::core::option::Option<::prost::alloc::string::String>,
6188    #[prost(string, optional, tag = "4")]
6189    pub machine: ::core::option::Option<::prost::alloc::string::String>,
6190}
6191/// Next id: 18
6192#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6193pub struct SystemInfo {
6194    #[prost(message, optional, tag = "1")]
6195    pub utsname: ::core::option::Option<Utsname>,
6196    #[prost(string, optional, tag = "2")]
6197    pub android_build_fingerprint: ::core::option::Option<
6198        ::prost::alloc::string::String,
6199    >,
6200    /// The manufacturer of the product/hardware.
6201    /// Source : "ro.product.manufacturer"
6202    /// Introduced after Android W in Nov 2024 and is not supported on older
6203    /// versions.
6204    #[prost(string, optional, tag = "14")]
6205    pub android_device_manufacturer: ::core::option::Option<
6206        ::prost::alloc::string::String,
6207    >,
6208    /// The SoC model from which trace is collected
6209    #[prost(string, optional, tag = "9")]
6210    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
6211    /// The guest SoC model from which trace is collected in case of VMs
6212    #[prost(string, optional, tag = "13")]
6213    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
6214    /// The hardware reversion from android device
6215    #[prost(string, optional, tag = "10")]
6216    pub android_hardware_revision: ::core::option::Option<
6217        ::prost::alloc::string::String,
6218    >,
6219    /// The storage component from android_device. This field has been introduced
6220    /// after Android W in Aug 2024 and is not supported on older versions.
6221    #[prost(string, optional, tag = "11")]
6222    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
6223    /// The RAM component information from android device. This field has been
6224    /// introduced after Android W in Aug 2024 and is not supported on older
6225    /// versions.
6226    #[prost(string, optional, tag = "12")]
6227    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
6228    /// The serial console information from android device.
6229    #[prost(string, optional, tag = "15")]
6230    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
6231    /// The version of traced (the same returned by `traced --version`).
6232    /// This is a human readable string with and its format varies depending on
6233    /// the build system and the repo (standalone vs AOSP).
6234    /// This is intended for human debugging only.
6235    #[prost(string, optional, tag = "4")]
6236    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
6237    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
6238    /// Introduced in Android T.
6239    #[prost(uint64, optional, tag = "5")]
6240    pub android_sdk_version: ::core::option::Option<u64>,
6241    /// Kernel page size - sysconf(_SC_PAGESIZE).
6242    #[prost(uint32, optional, tag = "6")]
6243    pub page_size: ::core::option::Option<u32>,
6244    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
6245    /// Might be different to the number of online cpus.
6246    /// Introduced in perfetto v44.
6247    #[prost(uint32, optional, tag = "8")]
6248    pub num_cpus: ::core::option::Option<u32>,
6249    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
6250    /// Introduced in v38 / Android V.
6251    #[prost(int32, optional, tag = "7")]
6252    pub timezone_off_mins: ::core::option::Option<i32>,
6253    /// Ticks per second - sysconf(_SC_CLK_TCK).
6254    /// Not serialised as of perfetto v44.
6255    #[prost(int64, optional, tag = "3")]
6256    pub hz: ::core::option::Option<i64>,
6257    /// The size of the system RAM in bytes.
6258    ///
6259    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
6260    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
6261    ///
6262    /// Introduced in perfetto v54 / Android 26Q1+.
6263    #[prost(uint64, optional, tag = "16")]
6264    pub system_ram_bytes: ::core::option::Option<u64>,
6265    /// Human-readable name of the machine this SystemInfo describes, used as the
6266    /// machine's label in the UI (falling back to "machine <id>" when unset).
6267    ///
6268    /// A producer attributing its data to a non-host machine can set this by
6269    /// emitting a SystemInfo packet to give that machine a name. Only meaningful
6270    /// when the packet carries a non-zero machine_id.
6271    #[prost(string, optional, tag = "17")]
6272    pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
6273}
6274/// Statistics for the internals of the tracing service.
6275///
6276/// Next id: 19.
6277#[derive(Clone, PartialEq, ::prost::Message)]
6278pub struct TraceStats {
6279    /// Stats for the TraceBuffer(s) of the current trace session.
6280    #[prost(message, repeated, tag = "1")]
6281    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
6282    /// The thresholds of each the `writer_stats` histogram buckets. This is
6283    /// emitted only once as all WriterStats share the same bucket layout.
6284    /// This field has the same cardinality of the
6285    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
6286    /// (The -1 is because the last overflow bucket is not reported in the _def).
6287    /// An array of values \[10, 100, 1000\] in the _def array means that there are
6288    /// four buckets (3 + the implicit overflow bucket):
6289    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
6290    #[prost(int64, repeated, packed = "false", tag = "17")]
6291    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
6292    #[prost(message, repeated, tag = "18")]
6293    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
6294    /// Num. producers connected (whether they are involved in the current tracing
6295    /// session or not).
6296    #[prost(uint32, optional, tag = "2")]
6297    pub producers_connected: ::core::option::Option<u32>,
6298    /// Num. producers ever seen for all trace sessions since startup (it's a good
6299    /// proxy for inferring num. producers crashed / killed).
6300    #[prost(uint64, optional, tag = "3")]
6301    pub producers_seen: ::core::option::Option<u64>,
6302    /// Num. data sources registered for all trace sessions.
6303    #[prost(uint32, optional, tag = "4")]
6304    pub data_sources_registered: ::core::option::Option<u32>,
6305    /// Num. data sources ever seen for all trace sessions since startup.
6306    #[prost(uint64, optional, tag = "5")]
6307    pub data_sources_seen: ::core::option::Option<u64>,
6308    /// Num. concurrently active tracing sessions.
6309    #[prost(uint32, optional, tag = "6")]
6310    pub tracing_sessions: ::core::option::Option<u32>,
6311    /// Num. buffers for all tracing session (not just the current one). This will
6312    /// be >= buffer_stats.size(), because the latter is only about the current
6313    /// session.
6314    #[prost(uint32, optional, tag = "7")]
6315    pub total_buffers: ::core::option::Option<u32>,
6316    /// Num. chunks that were discarded by the service before attempting to commit
6317    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
6318    #[prost(uint64, optional, tag = "8")]
6319    pub chunks_discarded: ::core::option::Option<u64>,
6320    /// Num. patches that were discarded by the service before attempting to apply
6321    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
6322    #[prost(uint64, optional, tag = "9")]
6323    pub patches_discarded: ::core::option::Option<u64>,
6324    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
6325    /// is a bug in the producer.
6326    #[prost(uint64, optional, tag = "10")]
6327    pub invalid_packets: ::core::option::Option<u64>,
6328    #[prost(message, optional, tag = "11")]
6329    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
6330    /// Count of Flush() requests (either from the Consumer, or self-induced
6331    /// periodic flushes). The final Flush() is also included in the count.
6332    #[prost(uint64, optional, tag = "12")]
6333    pub flushes_requested: ::core::option::Option<u64>,
6334    /// The count of the Flush() requests that were completed successfully.
6335    /// In a well behaving trace this should always be == `flush_requests`.
6336    #[prost(uint64, optional, tag = "13")]
6337    pub flushes_succeeded: ::core::option::Option<u64>,
6338    /// The count of the Flush() requests that failed (in most timed out).
6339    /// In a well behaving trace this should always be == 0.
6340    #[prost(uint64, optional, tag = "14")]
6341    pub flushes_failed: ::core::option::Option<u64>,
6342    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
6343    pub final_flush_outcome: ::core::option::Option<i32>,
6344}
6345/// Nested message and enum types in `TraceStats`.
6346pub mod trace_stats {
6347    /// From TraceBuffer::Stats.
6348    ///
6349    /// Next id: 22.
6350    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6351    pub struct BufferStats {
6352        /// Size of the circular buffer in bytes.
6353        #[prost(uint64, optional, tag = "12")]
6354        pub buffer_size: ::core::option::Option<u64>,
6355        /// Num. bytes written into the circular buffer, including chunk headers.
6356        #[prost(uint64, optional, tag = "1")]
6357        pub bytes_written: ::core::option::Option<u64>,
6358        /// Num. bytes overwritten before they have been read (i.e. loss of data).
6359        #[prost(uint64, optional, tag = "13")]
6360        pub bytes_overwritten: ::core::option::Option<u64>,
6361        /// Total size of chunks that were fully read from the circular buffer by the
6362        /// consumer. This may not be equal to |bytes_written| either in the middle
6363        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
6364        /// size of the chunks read from the buffer, including chunk headers, which
6365        /// will be different from the total size of packets returned to the
6366        /// consumer.
6367        ///
6368        /// The current utilization of the trace buffer (mid-tracing) can be obtained
6369        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
6370        /// adding the difference of |padding_bytes_written| and
6371        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
6372        /// Note that this represents the total size of buffered data in the buffer,
6373        /// yet this data may be spread non-contiguously through the buffer and may
6374        /// be overridden before the utilization reaches 100%.
6375        #[prost(uint64, optional, tag = "14")]
6376        pub bytes_read: ::core::option::Option<u64>,
6377        /// Num. bytes that were allocated as padding between chunks in the circular
6378        /// buffer.
6379        #[prost(uint64, optional, tag = "15")]
6380        pub padding_bytes_written: ::core::option::Option<u64>,
6381        /// Num. of padding bytes that were removed from the circular buffer when
6382        /// they were overwritten.
6383        ///
6384        /// The difference between |padding_bytes_written| and
6385        /// |padding_bytes_cleared| denotes the total size of padding currently
6386        /// present in the buffer.
6387        #[prost(uint64, optional, tag = "16")]
6388        pub padding_bytes_cleared: ::core::option::Option<u64>,
6389        /// Num. chunks (!= packets) written into the buffer.
6390        #[prost(uint64, optional, tag = "2")]
6391        pub chunks_written: ::core::option::Option<u64>,
6392        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
6393        /// the same chunk with additional packets appended to the end.
6394        #[prost(uint64, optional, tag = "10")]
6395        pub chunks_rewritten: ::core::option::Option<u64>,
6396        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
6397        /// instead of rewriting in place. We do this for scraped chunks that have
6398        /// been fully read: their old position can be so close to the write cursor
6399        /// that the packets we just recovered would be overwritten before any read.
6400        ///
6401        /// Introduced in v59 / Android 26Q3+.
6402        #[prost(uint64, optional, tag = "20")]
6403        pub chunks_relocated: ::core::option::Option<u64>,
6404        /// Num. chunks overwritten before they have been read (i.e. loss of data).
6405        #[prost(uint64, optional, tag = "3")]
6406        pub chunks_overwritten: ::core::option::Option<u64>,
6407        /// Num. chunks discarded (i.e. loss of data). Can be > 0 only when a buffer
6408        /// is configured with FillPolicy == DISCARD.
6409        #[prost(uint64, optional, tag = "18")]
6410        pub chunks_discarded: ::core::option::Option<u64>,
6411        /// Num. chunks (!= packets) that were fully read from the circular buffer by
6412        /// the consumer. This may not be equal to |chunks_written| either in the
6413        /// middle of tracing, or if |chunks_overwritten| is non-zero.
6414        #[prost(uint64, optional, tag = "17")]
6415        pub chunks_read: ::core::option::Option<u64>,
6416        /// Num. chunks that were committed out of order.
6417        #[prost(uint64, optional, tag = "11")]
6418        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
6419        /// Num. times the ring buffer wrapped around.
6420        #[prost(uint64, optional, tag = "4")]
6421        pub write_wrap_count: ::core::option::Option<u64>,
6422        /// Num. out-of-band (OOB) patches that succeeded.
6423        #[prost(uint64, optional, tag = "5")]
6424        pub patches_succeeded: ::core::option::Option<u64>,
6425        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
6426        #[prost(uint64, optional, tag = "6")]
6427        pub patches_failed: ::core::option::Option<u64>,
6428        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
6429        /// successful packet read.
6430        #[prost(uint64, optional, tag = "7")]
6431        pub readaheads_succeeded: ::core::option::Option<u64>,
6432        /// Num. readaheads aborted because of missing chunks in the sequence stream.
6433        /// Note that a small number > 0 is totally expected: occasionally, when
6434        /// issuing a read, the very last packet in a sequence might be incomplete
6435        /// (because the producer is still writing it while we read). The read will
6436        /// stop at that point, for that sequence, increasing this counter.
6437        #[prost(uint64, optional, tag = "8")]
6438        pub readaheads_failed: ::core::option::Option<u64>,
6439        /// Num. of violations of the SharedMemoryABI found while writing or reading
6440        /// the buffer. This is an indication of either a bug in the producer(s) or
6441        /// malicious producer(s).
6442        #[prost(uint64, optional, tag = "9")]
6443        pub abi_violations: ::core::option::Option<u64>,
6444        /// Num. of times the service detected packet loss on a trace writer
6445        /// sequence. This is usually caused by exhaustion of available chunks in the
6446        /// writer process's SMB. Note that this relies on the client's TraceWriter
6447        /// indicating this loss to the service -- packets lost for other reasons are
6448        /// not reflected in this stat.
6449        #[prost(uint64, optional, tag = "19")]
6450        pub trace_writer_packet_loss: ::core::option::Option<u64>,
6451    }
6452    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
6453    /// visible as a unique sequence ID in the trace.
6454    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6455    pub struct WriterStats {
6456        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
6457        /// correlate the stats with the actual packet types.
6458        #[prost(uint64, optional, tag = "1")]
6459        pub sequence_id: ::core::option::Option<u64>,
6460        /// The buffer index (0..N, as defined in the TraceConfig).
6461        #[prost(uint32, optional, tag = "4")]
6462        pub buffer: ::core::option::Option<u32>,
6463        /// These two arrays have the same cardinality and match the cardinality of
6464        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
6465        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
6466        /// for each bucket.
6467        #[prost(uint64, repeated, tag = "2")]
6468        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
6469        #[prost(int64, repeated, tag = "3")]
6470        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
6471    }
6472    /// This is set only when the TraceConfig specifies a TraceFilter.
6473    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6474    pub struct FilterStats {
6475        #[prost(uint64, optional, tag = "1")]
6476        pub input_packets: ::core::option::Option<u64>,
6477        #[prost(uint64, optional, tag = "2")]
6478        pub input_bytes: ::core::option::Option<u64>,
6479        #[prost(uint64, optional, tag = "3")]
6480        pub output_bytes: ::core::option::Option<u64>,
6481        #[prost(uint64, optional, tag = "4")]
6482        pub errors: ::core::option::Option<u64>,
6483        #[prost(uint64, optional, tag = "5")]
6484        pub time_taken_ns: ::core::option::Option<u64>,
6485        /// The number of bytes discarded by the filter (i.e. output - input).
6486        /// The array has one entry for each buffer defined in the config (unless no
6487        /// packets for that buffer were seen and hence filtered).
6488        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
6489        /// (output_bytes - input_bytes) because the filter might also discard
6490        /// server-generated synthetic packets, that have no buffer index.
6491        #[prost(uint64, repeated, packed = "false", tag = "20")]
6492        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
6493    }
6494    #[derive(
6495        Clone,
6496        Copy,
6497        Debug,
6498        PartialEq,
6499        Eq,
6500        Hash,
6501        PartialOrd,
6502        Ord,
6503        ::prost::Enumeration
6504    )]
6505    #[repr(i32)]
6506    pub enum FinalFlushOutcome {
6507        FinalFlushUnspecified = 0,
6508        FinalFlushSucceeded = 1,
6509        FinalFlushFailed = 2,
6510    }
6511    impl FinalFlushOutcome {
6512        /// String value of the enum field names used in the ProtoBuf definition.
6513        ///
6514        /// The values are not transformed in any way and thus are considered stable
6515        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6516        pub fn as_str_name(&self) -> &'static str {
6517            match self {
6518                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
6519                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
6520                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
6521            }
6522        }
6523        /// Creates an enum from field names used in the ProtoBuf definition.
6524        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6525            match value {
6526                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
6527                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
6528                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
6529                _ => None,
6530            }
6531        }
6532    }
6533}
6534/// Android aconfig flags (aflags).
6535/// This message captures a snapshot of the state of aconfig flags on the device.
6536/// Keep in sync with:
6537/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
6538#[derive(Clone, PartialEq, ::prost::Message)]
6539pub struct AndroidAflags {
6540    /// A collection of flags.
6541    #[prost(message, repeated, tag = "1")]
6542    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
6543    /// A human-readable error logged if aflags processing fails.
6544    /// This is a perfetto specific field used to help debugging.
6545    #[prost(string, optional, tag = "2")]
6546    pub error: ::core::option::Option<::prost::alloc::string::String>,
6547}
6548/// Nested message and enum types in `AndroidAflags`.
6549pub mod android_aflags {
6550    /// Representation of an aconfig flag and its metadata.
6551    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6552    pub struct Flag {
6553        #[prost(string, optional, tag = "1")]
6554        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
6555        #[prost(string, optional, tag = "2")]
6556        pub name: ::core::option::Option<::prost::alloc::string::String>,
6557        /// The aconfig package (e.g. "com.android.foo"). These are system-level
6558        /// identifiers and not privacy-impacting.
6559        #[prost(string, optional, tag = "3")]
6560        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
6561        /// The container where the flag lives (e.g. "system", "vendor", or mainline
6562        /// module name).
6563        #[prost(string, optional, tag = "4")]
6564        pub container: ::core::option::Option<::prost::alloc::string::String>,
6565        /// The flag value as a string to support different future data types.
6566        #[prost(string, optional, tag = "5")]
6567        pub value: ::core::option::Option<::prost::alloc::string::String>,
6568        /// The value that will be applied after the next reboot, if different from
6569        /// the current value.
6570        #[prost(string, optional, tag = "6")]
6571        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
6572        #[prost(enumeration = "FlagPermission", optional, tag = "7")]
6573        pub permission: ::core::option::Option<i32>,
6574        #[prost(enumeration = "ValuePickedFrom", optional, tag = "8")]
6575        pub value_picked_from: ::core::option::Option<i32>,
6576        #[prost(enumeration = "FlagStorageBackend", optional, tag = "9")]
6577        pub storage_backend: ::core::option::Option<i32>,
6578        #[prost(enumeration = "FlagType", optional, tag = "10")]
6579        pub r#type: ::core::option::Option<i32>,
6580    }
6581    /// Whether a flag can be modified at runtime.
6582    #[derive(
6583        Clone,
6584        Copy,
6585        Debug,
6586        PartialEq,
6587        Eq,
6588        Hash,
6589        PartialOrd,
6590        Ord,
6591        ::prost::Enumeration
6592    )]
6593    #[repr(i32)]
6594    pub enum FlagPermission {
6595        Unspecified = 0,
6596        ReadOnly = 1,
6597        ReadWrite = 2,
6598    }
6599    impl FlagPermission {
6600        /// String value of the enum field names used in the ProtoBuf definition.
6601        ///
6602        /// The values are not transformed in any way and thus are considered stable
6603        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6604        pub fn as_str_name(&self) -> &'static str {
6605            match self {
6606                Self::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
6607                Self::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
6608                Self::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
6609            }
6610        }
6611        /// Creates an enum from field names used in the ProtoBuf definition.
6612        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6613            match value {
6614                "FLAG_PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
6615                "FLAG_PERMISSION_READ_ONLY" => Some(Self::ReadOnly),
6616                "FLAG_PERMISSION_READ_WRITE" => Some(Self::ReadWrite),
6617                _ => None,
6618            }
6619        }
6620    }
6621    /// The source of the current flag value.
6622    #[derive(
6623        Clone,
6624        Copy,
6625        Debug,
6626        PartialEq,
6627        Eq,
6628        Hash,
6629        PartialOrd,
6630        Ord,
6631        ::prost::Enumeration
6632    )]
6633    #[repr(i32)]
6634    pub enum ValuePickedFrom {
6635        Unspecified = 0,
6636        /// The value is the build-time default.
6637        Default = 1,
6638        /// The value comes from a server-side override.
6639        Server = 2,
6640        /// The value comes from a local override on the device.
6641        Local = 3,
6642    }
6643    impl ValuePickedFrom {
6644        /// String value of the enum field names used in the ProtoBuf definition.
6645        ///
6646        /// The values are not transformed in any way and thus are considered stable
6647        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6648        pub fn as_str_name(&self) -> &'static str {
6649            match self {
6650                Self::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
6651                Self::Default => "VALUE_PICKED_FROM_DEFAULT",
6652                Self::Server => "VALUE_PICKED_FROM_SERVER",
6653                Self::Local => "VALUE_PICKED_FROM_LOCAL",
6654            }
6655        }
6656        /// Creates an enum from field names used in the ProtoBuf definition.
6657        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6658            match value {
6659                "VALUE_PICKED_FROM_UNSPECIFIED" => Some(Self::Unspecified),
6660                "VALUE_PICKED_FROM_DEFAULT" => Some(Self::Default),
6661                "VALUE_PICKED_FROM_SERVER" => Some(Self::Server),
6662                "VALUE_PICKED_FROM_LOCAL" => Some(Self::Local),
6663                _ => None,
6664            }
6665        }
6666    }
6667    /// The underlying storage mechanism for the flag.
6668    #[derive(
6669        Clone,
6670        Copy,
6671        Debug,
6672        PartialEq,
6673        Eq,
6674        Hash,
6675        PartialOrd,
6676        Ord,
6677        ::prost::Enumeration
6678    )]
6679    #[repr(i32)]
6680    pub enum FlagStorageBackend {
6681        Unspecified = 0,
6682        None = 1,
6683        Aconfigd = 2,
6684        DeviceConfig = 3,
6685    }
6686    impl FlagStorageBackend {
6687        /// String value of the enum field names used in the ProtoBuf definition.
6688        ///
6689        /// The values are not transformed in any way and thus are considered stable
6690        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6691        pub fn as_str_name(&self) -> &'static str {
6692            match self {
6693                Self::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
6694                Self::None => "FLAG_STORAGE_BACKEND_NONE",
6695                Self::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
6696                Self::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
6697            }
6698        }
6699        /// Creates an enum from field names used in the ProtoBuf definition.
6700        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6701            match value {
6702                "FLAG_STORAGE_BACKEND_UNSPECIFIED" => Some(Self::Unspecified),
6703                "FLAG_STORAGE_BACKEND_NONE" => Some(Self::None),
6704                "FLAG_STORAGE_BACKEND_ACONFIGD" => Some(Self::Aconfigd),
6705                "FLAG_STORAGE_BACKEND_DEVICE_CONFIG" => Some(Self::DeviceConfig),
6706                _ => None,
6707            }
6708        }
6709    }
6710    /// The value type of the flag.
6711    #[derive(
6712        Clone,
6713        Copy,
6714        Debug,
6715        PartialEq,
6716        Eq,
6717        Hash,
6718        PartialOrd,
6719        Ord,
6720        ::prost::Enumeration
6721    )]
6722    #[repr(i32)]
6723    pub enum FlagType {
6724        /// Flag type unspecified. This flag type means the flag is an old version
6725        /// boolean flag or unknown newer type.
6726        Unspecified = 0,
6727        Boolean = 1,
6728        Integer = 2,
6729    }
6730    impl FlagType {
6731        /// String value of the enum field names used in the ProtoBuf definition.
6732        ///
6733        /// The values are not transformed in any way and thus are considered stable
6734        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6735        pub fn as_str_name(&self) -> &'static str {
6736            match self {
6737                Self::Unspecified => "FLAG_TYPE_UNSPECIFIED",
6738                Self::Boolean => "FLAG_TYPE_BOOLEAN",
6739                Self::Integer => "FLAG_TYPE_INTEGER",
6740            }
6741        }
6742        /// Creates an enum from field names used in the ProtoBuf definition.
6743        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6744            match value {
6745                "FLAG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6746                "FLAG_TYPE_BOOLEAN" => Some(Self::Boolean),
6747                "FLAG_TYPE_INTEGER" => Some(Self::Integer),
6748                _ => None,
6749            }
6750        }
6751    }
6752}
6753#[derive(Clone, PartialEq, ::prost::Message)]
6754pub struct AndroidGameInterventionList {
6755    #[prost(message, repeated, tag = "1")]
6756    pub game_packages: ::prost::alloc::vec::Vec<
6757        android_game_intervention_list::GamePackageInfo,
6758    >,
6759    /// True when at least one error occurred when parsing
6760    /// game_mode_intervention.list
6761    #[prost(bool, optional, tag = "2")]
6762    pub parse_error: ::core::option::Option<bool>,
6763    /// Failed to open / read game_mode_intervention.list
6764    #[prost(bool, optional, tag = "3")]
6765    pub read_error: ::core::option::Option<bool>,
6766}
6767/// Nested message and enum types in `AndroidGameInterventionList`.
6768pub mod android_game_intervention_list {
6769    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6770    pub struct GameModeInfo {
6771        #[prost(uint32, optional, tag = "1")]
6772        pub mode: ::core::option::Option<u32>,
6773        #[prost(bool, optional, tag = "2")]
6774        pub use_angle: ::core::option::Option<bool>,
6775        #[prost(float, optional, tag = "3")]
6776        pub resolution_downscale: ::core::option::Option<f32>,
6777        #[prost(float, optional, tag = "4")]
6778        pub fps: ::core::option::Option<f32>,
6779    }
6780    #[derive(Clone, PartialEq, ::prost::Message)]
6781    pub struct GamePackageInfo {
6782        #[prost(string, optional, tag = "1")]
6783        pub name: ::core::option::Option<::prost::alloc::string::String>,
6784        #[prost(uint64, optional, tag = "2")]
6785        pub uid: ::core::option::Option<u64>,
6786        #[prost(uint32, optional, tag = "3")]
6787        pub current_mode: ::core::option::Option<u32>,
6788        #[prost(message, repeated, tag = "4")]
6789        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
6790    }
6791}
6792#[derive(Clone, PartialEq, ::prost::Message)]
6793pub struct AndroidLogPacket {
6794    #[prost(message, repeated, tag = "1")]
6795    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
6796    #[prost(message, optional, tag = "2")]
6797    pub stats: ::core::option::Option<android_log_packet::Stats>,
6798}
6799/// Nested message and enum types in `AndroidLogPacket`.
6800pub mod android_log_packet {
6801    #[derive(Clone, PartialEq, ::prost::Message)]
6802    pub struct LogEvent {
6803        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
6804        #[prost(enumeration = "super::AndroidLogId", optional, tag = "1")]
6805        pub log_id: ::core::option::Option<i32>,
6806        /// PID (TGID), TID and UID of the task that emitted the event.
6807        #[prost(int32, optional, tag = "2")]
6808        pub pid: ::core::option::Option<i32>,
6809        #[prost(int32, optional, tag = "3")]
6810        pub tid: ::core::option::Option<i32>,
6811        #[prost(int32, optional, tag = "4")]
6812        pub uid: ::core::option::Option<i32>,
6813        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
6814        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
6815        /// processor will take care of realigning clocks using the ClockSnapshot(s).
6816        #[prost(uint64, optional, tag = "5")]
6817        pub timestamp: ::core::option::Option<u64>,
6818        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
6819        /// the second column of /system/etc/event-log-tags. For all other events,
6820        /// |tag| is the app-specified argument passed to __android_log_write().
6821        #[prost(string, optional, tag = "6")]
6822        pub tag: ::core::option::Option<::prost::alloc::string::String>,
6823        /// Empty when log_id == LID_EVENTS.
6824        #[prost(enumeration = "super::AndroidLogPriority", optional, tag = "7")]
6825        pub prio: ::core::option::Option<i32>,
6826        /// Empty when log_id == LID_EVENTS.
6827        #[prost(string, optional, tag = "8")]
6828        pub message: ::core::option::Option<::prost::alloc::string::String>,
6829        /// Only populated when log_id == LID_EVENTS.
6830        #[prost(message, repeated, tag = "9")]
6831        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
6832    }
6833    /// Nested message and enum types in `LogEvent`.
6834    pub mod log_event {
6835        #[derive(Clone, PartialEq, ::prost::Message)]
6836        pub struct Arg {
6837            #[prost(string, optional, tag = "1")]
6838            pub name: ::core::option::Option<::prost::alloc::string::String>,
6839            #[prost(oneof = "arg::Value", tags = "2, 3, 4")]
6840            pub value: ::core::option::Option<arg::Value>,
6841        }
6842        /// Nested message and enum types in `Arg`.
6843        pub mod arg {
6844            #[derive(Clone, PartialEq, ::prost::Oneof)]
6845            pub enum Value {
6846                #[prost(int64, tag = "2")]
6847                IntValue(i64),
6848                #[prost(float, tag = "3")]
6849                FloatValue(f32),
6850                #[prost(string, tag = "4")]
6851                StringValue(::prost::alloc::string::String),
6852            }
6853        }
6854    }
6855    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
6856    /// absolute counters since the beginning of the lifetime of the tracing
6857    /// session and NOT relative to the previous Stats snapshot).
6858    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6859    pub struct Stats {
6860        /// Total number of log events seen, including errors and skipped entries
6861        /// (num of events stored in the trace = total - failed - skipped).
6862        #[prost(uint64, optional, tag = "1")]
6863        pub num_total: ::core::option::Option<u64>,
6864        /// Parser failures.
6865        #[prost(uint64, optional, tag = "2")]
6866        pub num_failed: ::core::option::Option<u64>,
6867        /// Messages skipped due to filters.
6868        #[prost(uint64, optional, tag = "3")]
6869        pub num_skipped: ::core::option::Option<u64>,
6870    }
6871}
6872#[derive(Clone, PartialEq, ::prost::Message)]
6873pub struct AndroidSystemProperty {
6874    #[prost(message, repeated, tag = "1")]
6875    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
6876}
6877/// Nested message and enum types in `AndroidSystemProperty`.
6878pub mod android_system_property {
6879    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6880    pub struct PropertyValue {
6881        #[prost(string, optional, tag = "1")]
6882        pub name: ::core::option::Option<::prost::alloc::string::String>,
6883        #[prost(string, optional, tag = "2")]
6884        pub value: ::core::option::Option<::prost::alloc::string::String>,
6885    }
6886}
6887#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6888pub struct CpuPerUidData {
6889    /// Number of clusters in the device. This will only be filled in the first
6890    /// packet in a sequence.
6891    #[prost(uint32, optional, tag = "1")]
6892    pub cluster_count: ::core::option::Option<u32>,
6893    /// The UIDs for which we have data in this packet.
6894    #[prost(uint32, repeated, tag = "2")]
6895    pub uid: ::prost::alloc::vec::Vec<u32>,
6896    /// List of times for {UID, cluster} tuples. This will be cluster_count
6897    /// times as long as the UID list.
6898    ///
6899    /// Ordered like:
6900    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
6901    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
6902    ///
6903    /// Each value is an absolute count for the first packet in a sequence, and a
6904    /// delta thereafter. UIDs for which all clusters have a zero delta are
6905    /// omitted; a single non-zero value for any cluster for a UID will cause
6906    /// values for all clusters to be recorded.
6907    #[prost(uint64, repeated, tag = "3")]
6908    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
6909}
6910/// Generated by Android's SurfaceFlinger.
6911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6912pub struct GraphicsFrameEvent {
6913    #[prost(message, optional, tag = "1")]
6914    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
6915}
6916/// Nested message and enum types in `GraphicsFrameEvent`.
6917pub mod graphics_frame_event {
6918    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6919    pub struct BufferEvent {
6920        #[prost(uint32, optional, tag = "1")]
6921        pub frame_number: ::core::option::Option<u32>,
6922        #[prost(enumeration = "BufferEventType", optional, tag = "2")]
6923        pub r#type: ::core::option::Option<i32>,
6924        #[prost(string, optional, tag = "3")]
6925        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
6926        /// If no duration is set, the event is an instant event.
6927        #[prost(uint64, optional, tag = "4")]
6928        pub duration_ns: ::core::option::Option<u64>,
6929        /// Unique buffer identifier.
6930        #[prost(uint32, optional, tag = "5")]
6931        pub buffer_id: ::core::option::Option<u32>,
6932    }
6933    #[derive(
6934        Clone,
6935        Copy,
6936        Debug,
6937        PartialEq,
6938        Eq,
6939        Hash,
6940        PartialOrd,
6941        Ord,
6942        ::prost::Enumeration
6943    )]
6944    #[repr(i32)]
6945    pub enum BufferEventType {
6946        Unspecified = 0,
6947        Dequeue = 1,
6948        Queue = 2,
6949        Post = 3,
6950        AcquireFence = 4,
6951        Latch = 5,
6952        /// HWC will compose this buffer
6953        HwcCompositionQueued = 6,
6954        /// renderEngine composition
6955        FallbackComposition = 7,
6956        PresentFence = 8,
6957        ReleaseFence = 9,
6958        Modify = 10,
6959        Detach = 11,
6960        Attach = 12,
6961        Cancel = 13,
6962    }
6963    impl BufferEventType {
6964        /// String value of the enum field names used in the ProtoBuf definition.
6965        ///
6966        /// The values are not transformed in any way and thus are considered stable
6967        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6968        pub fn as_str_name(&self) -> &'static str {
6969            match self {
6970                Self::Unspecified => "UNSPECIFIED",
6971                Self::Dequeue => "DEQUEUE",
6972                Self::Queue => "QUEUE",
6973                Self::Post => "POST",
6974                Self::AcquireFence => "ACQUIRE_FENCE",
6975                Self::Latch => "LATCH",
6976                Self::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
6977                Self::FallbackComposition => "FALLBACK_COMPOSITION",
6978                Self::PresentFence => "PRESENT_FENCE",
6979                Self::ReleaseFence => "RELEASE_FENCE",
6980                Self::Modify => "MODIFY",
6981                Self::Detach => "DETACH",
6982                Self::Attach => "ATTACH",
6983                Self::Cancel => "CANCEL",
6984            }
6985        }
6986        /// Creates an enum from field names used in the ProtoBuf definition.
6987        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6988            match value {
6989                "UNSPECIFIED" => Some(Self::Unspecified),
6990                "DEQUEUE" => Some(Self::Dequeue),
6991                "QUEUE" => Some(Self::Queue),
6992                "POST" => Some(Self::Post),
6993                "ACQUIRE_FENCE" => Some(Self::AcquireFence),
6994                "LATCH" => Some(Self::Latch),
6995                "HWC_COMPOSITION_QUEUED" => Some(Self::HwcCompositionQueued),
6996                "FALLBACK_COMPOSITION" => Some(Self::FallbackComposition),
6997                "PRESENT_FENCE" => Some(Self::PresentFence),
6998                "RELEASE_FENCE" => Some(Self::ReleaseFence),
6999                "MODIFY" => Some(Self::Modify),
7000                "DETACH" => Some(Self::Detach),
7001                "ATTACH" => Some(Self::Attach),
7002                "CANCEL" => Some(Self::Cancel),
7003                _ => None,
7004            }
7005        }
7006    }
7007}
7008#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7009pub struct InitialDisplayState {
7010    /// Same values as android.view.Display.STATE_*
7011    #[prost(int32, optional, tag = "1")]
7012    pub display_state: ::core::option::Option<i32>,
7013    #[prost(double, optional, tag = "2")]
7014    pub brightness: ::core::option::Option<f64>,
7015}
7016#[derive(Clone, PartialEq, ::prost::Message)]
7017pub struct KernelWakelockData {
7018    /// This is only emitted when we encounter new wakelocks.
7019    #[prost(message, repeated, tag = "1")]
7020    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
7021    /// Interning id.
7022    #[prost(uint32, repeated, tag = "2")]
7023    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
7024    /// If we interned the wakelock name in this packet, this is the total time
7025    /// the wakelock has been held.
7026    /// If not, it's a delta from the last time we saw it.
7027    #[prost(uint64, repeated, tag = "3")]
7028    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
7029    #[prost(uint64, optional, tag = "4")]
7030    pub error_flags: ::core::option::Option<u64>,
7031}
7032/// Nested message and enum types in `KernelWakelockData`.
7033pub mod kernel_wakelock_data {
7034    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7035    pub struct Wakelock {
7036        /// Interning id.
7037        #[prost(uint32, optional, tag = "1")]
7038        pub wakelock_id: ::core::option::Option<u32>,
7039        /// Name of the wakelock.
7040        #[prost(string, optional, tag = "2")]
7041        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
7042        /// Type of the wakelock. We record data about both true kernel wakelocks
7043        /// and "native" wakelocks which are taken in userspace but are more
7044        /// conceptually similar to kernel wakelocks than normal userspace ones.
7045        #[prost(enumeration = "wakelock::Type", optional, tag = "3")]
7046        pub wakelock_type: ::core::option::Option<i32>,
7047    }
7048    /// Nested message and enum types in `Wakelock`.
7049    pub mod wakelock {
7050        #[derive(
7051            Clone,
7052            Copy,
7053            Debug,
7054            PartialEq,
7055            Eq,
7056            Hash,
7057            PartialOrd,
7058            Ord,
7059            ::prost::Enumeration
7060        )]
7061        #[repr(i32)]
7062        pub enum Type {
7063            WakelockTypeUnknown = 0,
7064            WakelockTypeKernel = 1,
7065            WakelockTypeNative = 2,
7066        }
7067        impl Type {
7068            /// String value of the enum field names used in the ProtoBuf definition.
7069            ///
7070            /// The values are not transformed in any way and thus are considered stable
7071            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7072            pub fn as_str_name(&self) -> &'static str {
7073                match self {
7074                    Self::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
7075                    Self::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
7076                    Self::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
7077                }
7078            }
7079            /// Creates an enum from field names used in the ProtoBuf definition.
7080            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7081                match value {
7082                    "WAKELOCK_TYPE_UNKNOWN" => Some(Self::WakelockTypeUnknown),
7083                    "WAKELOCK_TYPE_KERNEL" => Some(Self::WakelockTypeKernel),
7084                    "WAKELOCK_TYPE_NATIVE" => Some(Self::WakelockTypeNative),
7085                    _ => None,
7086                }
7087            }
7088        }
7089    }
7090}
7091#[derive(Clone, PartialEq, ::prost::Message)]
7092pub struct PackagesList {
7093    #[prost(message, repeated, tag = "1")]
7094    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
7095    /// At least one error occurred parsing the packages.list.
7096    #[prost(bool, optional, tag = "2")]
7097    pub parse_error: ::core::option::Option<bool>,
7098    /// Failed to open / read packages.list.
7099    #[prost(bool, optional, tag = "3")]
7100    pub read_error: ::core::option::Option<bool>,
7101}
7102/// Nested message and enum types in `PackagesList`.
7103pub mod packages_list {
7104    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7105    pub struct PackageInfo {
7106        #[prost(string, optional, tag = "1")]
7107        pub name: ::core::option::Option<::prost::alloc::string::String>,
7108        #[prost(uint64, optional, tag = "2")]
7109        pub uid: ::core::option::Option<u64>,
7110        #[prost(bool, optional, tag = "3")]
7111        pub debuggable: ::core::option::Option<bool>,
7112        #[prost(bool, optional, tag = "4")]
7113        pub profileable_from_shell: ::core::option::Option<bool>,
7114        #[prost(int64, optional, tag = "5")]
7115        pub version_code: ::core::option::Option<i64>,
7116    }
7117}
7118#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7119pub struct PixelModemEvents {
7120    /// Pigweed-format dehydrated events.
7121    #[prost(bytes = "vec", repeated, tag = "1")]
7122    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
7123    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
7124    /// timestamp is the absolute timestamp of the first event. Subsequent
7125    /// timestamps are deltas from the previous timestamp.
7126    /// The nth entry from `events` gets the nth entry here.
7127    #[prost(uint64, repeated, packed = "false", tag = "2")]
7128    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
7129}
7130/// NB: this is not emitted in the trace but can be prepended later.
7131#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7132pub struct PixelModemTokenDatabase {
7133    /// Pigweed-format database to allow event rehydration.
7134    #[prost(bytes = "vec", optional, tag = "1")]
7135    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7136}
7137#[derive(Clone, PartialEq, ::prost::Message)]
7138pub struct AndroidUserList {
7139    #[prost(message, repeated, tag = "1")]
7140    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
7141    /// Error number
7142    #[prost(int32, optional, tag = "2")]
7143    pub error: ::core::option::Option<i32>,
7144}
7145/// Nested message and enum types in `AndroidUserList`.
7146pub mod android_user_list {
7147    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7148    pub struct UserInfo {
7149        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
7150        #[prost(string, optional, tag = "1")]
7151        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7152        #[prost(int32, optional, tag = "2")]
7153        pub uid: ::core::option::Option<i32>,
7154    }
7155}
7156/// This message is not intended to be written by the chrome on the device.
7157/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
7158/// part of the trace that's written by the telemetry tracing agent).
7159#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7160pub struct ChromeBenchmarkMetadata {
7161    /// Time when the benchmark execution started (host unixtime in microseconds).
7162    #[prost(int64, optional, tag = "1")]
7163    pub benchmark_start_time_us: ::core::option::Option<i64>,
7164    /// Time when this particular story was run (host unixtime in microseconds).
7165    #[prost(int64, optional, tag = "2")]
7166    pub story_run_time_us: ::core::option::Option<i64>,
7167    /// Name of benchmark.
7168    #[prost(string, optional, tag = "3")]
7169    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
7170    /// Description of benchmark.
7171    #[prost(string, optional, tag = "4")]
7172    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
7173    /// Optional label.
7174    #[prost(string, optional, tag = "5")]
7175    pub label: ::core::option::Option<::prost::alloc::string::String>,
7176    /// Name of story.
7177    #[prost(string, optional, tag = "6")]
7178    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
7179    /// List of story tags.
7180    #[prost(string, repeated, tag = "7")]
7181    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7182    /// Index of the story run (>0 if the same story was run several times).
7183    #[prost(int32, optional, tag = "8")]
7184    pub story_run_index: ::core::option::Option<i32>,
7185    /// Whether this run failed.
7186    #[prost(bool, optional, tag = "9")]
7187    pub had_failures: ::core::option::Option<bool>,
7188}
7189/// Metadata for chrome traces.
7190#[derive(Clone, PartialEq, ::prost::Message)]
7191pub struct ChromeMetadataPacket {
7192    #[prost(message, optional, tag = "1")]
7193    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
7194    /// Version code of Chrome used by Android's Play Store. This field is only set
7195    /// on Android.
7196    #[prost(int32, optional, tag = "2")]
7197    pub chrome_version_code: ::core::option::Option<i32>,
7198    /// Comma separated list of enabled categories for tracing. The list of
7199    /// possible category strings are listed in code
7200    /// base/trace_event/builtin_categories.h.
7201    #[prost(string, optional, tag = "3")]
7202    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
7203    /// List of Finch study/groups that apply to this trace.
7204    #[prost(message, repeated, tag = "4")]
7205    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
7206    /// The package name of the app which is being traced. This field is only set
7207    /// on Android.
7208    #[prost(string, optional, tag = "5")]
7209    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
7210    /// A version number string for Chrome. This matches
7211    /// SystemProfileProto::app_version.
7212    #[prost(string, optional, tag = "6")]
7213    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
7214    /// This matches SystemProfileProto::channel.
7215    #[prost(uint32, optional, tag = "7")]
7216    pub channel: ::core::option::Option<u32>,
7217    /// The user's operating system. This matches SystemProfileProto::OS::name.
7218    #[prost(string, optional, tag = "8")]
7219    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
7220}
7221/// Nested message and enum types in `ChromeMetadataPacket`.
7222pub mod chrome_metadata_packet {
7223    /// Finch name and group based on the ActiveGroupId.
7224    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7225    pub struct FinchHash {
7226        #[prost(uint32, optional, tag = "1")]
7227        pub name: ::core::option::Option<u32>,
7228        #[prost(uint32, optional, tag = "2")]
7229        pub group: ::core::option::Option<u32>,
7230    }
7231}
7232/// Metadata related to background tracing scenarios, states and triggers.
7233#[derive(Clone, PartialEq, ::prost::Message)]
7234pub struct BackgroundTracingMetadata {
7235    /// Specifies the rule that caused the trace to be uploaded.
7236    #[prost(message, optional, tag = "1")]
7237    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
7238    /// List of all active triggers in current session, when trace was triggered.
7239    #[prost(message, repeated, tag = "2")]
7240    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
7241    /// Hash of the scenario name.
7242    #[prost(fixed32, optional, tag = "3")]
7243    pub scenario_name_hash: ::core::option::Option<u32>,
7244}
7245/// Nested message and enum types in `BackgroundTracingMetadata`.
7246pub mod background_tracing_metadata {
7247    /// Information about a trigger rule defined in the experiment config.
7248    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7249    pub struct TriggerRule {
7250        #[prost(enumeration = "trigger_rule::TriggerType", optional, tag = "1")]
7251        pub trigger_type: ::core::option::Option<i32>,
7252        #[prost(message, optional, tag = "2")]
7253        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
7254        #[prost(message, optional, tag = "3")]
7255        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
7256        /// Hash of the rule name.
7257        #[prost(fixed32, optional, tag = "4")]
7258        pub name_hash: ::core::option::Option<u32>,
7259    }
7260    /// Nested message and enum types in `TriggerRule`.
7261    pub mod trigger_rule {
7262        /// Configuration of histogram trigger.
7263        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7264        pub struct HistogramRule {
7265            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
7266            #[prost(fixed64, optional, tag = "1")]
7267            pub histogram_name_hash: ::core::option::Option<u64>,
7268            /// Range of values of the histogram that activates trigger.
7269            #[prost(int64, optional, tag = "2")]
7270            pub histogram_min_trigger: ::core::option::Option<i64>,
7271            #[prost(int64, optional, tag = "3")]
7272            pub histogram_max_trigger: ::core::option::Option<i64>,
7273        }
7274        /// Configuration of named trigger.
7275        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7276        pub struct NamedRule {
7277            #[prost(enumeration = "named_rule::EventType", optional, tag = "1")]
7278            pub event_type: ::core::option::Option<i32>,
7279            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
7280            /// content-trigger that actually fired.
7281            #[prost(fixed64, optional, tag = "2")]
7282            pub content_trigger_name_hash: ::core::option::Option<u64>,
7283        }
7284        /// Nested message and enum types in `NamedRule`.
7285        pub mod named_rule {
7286            #[derive(
7287                Clone,
7288                Copy,
7289                Debug,
7290                PartialEq,
7291                Eq,
7292                Hash,
7293                PartialOrd,
7294                Ord,
7295                ::prost::Enumeration
7296            )]
7297            #[repr(i32)]
7298            pub enum EventType {
7299                Unspecified = 0,
7300                SessionRestore = 1,
7301                Navigation = 2,
7302                Startup = 3,
7303                ReachedCode = 4,
7304                ContentTrigger = 5,
7305                TestRule = 1000,
7306            }
7307            impl EventType {
7308                /// String value of the enum field names used in the ProtoBuf definition.
7309                ///
7310                /// The values are not transformed in any way and thus are considered stable
7311                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7312                pub fn as_str_name(&self) -> &'static str {
7313                    match self {
7314                        Self::Unspecified => "UNSPECIFIED",
7315                        Self::SessionRestore => "SESSION_RESTORE",
7316                        Self::Navigation => "NAVIGATION",
7317                        Self::Startup => "STARTUP",
7318                        Self::ReachedCode => "REACHED_CODE",
7319                        Self::ContentTrigger => "CONTENT_TRIGGER",
7320                        Self::TestRule => "TEST_RULE",
7321                    }
7322                }
7323                /// Creates an enum from field names used in the ProtoBuf definition.
7324                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7325                    match value {
7326                        "UNSPECIFIED" => Some(Self::Unspecified),
7327                        "SESSION_RESTORE" => Some(Self::SessionRestore),
7328                        "NAVIGATION" => Some(Self::Navigation),
7329                        "STARTUP" => Some(Self::Startup),
7330                        "REACHED_CODE" => Some(Self::ReachedCode),
7331                        "CONTENT_TRIGGER" => Some(Self::ContentTrigger),
7332                        "TEST_RULE" => Some(Self::TestRule),
7333                        _ => None,
7334                    }
7335                }
7336            }
7337        }
7338        #[derive(
7339            Clone,
7340            Copy,
7341            Debug,
7342            PartialEq,
7343            Eq,
7344            Hash,
7345            PartialOrd,
7346            Ord,
7347            ::prost::Enumeration
7348        )]
7349        #[repr(i32)]
7350        pub enum TriggerType {
7351            TriggerUnspecified = 0,
7352            /// Traces are triggered by specific range of values of an UMA histogram.
7353            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
7354            /// Traces are triggered by specific named events in chromium codebase,
7355            /// like "second-update-failure".
7356            MonitorAndDumpWhenTriggerNamed = 2,
7357        }
7358        impl TriggerType {
7359            /// String value of the enum field names used in the ProtoBuf definition.
7360            ///
7361            /// The values are not transformed in any way and thus are considered stable
7362            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7363            pub fn as_str_name(&self) -> &'static str {
7364                match self {
7365                    Self::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
7366                    Self::MonitorAndDumpWhenSpecificHistogramAndValue => {
7367                        "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE"
7368                    }
7369                    Self::MonitorAndDumpWhenTriggerNamed => {
7370                        "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED"
7371                    }
7372                }
7373            }
7374            /// Creates an enum from field names used in the ProtoBuf definition.
7375            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7376                match value {
7377                    "TRIGGER_UNSPECIFIED" => Some(Self::TriggerUnspecified),
7378                    "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE" => {
7379                        Some(Self::MonitorAndDumpWhenSpecificHistogramAndValue)
7380                    }
7381                    "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED" => {
7382                        Some(Self::MonitorAndDumpWhenTriggerNamed)
7383                    }
7384                    _ => None,
7385                }
7386            }
7387        }
7388    }
7389}
7390#[derive(Clone, PartialEq, ::prost::Message)]
7391pub struct ChromeTracedValue {
7392    #[prost(enumeration = "chrome_traced_value::NestedType", optional, tag = "1")]
7393    pub nested_type: ::core::option::Option<i32>,
7394    #[prost(string, repeated, tag = "2")]
7395    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7396    #[prost(message, repeated, tag = "3")]
7397    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7398    #[prost(message, repeated, tag = "4")]
7399    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
7400    #[prost(int32, optional, tag = "5")]
7401    pub int_value: ::core::option::Option<i32>,
7402    #[prost(double, optional, tag = "6")]
7403    pub double_value: ::core::option::Option<f64>,
7404    #[prost(bool, optional, tag = "7")]
7405    pub bool_value: ::core::option::Option<bool>,
7406    #[prost(string, optional, tag = "8")]
7407    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
7408}
7409/// Nested message and enum types in `ChromeTracedValue`.
7410pub mod chrome_traced_value {
7411    #[derive(
7412        Clone,
7413        Copy,
7414        Debug,
7415        PartialEq,
7416        Eq,
7417        Hash,
7418        PartialOrd,
7419        Ord,
7420        ::prost::Enumeration
7421    )]
7422    #[repr(i32)]
7423    pub enum NestedType {
7424        Dict = 0,
7425        Array = 1,
7426    }
7427    impl NestedType {
7428        /// String value of the enum field names used in the ProtoBuf definition.
7429        ///
7430        /// The values are not transformed in any way and thus are considered stable
7431        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7432        pub fn as_str_name(&self) -> &'static str {
7433            match self {
7434                Self::Dict => "DICT",
7435                Self::Array => "ARRAY",
7436            }
7437        }
7438        /// Creates an enum from field names used in the ProtoBuf definition.
7439        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7440            match value {
7441                "DICT" => Some(Self::Dict),
7442                "ARRAY" => Some(Self::Array),
7443                _ => None,
7444            }
7445        }
7446    }
7447}
7448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7449pub struct ChromeStringTableEntry {
7450    #[prost(string, optional, tag = "1")]
7451    pub value: ::core::option::Option<::prost::alloc::string::String>,
7452    #[prost(int32, optional, tag = "2")]
7453    pub index: ::core::option::Option<i32>,
7454}
7455/// Deprecated, use TrackEvent protos instead.
7456#[derive(Clone, PartialEq, ::prost::Message)]
7457pub struct ChromeTraceEvent {
7458    #[prost(string, optional, tag = "1")]
7459    pub name: ::core::option::Option<::prost::alloc::string::String>,
7460    #[prost(int64, optional, tag = "2")]
7461    pub timestamp: ::core::option::Option<i64>,
7462    #[prost(int32, optional, tag = "3")]
7463    pub phase: ::core::option::Option<i32>,
7464    #[prost(int32, optional, tag = "4")]
7465    pub thread_id: ::core::option::Option<i32>,
7466    #[prost(int64, optional, tag = "5")]
7467    pub duration: ::core::option::Option<i64>,
7468    #[prost(int64, optional, tag = "6")]
7469    pub thread_duration: ::core::option::Option<i64>,
7470    #[prost(string, optional, tag = "7")]
7471    pub scope: ::core::option::Option<::prost::alloc::string::String>,
7472    #[prost(uint64, optional, tag = "8")]
7473    pub id: ::core::option::Option<u64>,
7474    #[prost(uint32, optional, tag = "9")]
7475    pub flags: ::core::option::Option<u32>,
7476    #[prost(string, optional, tag = "10")]
7477    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
7478    #[prost(int32, optional, tag = "11")]
7479    pub process_id: ::core::option::Option<i32>,
7480    #[prost(int64, optional, tag = "12")]
7481    pub thread_timestamp: ::core::option::Option<i64>,
7482    #[prost(uint64, optional, tag = "13")]
7483    pub bind_id: ::core::option::Option<u64>,
7484    #[prost(message, repeated, tag = "14")]
7485    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
7486    /// Takes precedence over respectively |name| and
7487    /// |category_group_name_index| if set,
7488    /// and are indices into |string_table|.
7489    #[prost(uint32, optional, tag = "15")]
7490    pub name_index: ::core::option::Option<u32>,
7491    #[prost(uint32, optional, tag = "16")]
7492    pub category_group_name_index: ::core::option::Option<u32>,
7493}
7494/// Nested message and enum types in `ChromeTraceEvent`.
7495pub mod chrome_trace_event {
7496    #[derive(Clone, PartialEq, ::prost::Message)]
7497    pub struct Arg {
7498        #[prost(string, optional, tag = "1")]
7499        pub name: ::core::option::Option<::prost::alloc::string::String>,
7500        /// Takes precedence over |name| if set,
7501        /// and is an index into |string_table|.
7502        #[prost(uint32, optional, tag = "9")]
7503        pub name_index: ::core::option::Option<u32>,
7504        #[prost(oneof = "arg::Value", tags = "2, 3, 4, 5, 6, 7, 8, 10")]
7505        pub value: ::core::option::Option<arg::Value>,
7506    }
7507    /// Nested message and enum types in `Arg`.
7508    pub mod arg {
7509        #[derive(Clone, PartialEq, ::prost::Oneof)]
7510        pub enum Value {
7511            #[prost(bool, tag = "2")]
7512            BoolValue(bool),
7513            #[prost(uint64, tag = "3")]
7514            UintValue(u64),
7515            #[prost(int64, tag = "4")]
7516            IntValue(i64),
7517            #[prost(double, tag = "5")]
7518            DoubleValue(f64),
7519            #[prost(string, tag = "6")]
7520            StringValue(::prost::alloc::string::String),
7521            /// Pointers are stored in a separate type as the JSON output treats them
7522            /// differently from other uint64 values.
7523            #[prost(uint64, tag = "7")]
7524            PointerValue(u64),
7525            #[prost(string, tag = "8")]
7526            JsonValue(::prost::alloc::string::String),
7527            #[prost(message, tag = "10")]
7528            TracedValue(super::super::ChromeTracedValue),
7529        }
7530    }
7531}
7532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7533pub struct ChromeMetadata {
7534    #[prost(string, optional, tag = "1")]
7535    pub name: ::core::option::Option<::prost::alloc::string::String>,
7536    #[prost(oneof = "chrome_metadata::Value", tags = "2, 3, 4, 5")]
7537    pub value: ::core::option::Option<chrome_metadata::Value>,
7538}
7539/// Nested message and enum types in `ChromeMetadata`.
7540pub mod chrome_metadata {
7541    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7542    pub enum Value {
7543        #[prost(string, tag = "2")]
7544        StringValue(::prost::alloc::string::String),
7545        #[prost(bool, tag = "3")]
7546        BoolValue(bool),
7547        #[prost(int64, tag = "4")]
7548        IntValue(i64),
7549        #[prost(string, tag = "5")]
7550        JsonValue(::prost::alloc::string::String),
7551    }
7552}
7553/// Subtraces produced in legacy json format by Chrome tracing agents not yet
7554/// updated to support the new binary format, e.g. ETW and CrOS ARC.
7555/// TODO(eseckler): Update these agents to become perfetto producers.
7556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7557pub struct ChromeLegacyJsonTrace {
7558    #[prost(enumeration = "chrome_legacy_json_trace::TraceType", optional, tag = "1")]
7559    pub r#type: ::core::option::Option<i32>,
7560    #[prost(string, optional, tag = "2")]
7561    pub data: ::core::option::Option<::prost::alloc::string::String>,
7562}
7563/// Nested message and enum types in `ChromeLegacyJsonTrace`.
7564pub mod chrome_legacy_json_trace {
7565    #[derive(
7566        Clone,
7567        Copy,
7568        Debug,
7569        PartialEq,
7570        Eq,
7571        Hash,
7572        PartialOrd,
7573        Ord,
7574        ::prost::Enumeration
7575    )]
7576    #[repr(i32)]
7577    pub enum TraceType {
7578        UserTrace = 0,
7579        /// Deprecated.
7580        SystemTrace = 1,
7581    }
7582    impl TraceType {
7583        /// String value of the enum field names used in the ProtoBuf definition.
7584        ///
7585        /// The values are not transformed in any way and thus are considered stable
7586        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7587        pub fn as_str_name(&self) -> &'static str {
7588            match self {
7589                Self::UserTrace => "USER_TRACE",
7590                Self::SystemTrace => "SYSTEM_TRACE",
7591            }
7592        }
7593        /// Creates an enum from field names used in the ProtoBuf definition.
7594        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7595            match value {
7596                "USER_TRACE" => Some(Self::UserTrace),
7597                "SYSTEM_TRACE" => Some(Self::SystemTrace),
7598                _ => None,
7599            }
7600        }
7601    }
7602}
7603#[derive(Clone, PartialEq, ::prost::Message)]
7604pub struct ChromeEventBundle {
7605    /// Deprecated, use TrackEvent protos instead.
7606    #[deprecated]
7607    #[prost(message, repeated, tag = "1")]
7608    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
7609    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
7610    /// which contains typed fields.
7611    #[prost(message, repeated, tag = "2")]
7612    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
7613    /// ftrace output from CrOS and Cast system tracing agents.
7614    /// TODO(eseckler): Replace system traces with native perfetto service.
7615    #[prost(string, repeated, tag = "4")]
7616    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7617    #[prost(message, repeated, tag = "5")]
7618    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
7619    /// Contents of a string table that's valid for
7620    /// the whole ChromeEventBundle entry.
7621    #[deprecated]
7622    #[prost(message, repeated, tag = "3")]
7623    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
7624}
7625/// Information about a specific trigger during a background tracing scenario
7626/// Associated packet timestamps are useful to delimitate a scenario range in a
7627/// trace. Triggers are also useful for filtering traces.
7628#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7629pub struct ChromeTrigger {
7630    /// Name of the trigger which was received.
7631    #[prost(string, optional, tag = "1")]
7632    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
7633    /// SHA1 hash of the trigger name.
7634    #[prost(fixed32, optional, tag = "2")]
7635    pub trigger_name_hash: ::core::option::Option<u32>,
7636    /// Flow id which should terminate on this trigger.
7637    #[prost(fixed64, optional, tag = "3")]
7638    pub flow_id: ::core::option::Option<u64>,
7639}
7640/// Strings used by V8 can have different encodings, instead of coverting to a
7641/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
7642/// "raw" string and do the convestion at trace ingestion time.
7643///
7644/// ATTENTION: There is some overhead in using a message (as opossed to having
7645/// the `oneof encoded_string`` direcly embedded in the message), so use this
7646/// message in places were these extra bytes don't matter that much.
7647/// Next id: 5
7648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7649pub struct V8String {
7650    #[prost(oneof = "v8_string::EncodedString", tags = "1, 2, 3")]
7651    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
7652}
7653/// Nested message and enum types in `V8String`.
7654pub mod v8_string {
7655    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7656    pub enum EncodedString {
7657        /// ISO/IEC 8859-1:1998 encoding aka latin1
7658        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7659        #[prost(bytes, tag = "1")]
7660        Latin1(::prost::alloc::vec::Vec<u8>),
7661        /// UTF-16 Little Endian Encoding
7662        #[prost(bytes, tag = "2")]
7663        Utf16Le(::prost::alloc::vec::Vec<u8>),
7664        /// UTF-16 Big Endian Encoding
7665        #[prost(bytes, tag = "3")]
7666        Utf16Be(::prost::alloc::vec::Vec<u8>),
7667    }
7668}
7669/// Interned version of V8String
7670#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7671pub struct InternedV8String {
7672    #[prost(uint64, optional, tag = "1")]
7673    pub iid: ::core::option::Option<u64>,
7674    /// We inline the fields in V8String here to save some bytes in the serialized
7675    /// proto format. Interning is about saving bytes so this makes sense here.
7676    #[prost(oneof = "interned_v8_string::EncodedString", tags = "2, 3, 4")]
7677    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
7678}
7679/// Nested message and enum types in `InternedV8String`.
7680pub mod interned_v8_string {
7681    /// We inline the fields in V8String here to save some bytes in the serialized
7682    /// proto format. Interning is about saving bytes so this makes sense here.
7683    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
7684    pub enum EncodedString {
7685        /// ISO/IEC 8859-1:1998 encoding aka latin1
7686        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
7687        #[prost(bytes, tag = "2")]
7688        Latin1(::prost::alloc::vec::Vec<u8>),
7689        /// UTF-16 Little Endian Encoding
7690        #[prost(bytes, tag = "3")]
7691        Utf16Le(::prost::alloc::vec::Vec<u8>),
7692        /// UTF-16 Big Endian Encoding
7693        #[prost(bytes, tag = "4")]
7694        Utf16Be(::prost::alloc::vec::Vec<u8>),
7695    }
7696}
7697/// Represents a script that was compiled to generate code. Some V8 code is
7698/// generated out of scripts and will reference a V8Script other types of code
7699/// will not (e.g. builtins).
7700#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7701pub struct InternedV8JsScript {
7702    #[prost(uint64, optional, tag = "1")]
7703    pub iid: ::core::option::Option<u64>,
7704    /// Unique in a given isolate
7705    #[prost(int32, optional, tag = "2")]
7706    pub script_id: ::core::option::Option<i32>,
7707    #[prost(enumeration = "interned_v8_js_script::Type", optional, tag = "3")]
7708    pub r#type: ::core::option::Option<i32>,
7709    #[prost(message, optional, tag = "4")]
7710    pub name: ::core::option::Option<V8String>,
7711    /// Actual source of the script
7712    #[prost(message, optional, tag = "5")]
7713    pub source: ::core::option::Option<V8String>,
7714}
7715/// Nested message and enum types in `InternedV8JsScript`.
7716pub mod interned_v8_js_script {
7717    #[derive(
7718        Clone,
7719        Copy,
7720        Debug,
7721        PartialEq,
7722        Eq,
7723        Hash,
7724        PartialOrd,
7725        Ord,
7726        ::prost::Enumeration
7727    )]
7728    #[repr(i32)]
7729    pub enum Type {
7730        Unknown = 0,
7731        Normal = 1,
7732        Eval = 2,
7733        Module = 3,
7734        Native = 4,
7735        Extension = 5,
7736        Inspector = 6,
7737    }
7738    impl Type {
7739        /// String value of the enum field names used in the ProtoBuf definition.
7740        ///
7741        /// The values are not transformed in any way and thus are considered stable
7742        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7743        pub fn as_str_name(&self) -> &'static str {
7744            match self {
7745                Self::Unknown => "TYPE_UNKNOWN",
7746                Self::Normal => "TYPE_NORMAL",
7747                Self::Eval => "TYPE_EVAL",
7748                Self::Module => "TYPE_MODULE",
7749                Self::Native => "TYPE_NATIVE",
7750                Self::Extension => "TYPE_EXTENSION",
7751                Self::Inspector => "TYPE_INSPECTOR",
7752            }
7753        }
7754        /// Creates an enum from field names used in the ProtoBuf definition.
7755        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7756            match value {
7757                "TYPE_UNKNOWN" => Some(Self::Unknown),
7758                "TYPE_NORMAL" => Some(Self::Normal),
7759                "TYPE_EVAL" => Some(Self::Eval),
7760                "TYPE_MODULE" => Some(Self::Module),
7761                "TYPE_NATIVE" => Some(Self::Native),
7762                "TYPE_EXTENSION" => Some(Self::Extension),
7763                "TYPE_INSPECTOR" => Some(Self::Inspector),
7764                _ => None,
7765            }
7766        }
7767    }
7768}
7769#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7770pub struct InternedV8WasmScript {
7771    #[prost(uint64, optional, tag = "1")]
7772    pub iid: ::core::option::Option<u64>,
7773    /// Unique in a given isolate
7774    #[prost(int32, optional, tag = "2")]
7775    pub script_id: ::core::option::Option<i32>,
7776    #[prost(string, optional, tag = "3")]
7777    pub url: ::core::option::Option<::prost::alloc::string::String>,
7778    /// Raw transferred wasm native module wire bytes.
7779    #[prost(bytes = "vec", optional, tag = "4")]
7780    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
7781}
7782#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7783pub struct InternedV8JsFunction {
7784    #[prost(uint64, optional, tag = "1")]
7785    pub iid: ::core::option::Option<u64>,
7786    #[prost(uint64, optional, tag = "2")]
7787    pub v8_js_function_name_iid: ::core::option::Option<u64>,
7788    #[prost(uint64, optional, tag = "3")]
7789    pub v8_js_script_iid: ::core::option::Option<u64>,
7790    #[prost(bool, optional, tag = "4")]
7791    pub is_toplevel: ::core::option::Option<bool>,
7792    #[prost(enumeration = "interned_v8_js_function::Kind", optional, tag = "5")]
7793    pub kind: ::core::option::Option<i32>,
7794    /// Where in the script source this function is defined. This is counted in
7795    /// bytes not characters.
7796    #[prost(uint32, optional, tag = "6")]
7797    pub byte_offset: ::core::option::Option<u32>,
7798    #[prost(uint32, optional, tag = "7")]
7799    pub line: ::core::option::Option<u32>,
7800    #[prost(uint32, optional, tag = "8")]
7801    pub column: ::core::option::Option<u32>,
7802}
7803/// Nested message and enum types in `InternedV8JsFunction`.
7804pub mod interned_v8_js_function {
7805    #[derive(
7806        Clone,
7807        Copy,
7808        Debug,
7809        PartialEq,
7810        Eq,
7811        Hash,
7812        PartialOrd,
7813        Ord,
7814        ::prost::Enumeration
7815    )]
7816    #[repr(i32)]
7817    pub enum Kind {
7818        Unknown = 0,
7819        NormalFunction = 1,
7820        Module = 2,
7821        AsyncModule = 3,
7822        BaseConstructor = 4,
7823        DefaultBaseConstructor = 5,
7824        DefaultDerivedConstructor = 6,
7825        DerivedConstructor = 7,
7826        GetterFunction = 8,
7827        StaticGetterFunction = 9,
7828        SetterFunction = 10,
7829        StaticSetterFunction = 11,
7830        ArrowFunction = 12,
7831        AsyncArrowFunction = 13,
7832        AsyncFunction = 14,
7833        AsyncConciseMethod = 15,
7834        StaticAsyncConciseMethod = 16,
7835        AsyncConciseGeneratorMethod = 17,
7836        StaticAsyncConciseGeneratorMethod = 18,
7837        AsyncGeneratorFunction = 19,
7838        GeneratorFunction = 20,
7839        ConciseGeneratorMethod = 21,
7840        StaticConciseGeneratorMethod = 22,
7841        ConciseMethod = 23,
7842        StaticConciseMethod = 24,
7843        ClassMembersInitializerFunction = 25,
7844        ClassStaticInitializerFunction = 26,
7845        Invalid = 27,
7846    }
7847    impl Kind {
7848        /// String value of the enum field names used in the ProtoBuf definition.
7849        ///
7850        /// The values are not transformed in any way and thus are considered stable
7851        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7852        pub fn as_str_name(&self) -> &'static str {
7853            match self {
7854                Self::Unknown => "KIND_UNKNOWN",
7855                Self::NormalFunction => "KIND_NORMAL_FUNCTION",
7856                Self::Module => "KIND_MODULE",
7857                Self::AsyncModule => "KIND_ASYNC_MODULE",
7858                Self::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
7859                Self::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
7860                Self::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
7861                Self::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
7862                Self::GetterFunction => "KIND_GETTER_FUNCTION",
7863                Self::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
7864                Self::SetterFunction => "KIND_SETTER_FUNCTION",
7865                Self::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
7866                Self::ArrowFunction => "KIND_ARROW_FUNCTION",
7867                Self::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
7868                Self::AsyncFunction => "KIND_ASYNC_FUNCTION",
7869                Self::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
7870                Self::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
7871                Self::AsyncConciseGeneratorMethod => {
7872                    "KIND_ASYNC_CONCISE_GENERATOR_METHOD"
7873                }
7874                Self::StaticAsyncConciseGeneratorMethod => {
7875                    "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD"
7876                }
7877                Self::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
7878                Self::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
7879                Self::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
7880                Self::StaticConciseGeneratorMethod => {
7881                    "KIND_STATIC_CONCISE_GENERATOR_METHOD"
7882                }
7883                Self::ConciseMethod => "KIND_CONCISE_METHOD",
7884                Self::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
7885                Self::ClassMembersInitializerFunction => {
7886                    "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION"
7887                }
7888                Self::ClassStaticInitializerFunction => {
7889                    "KIND_CLASS_STATIC_INITIALIZER_FUNCTION"
7890                }
7891                Self::Invalid => "KIND_INVALID",
7892            }
7893        }
7894        /// Creates an enum from field names used in the ProtoBuf definition.
7895        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7896            match value {
7897                "KIND_UNKNOWN" => Some(Self::Unknown),
7898                "KIND_NORMAL_FUNCTION" => Some(Self::NormalFunction),
7899                "KIND_MODULE" => Some(Self::Module),
7900                "KIND_ASYNC_MODULE" => Some(Self::AsyncModule),
7901                "KIND_BASE_CONSTRUCTOR" => Some(Self::BaseConstructor),
7902                "KIND_DEFAULT_BASE_CONSTRUCTOR" => Some(Self::DefaultBaseConstructor),
7903                "KIND_DEFAULT_DERIVED_CONSTRUCTOR" => {
7904                    Some(Self::DefaultDerivedConstructor)
7905                }
7906                "KIND_DERIVED_CONSTRUCTOR" => Some(Self::DerivedConstructor),
7907                "KIND_GETTER_FUNCTION" => Some(Self::GetterFunction),
7908                "KIND_STATIC_GETTER_FUNCTION" => Some(Self::StaticGetterFunction),
7909                "KIND_SETTER_FUNCTION" => Some(Self::SetterFunction),
7910                "KIND_STATIC_SETTER_FUNCTION" => Some(Self::StaticSetterFunction),
7911                "KIND_ARROW_FUNCTION" => Some(Self::ArrowFunction),
7912                "KIND_ASYNC_ARROW_FUNCTION" => Some(Self::AsyncArrowFunction),
7913                "KIND_ASYNC_FUNCTION" => Some(Self::AsyncFunction),
7914                "KIND_ASYNC_CONCISE_METHOD" => Some(Self::AsyncConciseMethod),
7915                "KIND_STATIC_ASYNC_CONCISE_METHOD" => {
7916                    Some(Self::StaticAsyncConciseMethod)
7917                }
7918                "KIND_ASYNC_CONCISE_GENERATOR_METHOD" => {
7919                    Some(Self::AsyncConciseGeneratorMethod)
7920                }
7921                "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD" => {
7922                    Some(Self::StaticAsyncConciseGeneratorMethod)
7923                }
7924                "KIND_ASYNC_GENERATOR_FUNCTION" => Some(Self::AsyncGeneratorFunction),
7925                "KIND_GENERATOR_FUNCTION" => Some(Self::GeneratorFunction),
7926                "KIND_CONCISE_GENERATOR_METHOD" => Some(Self::ConciseGeneratorMethod),
7927                "KIND_STATIC_CONCISE_GENERATOR_METHOD" => {
7928                    Some(Self::StaticConciseGeneratorMethod)
7929                }
7930                "KIND_CONCISE_METHOD" => Some(Self::ConciseMethod),
7931                "KIND_STATIC_CONCISE_METHOD" => Some(Self::StaticConciseMethod),
7932                "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION" => {
7933                    Some(Self::ClassMembersInitializerFunction)
7934                }
7935                "KIND_CLASS_STATIC_INITIALIZER_FUNCTION" => {
7936                    Some(Self::ClassStaticInitializerFunction)
7937                }
7938                "KIND_INVALID" => Some(Self::Invalid),
7939                _ => None,
7940            }
7941        }
7942    }
7943}
7944/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
7945/// engine.
7946#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7947pub struct InternedV8Isolate {
7948    #[prost(uint64, optional, tag = "1")]
7949    pub iid: ::core::option::Option<u64>,
7950    #[prost(uint32, optional, tag = "2")]
7951    pub pid: ::core::option::Option<u32>,
7952    /// Process unique isolate id.
7953    #[prost(int32, optional, tag = "3")]
7954    pub isolate_id: ::core::option::Option<i32>,
7955    #[prost(message, optional, tag = "4")]
7956    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
7957    /// The embedded blob holds code for built in functions that are precompiled in
7958    /// the V8 library.
7959    #[prost(uint64, optional, tag = "5")]
7960    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
7961    #[prost(uint64, optional, tag = "6")]
7962    pub embedded_blob_code_size: ::core::option::Option<u64>,
7963}
7964/// Nested message and enum types in `InternedV8Isolate`.
7965pub mod interned_v8_isolate {
7966    /// A code range is a virtual memory cage that may contain executable code.
7967    /// Depending on the Isolate settings the Isolate might have one or not.
7968    /// See:
7969    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
7970    /// If the isolate defines code range this will be tracked here.
7971    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7972    pub struct CodeRange {
7973        #[prost(uint64, optional, tag = "1")]
7974        pub base_address: ::core::option::Option<u64>,
7975        #[prost(uint64, optional, tag = "2")]
7976        pub size: ::core::option::Option<u64>,
7977        /// Used when short builtin calls are enabled, where embedded builtins are
7978        /// copied into the CodeRange so calls can be nearer.
7979        #[prost(uint64, optional, tag = "3")]
7980        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
7981        /// Whether this code range is shared with other Isolates in the same process
7982        #[prost(bool, optional, tag = "4")]
7983        pub is_process_wide: ::core::option::Option<bool>,
7984    }
7985}
7986#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7987pub struct V8JsCode {
7988    #[prost(uint64, optional, tag = "1")]
7989    pub v8_isolate_iid: ::core::option::Option<u64>,
7990    #[prost(uint32, optional, tag = "2")]
7991    pub tid: ::core::option::Option<u32>,
7992    #[prost(uint64, optional, tag = "3")]
7993    pub v8_js_function_iid: ::core::option::Option<u64>,
7994    #[prost(enumeration = "v8_js_code::Tier", optional, tag = "4")]
7995    pub tier: ::core::option::Option<i32>,
7996    #[prost(uint64, optional, tag = "5")]
7997    pub instruction_start: ::core::option::Option<u64>,
7998    #[prost(uint64, optional, tag = "6")]
7999    pub instruction_size_bytes: ::core::option::Option<u64>,
8000    #[prost(oneof = "v8_js_code::Instructions", tags = "7, 8")]
8001    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
8002    #[prost(oneof = "v8_js_code::SourceMap", tags = "9, 10, 11")]
8003    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
8004}
8005/// Nested message and enum types in `V8JsCode`.
8006pub mod v8_js_code {
8007    #[derive(
8008        Clone,
8009        Copy,
8010        Debug,
8011        PartialEq,
8012        Eq,
8013        Hash,
8014        PartialOrd,
8015        Ord,
8016        ::prost::Enumeration
8017    )]
8018    #[repr(i32)]
8019    pub enum Tier {
8020        Unknown = 0,
8021        Ignition = 1,
8022        Sparkplug = 2,
8023        Maglev = 3,
8024        Turboshaft = 4,
8025        Turbofan = 5,
8026    }
8027    impl Tier {
8028        /// String value of the enum field names used in the ProtoBuf definition.
8029        ///
8030        /// The values are not transformed in any way and thus are considered stable
8031        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8032        pub fn as_str_name(&self) -> &'static str {
8033            match self {
8034                Self::Unknown => "TIER_UNKNOWN",
8035                Self::Ignition => "TIER_IGNITION",
8036                Self::Sparkplug => "TIER_SPARKPLUG",
8037                Self::Maglev => "TIER_MAGLEV",
8038                Self::Turboshaft => "TIER_TURBOSHAFT",
8039                Self::Turbofan => "TIER_TURBOFAN",
8040            }
8041        }
8042        /// Creates an enum from field names used in the ProtoBuf definition.
8043        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8044            match value {
8045                "TIER_UNKNOWN" => Some(Self::Unknown),
8046                "TIER_IGNITION" => Some(Self::Ignition),
8047                "TIER_SPARKPLUG" => Some(Self::Sparkplug),
8048                "TIER_MAGLEV" => Some(Self::Maglev),
8049                "TIER_TURBOSHAFT" => Some(Self::Turboshaft),
8050                "TIER_TURBOFAN" => Some(Self::Turbofan),
8051                _ => None,
8052            }
8053        }
8054    }
8055    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8056    pub enum Instructions {
8057        #[prost(bytes, tag = "7")]
8058        MachineCode(::prost::alloc::vec::Vec<u8>),
8059        #[prost(bytes, tag = "8")]
8060        Bytecode(::prost::alloc::vec::Vec<u8>),
8061    }
8062    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8063    pub enum SourceMap {
8064        /// For Ignition / bytecode:
8065        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
8066        ///     related js function)
8067        #[prost(bytes, tag = "9")]
8068        SourcePositions(::prost::alloc::vec::Vec<u8>),
8069        /// For Sparkplug code:
8070        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
8071        ///     ignition code object for the same js-function.
8072        #[prost(bytes, tag = "10")]
8073        BytecodePositions(::prost::alloc::vec::Vec<u8>),
8074        /// For optimized code:
8075        /// - Maps machine-code-ranges to bytecode ranges in various
8076        ///    ignition code objects (inlining might happen from multiple functions)
8077        #[prost(bytes, tag = "11")]
8078        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
8079    }
8080}
8081#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8082pub struct V8InternalCode {
8083    #[prost(uint64, optional, tag = "1")]
8084    pub v8_isolate_iid: ::core::option::Option<u64>,
8085    #[prost(uint32, optional, tag = "2")]
8086    pub tid: ::core::option::Option<u32>,
8087    #[prost(string, optional, tag = "3")]
8088    pub name: ::core::option::Option<::prost::alloc::string::String>,
8089    #[prost(enumeration = "v8_internal_code::Type", optional, tag = "4")]
8090    pub r#type: ::core::option::Option<i32>,
8091    #[prost(int32, optional, tag = "5")]
8092    pub builtin_id: ::core::option::Option<i32>,
8093    #[prost(uint64, optional, tag = "6")]
8094    pub instruction_start: ::core::option::Option<u64>,
8095    #[prost(uint64, optional, tag = "7")]
8096    pub instruction_size_bytes: ::core::option::Option<u64>,
8097    #[prost(bytes = "vec", optional, tag = "8")]
8098    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8099}
8100/// Nested message and enum types in `V8InternalCode`.
8101pub mod v8_internal_code {
8102    #[derive(
8103        Clone,
8104        Copy,
8105        Debug,
8106        PartialEq,
8107        Eq,
8108        Hash,
8109        PartialOrd,
8110        Ord,
8111        ::prost::Enumeration
8112    )]
8113    #[repr(i32)]
8114    pub enum Type {
8115        Unknown = 0,
8116        BytecodeHandler = 1,
8117        ForTesting = 2,
8118        Builtin = 3,
8119        WasmFunction = 4,
8120        WasmToCapiFunction = 5,
8121        WasmToJsFunction = 6,
8122        JsToWasmFunction = 7,
8123        JsToJsFunction = 8,
8124        CWasmEntry = 9,
8125    }
8126    impl Type {
8127        /// String value of the enum field names used in the ProtoBuf definition.
8128        ///
8129        /// The values are not transformed in any way and thus are considered stable
8130        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8131        pub fn as_str_name(&self) -> &'static str {
8132            match self {
8133                Self::Unknown => "TYPE_UNKNOWN",
8134                Self::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
8135                Self::ForTesting => "TYPE_FOR_TESTING",
8136                Self::Builtin => "TYPE_BUILTIN",
8137                Self::WasmFunction => "TYPE_WASM_FUNCTION",
8138                Self::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
8139                Self::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
8140                Self::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
8141                Self::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
8142                Self::CWasmEntry => "TYPE_C_WASM_ENTRY",
8143            }
8144        }
8145        /// Creates an enum from field names used in the ProtoBuf definition.
8146        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8147            match value {
8148                "TYPE_UNKNOWN" => Some(Self::Unknown),
8149                "TYPE_BYTECODE_HANDLER" => Some(Self::BytecodeHandler),
8150                "TYPE_FOR_TESTING" => Some(Self::ForTesting),
8151                "TYPE_BUILTIN" => Some(Self::Builtin),
8152                "TYPE_WASM_FUNCTION" => Some(Self::WasmFunction),
8153                "TYPE_WASM_TO_CAPI_FUNCTION" => Some(Self::WasmToCapiFunction),
8154                "TYPE_WASM_TO_JS_FUNCTION" => Some(Self::WasmToJsFunction),
8155                "TYPE_JS_TO_WASM_FUNCTION" => Some(Self::JsToWasmFunction),
8156                "TYPE_JS_TO_JS_FUNCTION" => Some(Self::JsToJsFunction),
8157                "TYPE_C_WASM_ENTRY" => Some(Self::CWasmEntry),
8158                _ => None,
8159            }
8160        }
8161    }
8162}
8163#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8164pub struct V8WasmCode {
8165    #[prost(uint64, optional, tag = "1")]
8166    pub v8_isolate_iid: ::core::option::Option<u64>,
8167    #[prost(uint32, optional, tag = "2")]
8168    pub tid: ::core::option::Option<u32>,
8169    #[prost(uint64, optional, tag = "3")]
8170    pub v8_wasm_script_iid: ::core::option::Option<u64>,
8171    #[prost(string, optional, tag = "4")]
8172    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
8173    #[prost(enumeration = "v8_wasm_code::Tier", optional, tag = "5")]
8174    pub tier: ::core::option::Option<i32>,
8175    #[prost(int32, optional, tag = "6")]
8176    pub code_offset_in_module: ::core::option::Option<i32>,
8177    #[prost(uint64, optional, tag = "7")]
8178    pub instruction_start: ::core::option::Option<u64>,
8179    #[prost(uint64, optional, tag = "8")]
8180    pub instruction_size_bytes: ::core::option::Option<u64>,
8181    #[prost(bytes = "vec", optional, tag = "9")]
8182    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8183}
8184/// Nested message and enum types in `V8WasmCode`.
8185pub mod v8_wasm_code {
8186    #[derive(
8187        Clone,
8188        Copy,
8189        Debug,
8190        PartialEq,
8191        Eq,
8192        Hash,
8193        PartialOrd,
8194        Ord,
8195        ::prost::Enumeration
8196    )]
8197    #[repr(i32)]
8198    pub enum Tier {
8199        Unknown = 0,
8200        Liftoff = 1,
8201        Turbofan = 2,
8202    }
8203    impl Tier {
8204        /// String value of the enum field names used in the ProtoBuf definition.
8205        ///
8206        /// The values are not transformed in any way and thus are considered stable
8207        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8208        pub fn as_str_name(&self) -> &'static str {
8209            match self {
8210                Self::Unknown => "TIER_UNKNOWN",
8211                Self::Liftoff => "TIER_LIFTOFF",
8212                Self::Turbofan => "TIER_TURBOFAN",
8213            }
8214        }
8215        /// Creates an enum from field names used in the ProtoBuf definition.
8216        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8217            match value {
8218                "TIER_UNKNOWN" => Some(Self::Unknown),
8219                "TIER_LIFTOFF" => Some(Self::Liftoff),
8220                "TIER_TURBOFAN" => Some(Self::Turbofan),
8221                _ => None,
8222            }
8223        }
8224    }
8225}
8226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8227pub struct V8RegExpCode {
8228    #[prost(uint64, optional, tag = "1")]
8229    pub v8_isolate_iid: ::core::option::Option<u64>,
8230    #[prost(uint32, optional, tag = "2")]
8231    pub tid: ::core::option::Option<u32>,
8232    #[prost(message, optional, tag = "3")]
8233    pub pattern: ::core::option::Option<V8String>,
8234    #[prost(uint64, optional, tag = "4")]
8235    pub instruction_start: ::core::option::Option<u64>,
8236    #[prost(uint64, optional, tag = "5")]
8237    pub instruction_size_bytes: ::core::option::Option<u64>,
8238    #[prost(bytes = "vec", optional, tag = "6")]
8239    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8240}
8241/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
8242/// memory by V8's GC.
8243#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8244pub struct V8CodeMove {
8245    #[prost(uint64, optional, tag = "1")]
8246    pub isolate_iid: ::core::option::Option<u64>,
8247    #[prost(uint32, optional, tag = "2")]
8248    pub tid: ::core::option::Option<u32>,
8249    #[prost(uint64, optional, tag = "3")]
8250    pub from_instruction_start_address: ::core::option::Option<u64>,
8251    #[prost(uint64, optional, tag = "4")]
8252    pub to_instruction_start_address: ::core::option::Option<u64>,
8253    #[prost(uint64, optional, tag = "5")]
8254    pub instruction_size_bytes: ::core::option::Option<u64>,
8255    #[prost(oneof = "v8_code_move::ToInstructions", tags = "6, 7")]
8256    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
8257}
8258/// Nested message and enum types in `V8CodeMove`.
8259pub mod v8_code_move {
8260    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8261    pub enum ToInstructions {
8262        #[prost(bytes, tag = "6")]
8263        ToMachineCode(::prost::alloc::vec::Vec<u8>),
8264        #[prost(bytes, tag = "7")]
8265        ToBytecode(::prost::alloc::vec::Vec<u8>),
8266    }
8267}
8268#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8269pub struct V8CodeDefaults {
8270    #[prost(uint32, optional, tag = "1")]
8271    pub tid: ::core::option::Option<u32>,
8272}
8273/// A snapshot of clock readings to allow for trace alignment.
8274#[derive(Clone, PartialEq, ::prost::Message)]
8275pub struct ClockSnapshot {
8276    #[prost(message, repeated, tag = "1")]
8277    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
8278    /// The authoritative clock domain for the trace. When set, this definitively
8279    /// overrides the trace time clock. If not set, the trace time clock remains
8280    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
8281    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
8282    /// snapshots). Trace processor will attempt to translate packet/event
8283    /// timestamps from various data sources (and their chosen clock domains) to
8284    /// this domain during import.
8285    #[prost(enumeration = "BuiltinClock", optional, tag = "2")]
8286    pub primary_trace_clock: ::core::option::Option<i32>,
8287}
8288/// Nested message and enum types in `ClockSnapshot`.
8289pub mod clock_snapshot {
8290    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8291    pub struct Clock {
8292        /// Clock IDs have the following semantic:
8293        /// \[1, 63\]:    Builtin types, see BuiltinClock from
8294        ///              ../common/builtin_clock.proto.
8295        /// \[64, 127\]:  User-defined clocks. These clocks are sequence-scoped. They
8296        ///              are only valid within the same |trusted_packet_sequence_id|
8297        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
8298        ///              that emitted the clock snapshot).
8299        /// \[128, MAX\]: Reserved for future use. The idea is to allow global clock
8300        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
8301        #[prost(uint32, optional, tag = "1")]
8302        pub clock_id: ::core::option::Option<u32>,
8303        /// Absolute timestamp. Unit is ns unless specified otherwise by the
8304        /// unit_multiplier_ns field below.
8305        #[prost(uint64, optional, tag = "2")]
8306        pub timestamp: ::core::option::Option<u64>,
8307        /// When true each TracePacket's timestamp should be interpreted as a delta
8308        /// from the last TracePacket's timestamp (referencing this clock) emitted by
8309        /// the same packet_sequence_id. Should only be used for user-defined
8310        /// sequence-local clocks. The first packet timestamp after each
8311        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
8312        /// the ClockSnapshot.
8313        #[prost(bool, optional, tag = "3")]
8314        pub is_incremental: ::core::option::Option<bool>,
8315        /// Allows to specify a custom unit different than the default (ns) for this
8316        /// clock domain.
8317        ///
8318        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
8319        ///    as 3000 ns = 3 us.
8320        /// * All snapshots for the same clock within a trace need to use the same
8321        ///    unit.
8322        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
8323        #[prost(uint64, optional, tag = "4")]
8324        pub unit_multiplier_ns: ::core::option::Option<u64>,
8325    }
8326    /// Nested message and enum types in `Clock`.
8327    pub mod clock {
8328        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
8329        #[derive(
8330            Clone,
8331            Copy,
8332            Debug,
8333            PartialEq,
8334            Eq,
8335            Hash,
8336            PartialOrd,
8337            Ord,
8338            ::prost::Enumeration
8339        )]
8340        #[repr(i32)]
8341        pub enum BuiltinClocks {
8342            Unknown = 0,
8343            Realtime = 1,
8344            RealtimeCoarse = 2,
8345            Monotonic = 3,
8346            MonotonicCoarse = 4,
8347            MonotonicRaw = 5,
8348            Boottime = 6,
8349            BuiltinClockMaxId = 63,
8350        }
8351        impl BuiltinClocks {
8352            /// String value of the enum field names used in the ProtoBuf definition.
8353            ///
8354            /// The values are not transformed in any way and thus are considered stable
8355            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8356            pub fn as_str_name(&self) -> &'static str {
8357                match self {
8358                    Self::Unknown => "UNKNOWN",
8359                    Self::Realtime => "REALTIME",
8360                    Self::RealtimeCoarse => "REALTIME_COARSE",
8361                    Self::Monotonic => "MONOTONIC",
8362                    Self::MonotonicCoarse => "MONOTONIC_COARSE",
8363                    Self::MonotonicRaw => "MONOTONIC_RAW",
8364                    Self::Boottime => "BOOTTIME",
8365                    Self::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
8366                }
8367            }
8368            /// Creates an enum from field names used in the ProtoBuf definition.
8369            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8370                match value {
8371                    "UNKNOWN" => Some(Self::Unknown),
8372                    "REALTIME" => Some(Self::Realtime),
8373                    "REALTIME_COARSE" => Some(Self::RealtimeCoarse),
8374                    "MONOTONIC" => Some(Self::Monotonic),
8375                    "MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
8376                    "MONOTONIC_RAW" => Some(Self::MonotonicRaw),
8377                    "BOOTTIME" => Some(Self::Boottime),
8378                    "BUILTIN_CLOCK_MAX_ID" => Some(Self::BuiltinClockMaxId),
8379                    _ => None,
8380                }
8381            }
8382        }
8383    }
8384}
8385/// Proto definition based on the Thread_v2 CSwitch class definition
8386/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
8387#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8388pub struct CSwitchEtwEvent {
8389    /// New thread ID after the switch.
8390    #[prost(uint32, optional, tag = "1")]
8391    pub new_thread_id: ::core::option::Option<u32>,
8392    /// Previous thread ID.
8393    #[prost(uint32, optional, tag = "2")]
8394    pub old_thread_id: ::core::option::Option<u32>,
8395    /// Thread priority of the new thread.
8396    #[prost(sint32, optional, tag = "3")]
8397    pub new_thread_priority: ::core::option::Option<i32>,
8398    /// Thread priority of the previous thread.
8399    #[prost(sint32, optional, tag = "4")]
8400    pub old_thread_priority: ::core::option::Option<i32>,
8401    /// The index of the C-state that was last used by the processor. A value of 0
8402    /// represents the lightest idle state with higher values representing deeper
8403    /// C-states.
8404    #[prost(uint32, optional, tag = "5")]
8405    pub previous_c_state: ::core::option::Option<u32>,
8406    /// Ideal wait time of the previous thread.
8407    #[prost(sint32, optional, tag = "9")]
8408    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
8409    /// Wait time for the new thread.
8410    #[prost(uint32, optional, tag = "10")]
8411    pub new_thread_wait_time: ::core::option::Option<u32>,
8412    #[prost(oneof = "c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags = "6, 11")]
8413    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<
8414        c_switch_etw_event::OldThreadWaitReasonEnumOrInt,
8415    >,
8416    #[prost(oneof = "c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags = "7, 12")]
8417    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<
8418        c_switch_etw_event::OldThreadWaitModeEnumOrInt,
8419    >,
8420    #[prost(oneof = "c_switch_etw_event::OldThreadStateEnumOrInt", tags = "8, 13")]
8421    pub old_thread_state_enum_or_int: ::core::option::Option<
8422        c_switch_etw_event::OldThreadStateEnumOrInt,
8423    >,
8424}
8425/// Nested message and enum types in `CSwitchEtwEvent`.
8426pub mod c_switch_etw_event {
8427    /// Wait reason for the previous thread. The ordering is important as based on
8428    /// the OldThreadWaitReason definition from the link above. The following are
8429    /// the possible values:
8430    #[derive(
8431        Clone,
8432        Copy,
8433        Debug,
8434        PartialEq,
8435        Eq,
8436        Hash,
8437        PartialOrd,
8438        Ord,
8439        ::prost::Enumeration
8440    )]
8441    #[repr(i32)]
8442    pub enum OldThreadWaitReason {
8443        Executive = 0,
8444        FreePage = 1,
8445        PageIn = 2,
8446        PoolAllocation = 3,
8447        DelayExecution = 4,
8448        Suspend = 5,
8449        UserRequest = 6,
8450        WrExecutive = 7,
8451        WrFreePage = 8,
8452        WrPageIn = 9,
8453        WrPoolAllocation = 10,
8454        WrDelayExecution = 11,
8455        WrSuspended = 12,
8456        WrUserRequest = 13,
8457        WrEventPair = 14,
8458        WrQueue = 15,
8459        WrLpcReceiver = 16,
8460        WrLpcReply = 17,
8461        WrVirtualMemory = 18,
8462        WrPageOut = 19,
8463        WrRendezVous = 20,
8464        WrKeyedEvent = 21,
8465        WrTerminated = 22,
8466        WrProcessInSwap = 23,
8467        WrCpuRateControl = 24,
8468        WrCalloutStack = 25,
8469        WrKernel = 26,
8470        WrResource = 27,
8471        WrPushLock = 28,
8472        WrMutex = 29,
8473        WrQuantumEnd = 30,
8474        WrDispatchInt = 31,
8475        WrPreempted = 32,
8476        WrYieldExecution = 33,
8477        WrFastMutex = 34,
8478        WrGuardMutex = 35,
8479        WrRundown = 36,
8480        MaximumWaitReason = 37,
8481    }
8482    impl OldThreadWaitReason {
8483        /// String value of the enum field names used in the ProtoBuf definition.
8484        ///
8485        /// The values are not transformed in any way and thus are considered stable
8486        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8487        pub fn as_str_name(&self) -> &'static str {
8488            match self {
8489                Self::Executive => "EXECUTIVE",
8490                Self::FreePage => "FREE_PAGE",
8491                Self::PageIn => "PAGE_IN",
8492                Self::PoolAllocation => "POOL_ALLOCATION",
8493                Self::DelayExecution => "DELAY_EXECUTION",
8494                Self::Suspend => "SUSPEND",
8495                Self::UserRequest => "USER_REQUEST",
8496                Self::WrExecutive => "WR_EXECUTIVE",
8497                Self::WrFreePage => "WR_FREE_PAGE",
8498                Self::WrPageIn => "WR_PAGE_IN",
8499                Self::WrPoolAllocation => "WR_POOL_ALLOCATION",
8500                Self::WrDelayExecution => "WR_DELAY_EXECUTION",
8501                Self::WrSuspended => "WR_SUSPENDED",
8502                Self::WrUserRequest => "WR_USER_REQUEST",
8503                Self::WrEventPair => "WR_EVENT_PAIR",
8504                Self::WrQueue => "WR_QUEUE",
8505                Self::WrLpcReceiver => "WR_LPC_RECEIVER",
8506                Self::WrLpcReply => "WR_LPC_REPLY",
8507                Self::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
8508                Self::WrPageOut => "WR_PAGE_OUT",
8509                Self::WrRendezVous => "WR_RENDEZ_VOUS",
8510                Self::WrKeyedEvent => "WR_KEYED_EVENT",
8511                Self::WrTerminated => "WR_TERMINATED",
8512                Self::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
8513                Self::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
8514                Self::WrCalloutStack => "WR_CALLOUT_STACK",
8515                Self::WrKernel => "WR_KERNEL",
8516                Self::WrResource => "WR_RESOURCE",
8517                Self::WrPushLock => "WR_PUSH_LOCK",
8518                Self::WrMutex => "WR_MUTEX",
8519                Self::WrQuantumEnd => "WR_QUANTUM_END",
8520                Self::WrDispatchInt => "WR_DISPATCH_INT",
8521                Self::WrPreempted => "WR_PREEMPTED",
8522                Self::WrYieldExecution => "WR_YIELD_EXECUTION",
8523                Self::WrFastMutex => "WR_FAST_MUTEX",
8524                Self::WrGuardMutex => "WR_GUARD_MUTEX",
8525                Self::WrRundown => "WR_RUNDOWN",
8526                Self::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
8527            }
8528        }
8529        /// Creates an enum from field names used in the ProtoBuf definition.
8530        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8531            match value {
8532                "EXECUTIVE" => Some(Self::Executive),
8533                "FREE_PAGE" => Some(Self::FreePage),
8534                "PAGE_IN" => Some(Self::PageIn),
8535                "POOL_ALLOCATION" => Some(Self::PoolAllocation),
8536                "DELAY_EXECUTION" => Some(Self::DelayExecution),
8537                "SUSPEND" => Some(Self::Suspend),
8538                "USER_REQUEST" => Some(Self::UserRequest),
8539                "WR_EXECUTIVE" => Some(Self::WrExecutive),
8540                "WR_FREE_PAGE" => Some(Self::WrFreePage),
8541                "WR_PAGE_IN" => Some(Self::WrPageIn),
8542                "WR_POOL_ALLOCATION" => Some(Self::WrPoolAllocation),
8543                "WR_DELAY_EXECUTION" => Some(Self::WrDelayExecution),
8544                "WR_SUSPENDED" => Some(Self::WrSuspended),
8545                "WR_USER_REQUEST" => Some(Self::WrUserRequest),
8546                "WR_EVENT_PAIR" => Some(Self::WrEventPair),
8547                "WR_QUEUE" => Some(Self::WrQueue),
8548                "WR_LPC_RECEIVER" => Some(Self::WrLpcReceiver),
8549                "WR_LPC_REPLY" => Some(Self::WrLpcReply),
8550                "WR_VIRTUAL_MEMORY" => Some(Self::WrVirtualMemory),
8551                "WR_PAGE_OUT" => Some(Self::WrPageOut),
8552                "WR_RENDEZ_VOUS" => Some(Self::WrRendezVous),
8553                "WR_KEYED_EVENT" => Some(Self::WrKeyedEvent),
8554                "WR_TERMINATED" => Some(Self::WrTerminated),
8555                "WR_PROCESS_IN_SWAP" => Some(Self::WrProcessInSwap),
8556                "WR_CPU_RATE_CONTROL" => Some(Self::WrCpuRateControl),
8557                "WR_CALLOUT_STACK" => Some(Self::WrCalloutStack),
8558                "WR_KERNEL" => Some(Self::WrKernel),
8559                "WR_RESOURCE" => Some(Self::WrResource),
8560                "WR_PUSH_LOCK" => Some(Self::WrPushLock),
8561                "WR_MUTEX" => Some(Self::WrMutex),
8562                "WR_QUANTUM_END" => Some(Self::WrQuantumEnd),
8563                "WR_DISPATCH_INT" => Some(Self::WrDispatchInt),
8564                "WR_PREEMPTED" => Some(Self::WrPreempted),
8565                "WR_YIELD_EXECUTION" => Some(Self::WrYieldExecution),
8566                "WR_FAST_MUTEX" => Some(Self::WrFastMutex),
8567                "WR_GUARD_MUTEX" => Some(Self::WrGuardMutex),
8568                "WR_RUNDOWN" => Some(Self::WrRundown),
8569                "MAXIMUM_WAIT_REASON" => Some(Self::MaximumWaitReason),
8570                _ => None,
8571            }
8572        }
8573    }
8574    /// Wait mode for the previous thread. The ordering is important as based on
8575    /// the OldThreadWaitMode definition from the link above. The following are the
8576    /// possible values:
8577    #[derive(
8578        Clone,
8579        Copy,
8580        Debug,
8581        PartialEq,
8582        Eq,
8583        Hash,
8584        PartialOrd,
8585        Ord,
8586        ::prost::Enumeration
8587    )]
8588    #[repr(i32)]
8589    pub enum OldThreadWaitMode {
8590        KernelMode = 0,
8591        UserMode = 1,
8592    }
8593    impl OldThreadWaitMode {
8594        /// String value of the enum field names used in the ProtoBuf definition.
8595        ///
8596        /// The values are not transformed in any way and thus are considered stable
8597        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8598        pub fn as_str_name(&self) -> &'static str {
8599            match self {
8600                Self::KernelMode => "KERNEL_MODE",
8601                Self::UserMode => "USER_MODE",
8602            }
8603        }
8604        /// Creates an enum from field names used in the ProtoBuf definition.
8605        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8606            match value {
8607                "KERNEL_MODE" => Some(Self::KernelMode),
8608                "USER_MODE" => Some(Self::UserMode),
8609                _ => None,
8610            }
8611        }
8612    }
8613    /// State of the previous thread. The ordering is important as based on the
8614    /// OldThreadState definition from the link above. The following are the
8615    /// possible state values:
8616    #[derive(
8617        Clone,
8618        Copy,
8619        Debug,
8620        PartialEq,
8621        Eq,
8622        Hash,
8623        PartialOrd,
8624        Ord,
8625        ::prost::Enumeration
8626    )]
8627    #[repr(i32)]
8628    pub enum OldThreadState {
8629        Initialized = 0,
8630        Ready = 1,
8631        Running = 2,
8632        Standby = 3,
8633        Terminated = 4,
8634        Waiting = 5,
8635        Transition = 6,
8636        DeferredReady = 7,
8637    }
8638    impl OldThreadState {
8639        /// String value of the enum field names used in the ProtoBuf definition.
8640        ///
8641        /// The values are not transformed in any way and thus are considered stable
8642        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8643        pub fn as_str_name(&self) -> &'static str {
8644            match self {
8645                Self::Initialized => "INITIALIZED",
8646                Self::Ready => "READY",
8647                Self::Running => "RUNNING",
8648                Self::Standby => "STANDBY",
8649                Self::Terminated => "TERMINATED",
8650                Self::Waiting => "WAITING",
8651                Self::Transition => "TRANSITION",
8652                Self::DeferredReady => "DEFERRED_READY",
8653            }
8654        }
8655        /// Creates an enum from field names used in the ProtoBuf definition.
8656        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8657            match value {
8658                "INITIALIZED" => Some(Self::Initialized),
8659                "READY" => Some(Self::Ready),
8660                "RUNNING" => Some(Self::Running),
8661                "STANDBY" => Some(Self::Standby),
8662                "TERMINATED" => Some(Self::Terminated),
8663                "WAITING" => Some(Self::Waiting),
8664                "TRANSITION" => Some(Self::Transition),
8665                "DEFERRED_READY" => Some(Self::DeferredReady),
8666                _ => None,
8667            }
8668        }
8669    }
8670    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8671    pub enum OldThreadWaitReasonEnumOrInt {
8672        #[prost(enumeration = "OldThreadWaitReason", tag = "6")]
8673        OldThreadWaitReason(i32),
8674        #[prost(int32, tag = "11")]
8675        OldThreadWaitReasonInt(i32),
8676    }
8677    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8678    pub enum OldThreadWaitModeEnumOrInt {
8679        #[prost(enumeration = "OldThreadWaitMode", tag = "7")]
8680        OldThreadWaitMode(i32),
8681        #[prost(int32, tag = "12")]
8682        OldThreadWaitModeInt(i32),
8683    }
8684    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8685    pub enum OldThreadStateEnumOrInt {
8686        #[prost(enumeration = "OldThreadState", tag = "8")]
8687        OldThreadState(i32),
8688        #[prost(sint32, tag = "13")]
8689        OldThreadStateInt(i32),
8690    }
8691}
8692/// Proto definition based on the Thread_v2 CSwitch class definition
8693/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
8694#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8695pub struct ReadyThreadEtwEvent {
8696    /// The thread identifier of the thread being readied for execution.
8697    #[prost(uint32, optional, tag = "1")]
8698    pub t_thread_id: ::core::option::Option<u32>,
8699    ///   The value by which the priority is being adjusted.
8700    #[prost(sint32, optional, tag = "3")]
8701    pub adjust_increment: ::core::option::Option<i32>,
8702    #[prost(oneof = "ready_thread_etw_event::AdjustReasonEnumOrInt", tags = "2, 5")]
8703    pub adjust_reason_enum_or_int: ::core::option::Option<
8704        ready_thread_etw_event::AdjustReasonEnumOrInt,
8705    >,
8706    #[prost(oneof = "ready_thread_etw_event::FlagEnumOrInt", tags = "4, 6")]
8707    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
8708}
8709/// Nested message and enum types in `ReadyThreadEtwEvent`.
8710pub mod ready_thread_etw_event {
8711    /// The reason for the priority boost. The ordering is important as based on
8712    /// the AdjustReason definition from the link above.
8713    #[derive(
8714        Clone,
8715        Copy,
8716        Debug,
8717        PartialEq,
8718        Eq,
8719        Hash,
8720        PartialOrd,
8721        Ord,
8722        ::prost::Enumeration
8723    )]
8724    #[repr(i32)]
8725    pub enum AdjustReason {
8726        IgnoreTheIncrement = 0,
8727        /// Apply the increment, which will decay incrementally at the end of each
8728        /// quantum.
8729        ApplyIncrement = 1,
8730        /// Apply the increment as a boost that will decay in its entirety at quantum
8731        /// (typically for priority donation).
8732        ApplyIncrementBoost = 2,
8733    }
8734    impl AdjustReason {
8735        /// String value of the enum field names used in the ProtoBuf definition.
8736        ///
8737        /// The values are not transformed in any way and thus are considered stable
8738        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8739        pub fn as_str_name(&self) -> &'static str {
8740            match self {
8741                Self::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
8742                Self::ApplyIncrement => "APPLY_INCREMENT",
8743                Self::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
8744            }
8745        }
8746        /// Creates an enum from field names used in the ProtoBuf definition.
8747        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8748            match value {
8749                "IGNORE_THE_INCREMENT" => Some(Self::IgnoreTheIncrement),
8750                "APPLY_INCREMENT" => Some(Self::ApplyIncrement),
8751                "APPLY_INCREMENT_BOOST" => Some(Self::ApplyIncrementBoost),
8752                _ => None,
8753            }
8754        }
8755    }
8756    #[derive(
8757        Clone,
8758        Copy,
8759        Debug,
8760        PartialEq,
8761        Eq,
8762        Hash,
8763        PartialOrd,
8764        Ord,
8765        ::prost::Enumeration
8766    )]
8767    #[repr(i32)]
8768    pub enum TraceFlag {
8769        Unspecified = 0,
8770        /// The thread has been readied from DPC (deferred procedure call).
8771        ThreadReadied = 1,
8772        /// The kernel stack is currently swapped out.
8773        KernelStackSwappedOut = 2,
8774        /// The process address space is swapped out.
8775        ProcessAddressSwappedOut = 4,
8776    }
8777    impl TraceFlag {
8778        /// String value of the enum field names used in the ProtoBuf definition.
8779        ///
8780        /// The values are not transformed in any way and thus are considered stable
8781        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8782        pub fn as_str_name(&self) -> &'static str {
8783            match self {
8784                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
8785                Self::ThreadReadied => "THREAD_READIED",
8786                Self::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
8787                Self::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
8788            }
8789        }
8790        /// Creates an enum from field names used in the ProtoBuf definition.
8791        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8792            match value {
8793                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
8794                "THREAD_READIED" => Some(Self::ThreadReadied),
8795                "KERNEL_STACK_SWAPPED_OUT" => Some(Self::KernelStackSwappedOut),
8796                "PROCESS_ADDRESS_SWAPPED_OUT" => Some(Self::ProcessAddressSwappedOut),
8797                _ => None,
8798            }
8799        }
8800    }
8801    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8802    pub enum AdjustReasonEnumOrInt {
8803        #[prost(enumeration = "AdjustReason", tag = "2")]
8804        AdjustReason(i32),
8805        #[prost(int32, tag = "5")]
8806        AdjustReasonInt(i32),
8807    }
8808    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
8809    pub enum FlagEnumOrInt {
8810        #[prost(enumeration = "TraceFlag", tag = "4")]
8811        Flag(i32),
8812        #[prost(int32, tag = "6")]
8813        FlagInt(i32),
8814    }
8815}
8816/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
8817/// on local traces using tracerpt:
8818/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
8819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8820pub struct MemInfoEtwEvent {
8821    /// Number of memory priorities on the system.
8822    #[prost(uint32, optional, tag = "1")]
8823    pub priority_levels: ::core::option::Option<u32>,
8824    /// Number of pages in the zero list.
8825    #[prost(uint64, optional, tag = "2")]
8826    pub zero_page_count: ::core::option::Option<u64>,
8827    /// Number of pages in the free list.
8828    #[prost(uint64, optional, tag = "3")]
8829    pub free_page_count: ::core::option::Option<u64>,
8830    /// Number of pages in the modified list.
8831    #[prost(uint64, optional, tag = "4")]
8832    pub modified_page_count: ::core::option::Option<u64>,
8833    /// Number of modified non-paged pool pages.
8834    #[prost(uint64, optional, tag = "5")]
8835    pub modified_no_write_page_count: ::core::option::Option<u64>,
8836    /// Number of bad pages.
8837    #[prost(uint64, optional, tag = "6")]
8838    pub bad_page_count: ::core::option::Option<u64>,
8839    /// Number of standby pages by memory priority.
8840    #[prost(uint64, repeated, packed = "false", tag = "7")]
8841    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
8842    /// Number of repurposed pages by memory priority.
8843    #[prost(uint64, repeated, packed = "false", tag = "8")]
8844    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
8845    /// Modified paged pages.
8846    #[prost(uint64, optional, tag = "9")]
8847    pub modified_page_count_page_file: ::core::option::Option<u64>,
8848    /// Pool page counts.
8849    #[prost(uint64, optional, tag = "10")]
8850    pub paged_pool_page_count: ::core::option::Option<u64>,
8851    #[prost(uint64, optional, tag = "11")]
8852    pub non_paged_pool_page_count: ::core::option::Option<u64>,
8853    /// Memory Descriptor List page count.
8854    #[prost(uint64, optional, tag = "12")]
8855    pub mdl_page_count: ::core::option::Option<u64>,
8856    /// Commit weight.
8857    #[prost(uint64, optional, tag = "13")]
8858    pub commit_page_count: ::core::option::Option<u64>,
8859}
8860/// Proto definition based on the `FileIo_Create` class definition.
8861#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8862pub struct FileIoCreateEtwEvent {
8863    #[prost(uint64, optional, tag = "1")]
8864    pub irp_ptr: ::core::option::Option<u64>,
8865    #[prost(uint64, optional, tag = "2")]
8866    pub file_object: ::core::option::Option<u64>,
8867    #[prost(uint32, optional, tag = "3")]
8868    pub ttid: ::core::option::Option<u32>,
8869    #[prost(uint32, optional, tag = "4")]
8870    pub create_options: ::core::option::Option<u32>,
8871    #[prost(uint32, optional, tag = "5")]
8872    pub file_attributes: ::core::option::Option<u32>,
8873    #[prost(uint32, optional, tag = "6")]
8874    pub share_access: ::core::option::Option<u32>,
8875    #[prost(string, optional, tag = "7")]
8876    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
8877}
8878/// Proto definition based on the `FileIo_DirEnum` class definition.
8879#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8880pub struct FileIoDirEnumEtwEvent {
8881    #[prost(uint64, optional, tag = "1")]
8882    pub irp_ptr: ::core::option::Option<u64>,
8883    #[prost(uint64, optional, tag = "2")]
8884    pub file_object: ::core::option::Option<u64>,
8885    #[prost(uint64, optional, tag = "3")]
8886    pub file_key: ::core::option::Option<u64>,
8887    #[prost(uint32, optional, tag = "4")]
8888    pub ttid: ::core::option::Option<u32>,
8889    #[prost(uint32, optional, tag = "5")]
8890    pub length: ::core::option::Option<u32>,
8891    #[prost(uint32, optional, tag = "6")]
8892    pub info_class: ::core::option::Option<u32>,
8893    #[prost(uint32, optional, tag = "7")]
8894    pub file_index: ::core::option::Option<u32>,
8895    #[prost(string, optional, tag = "8")]
8896    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8897    #[prost(uint32, optional, tag = "9")]
8898    pub opcode: ::core::option::Option<u32>,
8899}
8900/// Proto definition based on the `FileIo_Info` class definition.
8901#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8902pub struct FileIoInfoEtwEvent {
8903    #[prost(uint64, optional, tag = "1")]
8904    pub irp_ptr: ::core::option::Option<u64>,
8905    #[prost(uint64, optional, tag = "2")]
8906    pub file_object: ::core::option::Option<u64>,
8907    #[prost(uint64, optional, tag = "3")]
8908    pub file_key: ::core::option::Option<u64>,
8909    #[prost(uint64, optional, tag = "4")]
8910    pub extra_info: ::core::option::Option<u64>,
8911    #[prost(uint32, optional, tag = "5")]
8912    pub ttid: ::core::option::Option<u32>,
8913    #[prost(uint32, optional, tag = "6")]
8914    pub info_class: ::core::option::Option<u32>,
8915    #[prost(uint32, optional, tag = "7")]
8916    pub opcode: ::core::option::Option<u32>,
8917}
8918/// Proto definition based on the `FileIo_ReadWrite` class definition.
8919#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8920pub struct FileIoReadWriteEtwEvent {
8921    #[prost(uint64, optional, tag = "1")]
8922    pub offset: ::core::option::Option<u64>,
8923    #[prost(uint64, optional, tag = "2")]
8924    pub irp_ptr: ::core::option::Option<u64>,
8925    #[prost(uint64, optional, tag = "3")]
8926    pub file_object: ::core::option::Option<u64>,
8927    #[prost(uint64, optional, tag = "4")]
8928    pub file_key: ::core::option::Option<u64>,
8929    #[prost(uint32, optional, tag = "5")]
8930    pub ttid: ::core::option::Option<u32>,
8931    #[prost(uint32, optional, tag = "6")]
8932    pub io_size: ::core::option::Option<u32>,
8933    #[prost(uint32, optional, tag = "7")]
8934    pub io_flags: ::core::option::Option<u32>,
8935    #[prost(uint32, optional, tag = "8")]
8936    pub opcode: ::core::option::Option<u32>,
8937}
8938/// Proto definition based on the `FileIo_SimpleOp` class definition.
8939#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8940pub struct FileIoSimpleOpEtwEvent {
8941    #[prost(uint64, optional, tag = "1")]
8942    pub irp_ptr: ::core::option::Option<u64>,
8943    #[prost(uint64, optional, tag = "2")]
8944    pub file_object: ::core::option::Option<u64>,
8945    #[prost(uint64, optional, tag = "3")]
8946    pub file_key: ::core::option::Option<u64>,
8947    #[prost(uint32, optional, tag = "4")]
8948    pub ttid: ::core::option::Option<u32>,
8949    #[prost(uint32, optional, tag = "5")]
8950    pub opcode: ::core::option::Option<u32>,
8951}
8952/// Proto definition based on the `FileIo_OpEnd` class definition.
8953#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8954pub struct FileIoOpEndEtwEvent {
8955    #[prost(uint64, optional, tag = "1")]
8956    pub irp_ptr: ::core::option::Option<u64>,
8957    #[prost(uint64, optional, tag = "2")]
8958    pub extra_info: ::core::option::Option<u64>,
8959    #[prost(uint32, optional, tag = "3")]
8960    pub nt_status: ::core::option::Option<u32>,
8961}
8962/// Proto definition based on the `FileIo_PathOperation` class definition.
8963#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8964pub struct FileIoPathOperationEtwEvent {
8965    #[prost(uint64, optional, tag = "1")]
8966    pub irp_ptr: ::core::option::Option<u64>,
8967    #[prost(uint64, optional, tag = "2")]
8968    pub file_object: ::core::option::Option<u64>,
8969    #[prost(uint64, optional, tag = "3")]
8970    pub file_key: ::core::option::Option<u64>,
8971    #[prost(uint64, optional, tag = "4")]
8972    pub extra_info: ::core::option::Option<u64>,
8973    #[prost(uint32, optional, tag = "5")]
8974    pub ttid: ::core::option::Option<u32>,
8975    #[prost(uint32, optional, tag = "6")]
8976    pub info_class: ::core::option::Option<u32>,
8977    #[prost(string, optional, tag = "7")]
8978    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
8979    #[prost(uint32, optional, tag = "8")]
8980    pub opcode: ::core::option::Option<u32>,
8981}
8982/// Proto definition based on the `StackWalk_Event` class definition. See
8983/// `Callstack` in `perfetto/protos/perfetto/trace/track_event/track_event.proto`
8984/// for context on what is contained in it.
8985#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8986pub struct StackWalkEtwEvent {
8987    #[prost(string, optional, tag = "1")]
8988    pub trigger: ::core::option::Option<::prost::alloc::string::String>,
8989    #[prost(uint64, optional, tag = "2")]
8990    pub callstack_iid: ::core::option::Option<u64>,
8991}
8992/// Proto definition based on the `DiskIo_TypeGroup1/2/3` class definitions.
8993#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8994pub struct DiskIoEtwEvent {
8995    #[prost(uint32, optional, tag = "1")]
8996    pub disk_number: ::core::option::Option<u32>,
8997    #[prost(uint32, optional, tag = "2")]
8998    pub irp_flags: ::core::option::Option<u32>,
8999    #[prost(uint32, optional, tag = "3")]
9000    pub transfer_size: ::core::option::Option<u32>,
9001    #[prost(int64, optional, tag = "4")]
9002    pub byte_offset: ::core::option::Option<i64>,
9003    #[prost(uint64, optional, tag = "5")]
9004    pub file_object: ::core::option::Option<u64>,
9005    #[prost(uint64, optional, tag = "6")]
9006    pub irp_ptr: ::core::option::Option<u64>,
9007    #[prost(int64, optional, tag = "7")]
9008    pub response_time: ::core::option::Option<i64>,
9009    #[prost(uint32, optional, tag = "8")]
9010    pub issuing_thread_id: ::core::option::Option<u32>,
9011    #[prost(uint32, optional, tag = "9")]
9012    pub opcode: ::core::option::Option<u32>,
9013}
9014#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9015pub struct EtwTraceEvent {
9016    #[prost(uint64, optional, tag = "1")]
9017    pub timestamp: ::core::option::Option<u64>,
9018    #[prost(uint32, optional, tag = "4")]
9019    pub cpu: ::core::option::Option<u32>,
9020    #[prost(uint32, optional, tag = "5")]
9021    pub thread_id: ::core::option::Option<u32>,
9022    #[prost(
9023        oneof = "etw_trace_event::Event",
9024        tags = "2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15"
9025    )]
9026    pub event: ::core::option::Option<etw_trace_event::Event>,
9027}
9028/// Nested message and enum types in `EtwTraceEvent`.
9029pub mod etw_trace_event {
9030    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9031    pub enum Event {
9032        #[prost(message, tag = "2")]
9033        CSwitch(super::CSwitchEtwEvent),
9034        #[prost(message, tag = "3")]
9035        ReadyThread(super::ReadyThreadEtwEvent),
9036        #[prost(message, tag = "6")]
9037        MemInfo(super::MemInfoEtwEvent),
9038        #[prost(message, tag = "7")]
9039        FileIoCreate(super::FileIoCreateEtwEvent),
9040        #[prost(message, tag = "8")]
9041        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
9042        #[prost(message, tag = "9")]
9043        FileIoInfo(super::FileIoInfoEtwEvent),
9044        #[prost(message, tag = "10")]
9045        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
9046        #[prost(message, tag = "11")]
9047        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
9048        #[prost(message, tag = "12")]
9049        FileIoOpEnd(super::FileIoOpEndEtwEvent),
9050        #[prost(message, tag = "13")]
9051        StackWalk(super::StackWalkEtwEvent),
9052        #[prost(message, tag = "14")]
9053        FileIoPathOperation(super::FileIoPathOperationEtwEvent),
9054        #[prost(message, tag = "15")]
9055        DiskIo(super::DiskIoEtwEvent),
9056    }
9057}
9058/// The result of tracing one or more etw event uses per-processor buffers where
9059/// an in-use buffer is assigned to each processor at all times. Therefore,
9060/// collecting multiple events they should already be synchronized.
9061#[derive(Clone, PartialEq, ::prost::Message)]
9062pub struct EtwTraceEventBundle {
9063    #[prost(uint32, optional, tag = "1")]
9064    pub cpu: ::core::option::Option<u32>,
9065    #[prost(message, repeated, tag = "2")]
9066    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
9067}
9068/// The protocol compiler can output a FileDescriptorSet containing the .proto
9069/// files it parses.
9070#[derive(Clone, PartialEq, ::prost::Message)]
9071pub struct FileDescriptorSet {
9072    #[prost(message, repeated, tag = "1")]
9073    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
9074}
9075/// Describes a complete .proto file.
9076#[derive(Clone, PartialEq, ::prost::Message)]
9077pub struct FileDescriptorProto {
9078    /// file name, relative to root of source tree
9079    #[prost(string, optional, tag = "1")]
9080    pub name: ::core::option::Option<::prost::alloc::string::String>,
9081    /// e.g. "foo", "foo.bar", etc.
9082    #[prost(string, optional, tag = "2")]
9083    pub package: ::core::option::Option<::prost::alloc::string::String>,
9084    /// Names of files imported by this file.
9085    #[prost(string, repeated, tag = "3")]
9086    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9087    /// Indexes of the public imported files in the dependency list above.
9088    #[prost(int32, repeated, packed = "false", tag = "10")]
9089    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
9090    /// Indexes of the weak imported files in the dependency list.
9091    /// For Google-internal migration only. Do not use.
9092    #[prost(int32, repeated, packed = "false", tag = "11")]
9093    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
9094    /// All top-level definitions in this file.
9095    #[prost(message, repeated, tag = "4")]
9096    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9097    #[prost(message, repeated, tag = "5")]
9098    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9099    #[prost(message, repeated, tag = "7")]
9100    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9101}
9102/// Describes a message type.
9103#[derive(Clone, PartialEq, ::prost::Message)]
9104pub struct DescriptorProto {
9105    #[prost(string, optional, tag = "1")]
9106    pub name: ::core::option::Option<::prost::alloc::string::String>,
9107    #[prost(message, repeated, tag = "2")]
9108    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9109    #[prost(message, repeated, tag = "6")]
9110    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
9111    #[prost(message, repeated, tag = "3")]
9112    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
9113    #[prost(message, repeated, tag = "4")]
9114    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
9115    #[prost(message, repeated, tag = "8")]
9116    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
9117    #[prost(message, repeated, tag = "9")]
9118    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
9119    /// Reserved field names, which may not be used by fields in the same message.
9120    /// A given name may only be reserved once.
9121    #[prost(string, repeated, tag = "10")]
9122    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9123}
9124/// Nested message and enum types in `DescriptorProto`.
9125pub mod descriptor_proto {
9126    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
9127    /// fields or extension ranges in the same message. Reserved ranges may
9128    /// not overlap.
9129    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9130    pub struct ReservedRange {
9131        /// Inclusive.
9132        #[prost(int32, optional, tag = "1")]
9133        pub start: ::core::option::Option<i32>,
9134        /// Exclusive.
9135        #[prost(int32, optional, tag = "2")]
9136        pub end: ::core::option::Option<i32>,
9137    }
9138}
9139/// A message representing a option the parser does not recognize. This only
9140/// appears in options protos created by the compiler::Parser class.
9141/// DescriptorPool resolves these when building Descriptor objects. Therefore,
9142/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
9143/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
9144/// in them.
9145#[derive(Clone, PartialEq, ::prost::Message)]
9146pub struct UninterpretedOption {
9147    #[prost(message, repeated, tag = "2")]
9148    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
9149    /// The value of the uninterpreted option, in whatever type the tokenizer
9150    /// identified it as during parsing. Exactly one of these should be set.
9151    #[prost(string, optional, tag = "3")]
9152    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
9153    #[prost(uint64, optional, tag = "4")]
9154    pub positive_int_value: ::core::option::Option<u64>,
9155    #[prost(int64, optional, tag = "5")]
9156    pub negative_int_value: ::core::option::Option<i64>,
9157    #[prost(double, optional, tag = "6")]
9158    pub double_value: ::core::option::Option<f64>,
9159    #[prost(bytes = "vec", optional, tag = "7")]
9160    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9161    #[prost(string, optional, tag = "8")]
9162    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
9163}
9164/// Nested message and enum types in `UninterpretedOption`.
9165pub mod uninterpreted_option {
9166    /// The name of the uninterpreted option.  Each string represents a segment in
9167    /// a dot-separated name.  is_extension is true iff a segment represents an
9168    /// extension (denoted with parentheses in options specs in .proto files).
9169    /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
9170    /// "foo.(bar.baz).moo".
9171    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9172    pub struct NamePart {
9173        #[prost(string, optional, tag = "1")]
9174        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
9175        #[prost(bool, optional, tag = "2")]
9176        pub is_extension: ::core::option::Option<bool>,
9177    }
9178}
9179#[derive(Clone, PartialEq, ::prost::Message)]
9180pub struct FieldOptions {
9181    /// The packed option can be enabled for repeated primitive fields to enable
9182    /// a more efficient representation on the wire. Rather than repeatedly
9183    /// writing the tag and type for each element, the entire array is encoded as
9184    /// a single length-delimited blob. In proto3, only explicit setting it to
9185    /// false will avoid using packed encoding.
9186    #[prost(bool, optional, tag = "2")]
9187    pub packed: ::core::option::Option<bool>,
9188    /// The parser stores options it doesn't recognize here. See above.
9189    #[prost(message, repeated, tag = "999")]
9190    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
9191}
9192/// Describes a field within a message.
9193#[derive(Clone, PartialEq, ::prost::Message)]
9194pub struct FieldDescriptorProto {
9195    #[prost(string, optional, tag = "1")]
9196    pub name: ::core::option::Option<::prost::alloc::string::String>,
9197    #[prost(int32, optional, tag = "3")]
9198    pub number: ::core::option::Option<i32>,
9199    #[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
9200    pub label: ::core::option::Option<i32>,
9201    /// If type_name is set, this need not be set.  If both this and type_name
9202    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
9203    #[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
9204    pub r#type: ::core::option::Option<i32>,
9205    /// For message and enum types, this is the name of the type.  If the name
9206    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
9207    /// rules are used to find the type (i.e. first the nested types within this
9208    /// message are searched, then within the parent, on up to the root
9209    /// namespace).
9210    #[prost(string, optional, tag = "6")]
9211    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
9212    /// For extensions, this is the name of the type being extended.  It is
9213    /// resolved in the same manner as type_name.
9214    #[prost(string, optional, tag = "2")]
9215    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
9216    /// For numeric types, contains the original text representation of the value.
9217    /// For booleans, "true" or "false".
9218    /// For strings, contains the default text contents (not escaped in any way).
9219    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
9220    /// TODO(kenton):  Base-64 encode?
9221    #[prost(string, optional, tag = "7")]
9222    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
9223    #[prost(message, optional, tag = "8")]
9224    pub options: ::core::option::Option<FieldOptions>,
9225    /// If set, gives the index of a oneof in the containing type's oneof_decl
9226    /// list.  This field is a member of that oneof.
9227    #[prost(int32, optional, tag = "9")]
9228    pub oneof_index: ::core::option::Option<i32>,
9229}
9230/// Nested message and enum types in `FieldDescriptorProto`.
9231pub mod field_descriptor_proto {
9232    #[derive(
9233        Clone,
9234        Copy,
9235        Debug,
9236        PartialEq,
9237        Eq,
9238        Hash,
9239        PartialOrd,
9240        Ord,
9241        ::prost::Enumeration
9242    )]
9243    #[repr(i32)]
9244    pub enum Type {
9245        /// 0 is reserved for errors.
9246        /// Order is weird for historical reasons.
9247        Double = 1,
9248        Float = 2,
9249        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
9250        /// negative values are likely.
9251        Int64 = 3,
9252        Uint64 = 4,
9253        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
9254        /// negative values are likely.
9255        Int32 = 5,
9256        Fixed64 = 6,
9257        Fixed32 = 7,
9258        Bool = 8,
9259        String = 9,
9260        /// Tag-delimited aggregate.
9261        /// Group type is deprecated and not supported in proto3. However, Proto3
9262        /// implementations should still be able to parse the group wire format and
9263        /// treat group fields as unknown fields.
9264        Group = 10,
9265        /// Length-delimited aggregate.
9266        Message = 11,
9267        /// New in version 2.
9268        Bytes = 12,
9269        Uint32 = 13,
9270        Enum = 14,
9271        Sfixed32 = 15,
9272        Sfixed64 = 16,
9273        /// Uses ZigZag encoding.
9274        Sint32 = 17,
9275        /// Uses ZigZag encoding.
9276        Sint64 = 18,
9277    }
9278    impl Type {
9279        /// String value of the enum field names used in the ProtoBuf definition.
9280        ///
9281        /// The values are not transformed in any way and thus are considered stable
9282        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9283        pub fn as_str_name(&self) -> &'static str {
9284            match self {
9285                Self::Double => "TYPE_DOUBLE",
9286                Self::Float => "TYPE_FLOAT",
9287                Self::Int64 => "TYPE_INT64",
9288                Self::Uint64 => "TYPE_UINT64",
9289                Self::Int32 => "TYPE_INT32",
9290                Self::Fixed64 => "TYPE_FIXED64",
9291                Self::Fixed32 => "TYPE_FIXED32",
9292                Self::Bool => "TYPE_BOOL",
9293                Self::String => "TYPE_STRING",
9294                Self::Group => "TYPE_GROUP",
9295                Self::Message => "TYPE_MESSAGE",
9296                Self::Bytes => "TYPE_BYTES",
9297                Self::Uint32 => "TYPE_UINT32",
9298                Self::Enum => "TYPE_ENUM",
9299                Self::Sfixed32 => "TYPE_SFIXED32",
9300                Self::Sfixed64 => "TYPE_SFIXED64",
9301                Self::Sint32 => "TYPE_SINT32",
9302                Self::Sint64 => "TYPE_SINT64",
9303            }
9304        }
9305        /// Creates an enum from field names used in the ProtoBuf definition.
9306        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9307            match value {
9308                "TYPE_DOUBLE" => Some(Self::Double),
9309                "TYPE_FLOAT" => Some(Self::Float),
9310                "TYPE_INT64" => Some(Self::Int64),
9311                "TYPE_UINT64" => Some(Self::Uint64),
9312                "TYPE_INT32" => Some(Self::Int32),
9313                "TYPE_FIXED64" => Some(Self::Fixed64),
9314                "TYPE_FIXED32" => Some(Self::Fixed32),
9315                "TYPE_BOOL" => Some(Self::Bool),
9316                "TYPE_STRING" => Some(Self::String),
9317                "TYPE_GROUP" => Some(Self::Group),
9318                "TYPE_MESSAGE" => Some(Self::Message),
9319                "TYPE_BYTES" => Some(Self::Bytes),
9320                "TYPE_UINT32" => Some(Self::Uint32),
9321                "TYPE_ENUM" => Some(Self::Enum),
9322                "TYPE_SFIXED32" => Some(Self::Sfixed32),
9323                "TYPE_SFIXED64" => Some(Self::Sfixed64),
9324                "TYPE_SINT32" => Some(Self::Sint32),
9325                "TYPE_SINT64" => Some(Self::Sint64),
9326                _ => None,
9327            }
9328        }
9329    }
9330    #[derive(
9331        Clone,
9332        Copy,
9333        Debug,
9334        PartialEq,
9335        Eq,
9336        Hash,
9337        PartialOrd,
9338        Ord,
9339        ::prost::Enumeration
9340    )]
9341    #[repr(i32)]
9342    pub enum Label {
9343        /// 0 is reserved for errors
9344        Optional = 1,
9345        Required = 2,
9346        Repeated = 3,
9347    }
9348    impl Label {
9349        /// String value of the enum field names used in the ProtoBuf definition.
9350        ///
9351        /// The values are not transformed in any way and thus are considered stable
9352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9353        pub fn as_str_name(&self) -> &'static str {
9354            match self {
9355                Self::Optional => "LABEL_OPTIONAL",
9356                Self::Required => "LABEL_REQUIRED",
9357                Self::Repeated => "LABEL_REPEATED",
9358            }
9359        }
9360        /// Creates an enum from field names used in the ProtoBuf definition.
9361        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9362            match value {
9363                "LABEL_OPTIONAL" => Some(Self::Optional),
9364                "LABEL_REQUIRED" => Some(Self::Required),
9365                "LABEL_REPEATED" => Some(Self::Repeated),
9366                _ => None,
9367            }
9368        }
9369    }
9370}
9371/// Describes a oneof.
9372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9373pub struct OneofDescriptorProto {
9374    #[prost(string, optional, tag = "1")]
9375    pub name: ::core::option::Option<::prost::alloc::string::String>,
9376    #[prost(message, optional, tag = "2")]
9377    pub options: ::core::option::Option<OneofOptions>,
9378}
9379/// Describes an enum type.
9380#[derive(Clone, PartialEq, ::prost::Message)]
9381pub struct EnumDescriptorProto {
9382    #[prost(string, optional, tag = "1")]
9383    pub name: ::core::option::Option<::prost::alloc::string::String>,
9384    #[prost(message, repeated, tag = "2")]
9385    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
9386    /// Reserved enum value names, which may not be reused. A given name may only
9387    /// be reserved once.
9388    #[prost(string, repeated, tag = "5")]
9389    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9390}
9391/// Describes a value within an enum.
9392#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9393pub struct EnumValueDescriptorProto {
9394    #[prost(string, optional, tag = "1")]
9395    pub name: ::core::option::Option<::prost::alloc::string::String>,
9396    #[prost(int32, optional, tag = "2")]
9397    pub number: ::core::option::Option<i32>,
9398}
9399#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9400pub struct OneofOptions {}
9401/// This message contains descriptors used to parse extension fields of
9402/// TrackEvent.
9403///
9404/// See docs/instrumentation/extensions.md for more details.
9405#[derive(Clone, PartialEq, ::prost::Message)]
9406pub struct ExtensionDescriptor {
9407    /// Optional, for debugging only. The file name or path of the descriptor
9408    /// source. Can be omitted without affecting functionality.
9409    #[prost(string, optional, tag = "3")]
9410    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9411    #[prost(oneof = "extension_descriptor::Descriptor", tags = "1, 2")]
9412    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
9413}
9414/// Nested message and enum types in `ExtensionDescriptor`.
9415pub mod extension_descriptor {
9416    #[derive(Clone, PartialEq, ::prost::Oneof)]
9417    pub enum Descriptor {
9418        #[prost(message, tag = "1")]
9419        ExtensionSet(super::FileDescriptorSet),
9420        /// Same as extension_set, but gzip-compressed. This is used by the tracing
9421        /// service on Android to emit pre-compressed descriptor files from
9422        /// /etc/tracing_descriptors.gz without decompressing them first.
9423        #[prost(bytes, tag = "2")]
9424        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
9425    }
9426}
9427/// Represents the mapping between inode numbers in a block device and their path
9428/// on the filesystem
9429#[derive(Clone, PartialEq, ::prost::Message)]
9430pub struct InodeFileMap {
9431    #[prost(uint64, optional, tag = "1")]
9432    pub block_device_id: ::core::option::Option<u64>,
9433    /// The mount points of the block device, e.g. \["system"\].
9434    #[prost(string, repeated, tag = "2")]
9435    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9436    /// The list of all the entries from the block device
9437    #[prost(message, repeated, tag = "3")]
9438    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
9439}
9440/// Nested message and enum types in `InodeFileMap`.
9441pub mod inode_file_map {
9442    /// Representation of Entry
9443    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9444    pub struct Entry {
9445        #[prost(uint64, optional, tag = "1")]
9446        pub inode_number: ::core::option::Option<u64>,
9447        /// The path to the file, e.g. "etc/file.xml"
9448        /// List of strings for multiple hardlinks
9449        #[prost(string, repeated, tag = "2")]
9450        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
9451        #[prost(enumeration = "entry::Type", optional, tag = "3")]
9452        pub r#type: ::core::option::Option<i32>,
9453    }
9454    /// Nested message and enum types in `Entry`.
9455    pub mod entry {
9456        /// The file type
9457        #[derive(
9458            Clone,
9459            Copy,
9460            Debug,
9461            PartialEq,
9462            Eq,
9463            Hash,
9464            PartialOrd,
9465            Ord,
9466            ::prost::Enumeration
9467        )]
9468        #[repr(i32)]
9469        pub enum Type {
9470            Unknown = 0,
9471            File = 1,
9472            Directory = 2,
9473        }
9474        impl Type {
9475            /// String value of the enum field names used in the ProtoBuf definition.
9476            ///
9477            /// The values are not transformed in any way and thus are considered stable
9478            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9479            pub fn as_str_name(&self) -> &'static str {
9480                match self {
9481                    Self::Unknown => "UNKNOWN",
9482                    Self::File => "FILE",
9483                    Self::Directory => "DIRECTORY",
9484                }
9485            }
9486            /// Creates an enum from field names used in the ProtoBuf definition.
9487            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9488                match value {
9489                    "UNKNOWN" => Some(Self::Unknown),
9490                    "FILE" => Some(Self::File),
9491                    "DIRECTORY" => Some(Self::Directory),
9492                    _ => None,
9493                }
9494            }
9495        }
9496    }
9497}
9498#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9499pub struct AndroidFsDatareadEndFtraceEvent {
9500    #[prost(int32, optional, tag = "1")]
9501    pub bytes: ::core::option::Option<i32>,
9502    #[prost(uint64, optional, tag = "2")]
9503    pub ino: ::core::option::Option<u64>,
9504    #[prost(int64, optional, tag = "3")]
9505    pub offset: ::core::option::Option<i64>,
9506}
9507#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9508pub struct AndroidFsDatareadStartFtraceEvent {
9509    #[prost(int32, optional, tag = "1")]
9510    pub bytes: ::core::option::Option<i32>,
9511    #[prost(string, optional, tag = "2")]
9512    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9513    #[prost(int64, optional, tag = "3")]
9514    pub i_size: ::core::option::Option<i64>,
9515    #[prost(uint64, optional, tag = "4")]
9516    pub ino: ::core::option::Option<u64>,
9517    #[prost(int64, optional, tag = "5")]
9518    pub offset: ::core::option::Option<i64>,
9519    #[prost(string, optional, tag = "6")]
9520    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9521    #[prost(int32, optional, tag = "7")]
9522    pub pid: ::core::option::Option<i32>,
9523}
9524#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9525pub struct AndroidFsDatawriteEndFtraceEvent {
9526    #[prost(int32, optional, tag = "1")]
9527    pub bytes: ::core::option::Option<i32>,
9528    #[prost(uint64, optional, tag = "2")]
9529    pub ino: ::core::option::Option<u64>,
9530    #[prost(int64, optional, tag = "3")]
9531    pub offset: ::core::option::Option<i64>,
9532}
9533#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9534pub struct AndroidFsDatawriteStartFtraceEvent {
9535    #[prost(int32, optional, tag = "1")]
9536    pub bytes: ::core::option::Option<i32>,
9537    #[prost(string, optional, tag = "2")]
9538    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9539    #[prost(int64, optional, tag = "3")]
9540    pub i_size: ::core::option::Option<i64>,
9541    #[prost(uint64, optional, tag = "4")]
9542    pub ino: ::core::option::Option<u64>,
9543    #[prost(int64, optional, tag = "5")]
9544    pub offset: ::core::option::Option<i64>,
9545    #[prost(string, optional, tag = "6")]
9546    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9547    #[prost(int32, optional, tag = "7")]
9548    pub pid: ::core::option::Option<i32>,
9549}
9550#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9551pub struct AndroidFsFsyncEndFtraceEvent {
9552    #[prost(int32, optional, tag = "1")]
9553    pub bytes: ::core::option::Option<i32>,
9554    #[prost(uint64, optional, tag = "2")]
9555    pub ino: ::core::option::Option<u64>,
9556    #[prost(int64, optional, tag = "3")]
9557    pub offset: ::core::option::Option<i64>,
9558}
9559#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9560pub struct AndroidFsFsyncStartFtraceEvent {
9561    #[prost(string, optional, tag = "1")]
9562    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
9563    #[prost(int64, optional, tag = "2")]
9564    pub i_size: ::core::option::Option<i64>,
9565    #[prost(uint64, optional, tag = "3")]
9566    pub ino: ::core::option::Option<u64>,
9567    #[prost(string, optional, tag = "4")]
9568    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
9569    #[prost(int32, optional, tag = "5")]
9570    pub pid: ::core::option::Option<i32>,
9571}
9572#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9573pub struct BclIrqTriggerFtraceEvent {
9574    #[prost(int32, optional, tag = "1")]
9575    pub id: ::core::option::Option<i32>,
9576    #[prost(int32, optional, tag = "2")]
9577    pub throttle: ::core::option::Option<i32>,
9578    #[prost(int32, optional, tag = "3")]
9579    pub cpu0_limit: ::core::option::Option<i32>,
9580    #[prost(int32, optional, tag = "4")]
9581    pub cpu1_limit: ::core::option::Option<i32>,
9582    #[prost(int32, optional, tag = "5")]
9583    pub cpu2_limit: ::core::option::Option<i32>,
9584    #[prost(int32, optional, tag = "6")]
9585    pub tpu_limit: ::core::option::Option<i32>,
9586    #[prost(int32, optional, tag = "7")]
9587    pub gpu_limit: ::core::option::Option<i32>,
9588    #[prost(int32, optional, tag = "8")]
9589    pub voltage: ::core::option::Option<i32>,
9590    #[prost(int32, optional, tag = "9")]
9591    pub capacity: ::core::option::Option<i32>,
9592}
9593#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9594pub struct BinderTransactionFtraceEvent {
9595    #[prost(int32, optional, tag = "1")]
9596    pub debug_id: ::core::option::Option<i32>,
9597    #[prost(int32, optional, tag = "2")]
9598    pub target_node: ::core::option::Option<i32>,
9599    #[prost(int32, optional, tag = "3")]
9600    pub to_proc: ::core::option::Option<i32>,
9601    #[prost(int32, optional, tag = "4")]
9602    pub to_thread: ::core::option::Option<i32>,
9603    #[prost(int32, optional, tag = "5")]
9604    pub reply: ::core::option::Option<i32>,
9605    #[prost(uint32, optional, tag = "6")]
9606    pub code: ::core::option::Option<u32>,
9607    #[prost(uint32, optional, tag = "7")]
9608    pub flags: ::core::option::Option<u32>,
9609}
9610#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9611pub struct BinderTransactionReceivedFtraceEvent {
9612    #[prost(int32, optional, tag = "1")]
9613    pub debug_id: ::core::option::Option<i32>,
9614}
9615#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9616pub struct BinderSetPriorityFtraceEvent {
9617    #[prost(int32, optional, tag = "1")]
9618    pub proc: ::core::option::Option<i32>,
9619    #[prost(int32, optional, tag = "2")]
9620    pub thread: ::core::option::Option<i32>,
9621    #[prost(uint32, optional, tag = "3")]
9622    pub old_prio: ::core::option::Option<u32>,
9623    #[prost(uint32, optional, tag = "4")]
9624    pub new_prio: ::core::option::Option<u32>,
9625    #[prost(uint32, optional, tag = "5")]
9626    pub desired_prio: ::core::option::Option<u32>,
9627}
9628#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9629pub struct BinderLockFtraceEvent {
9630    #[prost(string, optional, tag = "1")]
9631    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9632}
9633#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9634pub struct BinderLockedFtraceEvent {
9635    #[prost(string, optional, tag = "1")]
9636    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9637}
9638#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9639pub struct BinderUnlockFtraceEvent {
9640    #[prost(string, optional, tag = "1")]
9641    pub tag: ::core::option::Option<::prost::alloc::string::String>,
9642}
9643#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9644pub struct BinderTransactionAllocBufFtraceEvent {
9645    #[prost(uint64, optional, tag = "1")]
9646    pub data_size: ::core::option::Option<u64>,
9647    #[prost(int32, optional, tag = "2")]
9648    pub debug_id: ::core::option::Option<i32>,
9649    #[prost(uint64, optional, tag = "3")]
9650    pub offsets_size: ::core::option::Option<u64>,
9651    #[prost(uint64, optional, tag = "4")]
9652    pub extra_buffers_size: ::core::option::Option<u64>,
9653}
9654#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9655pub struct BinderCommandFtraceEvent {
9656    #[prost(uint32, optional, tag = "1")]
9657    pub cmd: ::core::option::Option<u32>,
9658}
9659#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9660pub struct BinderReturnFtraceEvent {
9661    #[prost(uint32, optional, tag = "1")]
9662    pub cmd: ::core::option::Option<u32>,
9663}
9664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9665pub struct BlockRqIssueFtraceEvent {
9666    #[prost(uint64, optional, tag = "1")]
9667    pub dev: ::core::option::Option<u64>,
9668    #[prost(uint64, optional, tag = "2")]
9669    pub sector: ::core::option::Option<u64>,
9670    #[prost(uint32, optional, tag = "3")]
9671    pub nr_sector: ::core::option::Option<u32>,
9672    #[prost(uint32, optional, tag = "4")]
9673    pub bytes: ::core::option::Option<u32>,
9674    #[prost(string, optional, tag = "5")]
9675    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9676    #[prost(string, optional, tag = "6")]
9677    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9678    #[prost(string, optional, tag = "7")]
9679    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9680}
9681#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9682pub struct BlockBioBackmergeFtraceEvent {
9683    #[prost(uint64, optional, tag = "1")]
9684    pub dev: ::core::option::Option<u64>,
9685    #[prost(uint64, optional, tag = "2")]
9686    pub sector: ::core::option::Option<u64>,
9687    #[prost(uint32, optional, tag = "3")]
9688    pub nr_sector: ::core::option::Option<u32>,
9689    #[prost(string, optional, tag = "4")]
9690    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9691    #[prost(string, optional, tag = "5")]
9692    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9693}
9694#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9695pub struct BlockBioBounceFtraceEvent {
9696    #[prost(uint64, optional, tag = "1")]
9697    pub dev: ::core::option::Option<u64>,
9698    #[prost(uint64, optional, tag = "2")]
9699    pub sector: ::core::option::Option<u64>,
9700    #[prost(uint32, optional, tag = "3")]
9701    pub nr_sector: ::core::option::Option<u32>,
9702    #[prost(string, optional, tag = "4")]
9703    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9704    #[prost(string, optional, tag = "5")]
9705    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9706}
9707#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9708pub struct BlockBioCompleteFtraceEvent {
9709    #[prost(uint64, optional, tag = "1")]
9710    pub dev: ::core::option::Option<u64>,
9711    #[prost(uint64, optional, tag = "2")]
9712    pub sector: ::core::option::Option<u64>,
9713    #[prost(uint32, optional, tag = "3")]
9714    pub nr_sector: ::core::option::Option<u32>,
9715    #[prost(int32, optional, tag = "4")]
9716    pub error: ::core::option::Option<i32>,
9717    #[prost(string, optional, tag = "5")]
9718    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9719}
9720#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9721pub struct BlockBioFrontmergeFtraceEvent {
9722    #[prost(uint64, optional, tag = "1")]
9723    pub dev: ::core::option::Option<u64>,
9724    #[prost(uint64, optional, tag = "2")]
9725    pub sector: ::core::option::Option<u64>,
9726    #[prost(uint32, optional, tag = "3")]
9727    pub nr_sector: ::core::option::Option<u32>,
9728    #[prost(string, optional, tag = "4")]
9729    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9730    #[prost(string, optional, tag = "5")]
9731    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9732}
9733#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9734pub struct BlockBioQueueFtraceEvent {
9735    #[prost(uint64, optional, tag = "1")]
9736    pub dev: ::core::option::Option<u64>,
9737    #[prost(uint64, optional, tag = "2")]
9738    pub sector: ::core::option::Option<u64>,
9739    #[prost(uint32, optional, tag = "3")]
9740    pub nr_sector: ::core::option::Option<u32>,
9741    #[prost(string, optional, tag = "4")]
9742    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9743    #[prost(string, optional, tag = "5")]
9744    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9745}
9746#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9747pub struct BlockBioRemapFtraceEvent {
9748    #[prost(uint64, optional, tag = "1")]
9749    pub dev: ::core::option::Option<u64>,
9750    #[prost(uint64, optional, tag = "2")]
9751    pub sector: ::core::option::Option<u64>,
9752    #[prost(uint32, optional, tag = "3")]
9753    pub nr_sector: ::core::option::Option<u32>,
9754    #[prost(uint64, optional, tag = "4")]
9755    pub old_dev: ::core::option::Option<u64>,
9756    #[prost(uint64, optional, tag = "5")]
9757    pub old_sector: ::core::option::Option<u64>,
9758    #[prost(string, optional, tag = "6")]
9759    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9760}
9761#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9762pub struct BlockDirtyBufferFtraceEvent {
9763    #[prost(uint64, optional, tag = "1")]
9764    pub dev: ::core::option::Option<u64>,
9765    #[prost(uint64, optional, tag = "2")]
9766    pub sector: ::core::option::Option<u64>,
9767    #[prost(uint64, optional, tag = "3")]
9768    pub size: ::core::option::Option<u64>,
9769}
9770#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9771pub struct BlockGetrqFtraceEvent {
9772    #[prost(uint64, optional, tag = "1")]
9773    pub dev: ::core::option::Option<u64>,
9774    #[prost(uint64, optional, tag = "2")]
9775    pub sector: ::core::option::Option<u64>,
9776    #[prost(uint32, optional, tag = "3")]
9777    pub nr_sector: ::core::option::Option<u32>,
9778    #[prost(string, optional, tag = "4")]
9779    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9780    #[prost(string, optional, tag = "5")]
9781    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9782}
9783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9784pub struct BlockPlugFtraceEvent {
9785    #[prost(string, optional, tag = "1")]
9786    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9787}
9788#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9789pub struct BlockRqAbortFtraceEvent {
9790    #[prost(uint64, optional, tag = "1")]
9791    pub dev: ::core::option::Option<u64>,
9792    #[prost(uint64, optional, tag = "2")]
9793    pub sector: ::core::option::Option<u64>,
9794    #[prost(uint32, optional, tag = "3")]
9795    pub nr_sector: ::core::option::Option<u32>,
9796    #[prost(int32, optional, tag = "4")]
9797    pub errors: ::core::option::Option<i32>,
9798    #[prost(string, optional, tag = "5")]
9799    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9800    #[prost(string, optional, tag = "6")]
9801    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9802}
9803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9804pub struct BlockRqCompleteFtraceEvent {
9805    #[prost(uint64, optional, tag = "1")]
9806    pub dev: ::core::option::Option<u64>,
9807    #[prost(uint64, optional, tag = "2")]
9808    pub sector: ::core::option::Option<u64>,
9809    #[prost(uint32, optional, tag = "3")]
9810    pub nr_sector: ::core::option::Option<u32>,
9811    #[prost(int32, optional, tag = "4")]
9812    pub errors: ::core::option::Option<i32>,
9813    #[prost(string, optional, tag = "5")]
9814    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9815    #[prost(string, optional, tag = "6")]
9816    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9817    #[prost(int32, optional, tag = "7")]
9818    pub error: ::core::option::Option<i32>,
9819}
9820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9821pub struct BlockRqInsertFtraceEvent {
9822    #[prost(uint64, optional, tag = "1")]
9823    pub dev: ::core::option::Option<u64>,
9824    #[prost(uint64, optional, tag = "2")]
9825    pub sector: ::core::option::Option<u64>,
9826    #[prost(uint32, optional, tag = "3")]
9827    pub nr_sector: ::core::option::Option<u32>,
9828    #[prost(uint32, optional, tag = "4")]
9829    pub bytes: ::core::option::Option<u32>,
9830    #[prost(string, optional, tag = "5")]
9831    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9832    #[prost(string, optional, tag = "6")]
9833    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9834    #[prost(string, optional, tag = "7")]
9835    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9836}
9837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9838pub struct BlockRqRemapFtraceEvent {
9839    #[prost(uint64, optional, tag = "1")]
9840    pub dev: ::core::option::Option<u64>,
9841    #[prost(uint64, optional, tag = "2")]
9842    pub sector: ::core::option::Option<u64>,
9843    #[prost(uint32, optional, tag = "3")]
9844    pub nr_sector: ::core::option::Option<u32>,
9845    #[prost(uint64, optional, tag = "4")]
9846    pub old_dev: ::core::option::Option<u64>,
9847    #[prost(uint64, optional, tag = "5")]
9848    pub old_sector: ::core::option::Option<u64>,
9849    #[prost(uint32, optional, tag = "6")]
9850    pub nr_bios: ::core::option::Option<u32>,
9851    #[prost(string, optional, tag = "7")]
9852    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9853}
9854#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9855pub struct BlockRqRequeueFtraceEvent {
9856    #[prost(uint64, optional, tag = "1")]
9857    pub dev: ::core::option::Option<u64>,
9858    #[prost(uint64, optional, tag = "2")]
9859    pub sector: ::core::option::Option<u64>,
9860    #[prost(uint32, optional, tag = "3")]
9861    pub nr_sector: ::core::option::Option<u32>,
9862    #[prost(int32, optional, tag = "4")]
9863    pub errors: ::core::option::Option<i32>,
9864    #[prost(string, optional, tag = "5")]
9865    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9866    #[prost(string, optional, tag = "6")]
9867    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9868}
9869#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9870pub struct BlockSleeprqFtraceEvent {
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 BlockSplitFtraceEvent {
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(uint64, optional, tag = "3")]
9889    pub new_sector: ::core::option::Option<u64>,
9890    #[prost(string, optional, tag = "4")]
9891    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9892    #[prost(string, optional, tag = "5")]
9893    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9894}
9895#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9896pub struct BlockTouchBufferFtraceEvent {
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(uint64, optional, tag = "3")]
9902    pub size: ::core::option::Option<u64>,
9903}
9904#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9905pub struct BlockUnplugFtraceEvent {
9906    #[prost(int32, optional, tag = "1")]
9907    pub nr_rq: ::core::option::Option<i32>,
9908    #[prost(string, optional, tag = "2")]
9909    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9910}
9911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9912pub struct BlockIoStartFtraceEvent {
9913    #[prost(uint64, optional, tag = "1")]
9914    pub dev: ::core::option::Option<u64>,
9915    #[prost(uint64, optional, tag = "2")]
9916    pub sector: ::core::option::Option<u64>,
9917    #[prost(uint32, optional, tag = "3")]
9918    pub nr_sector: ::core::option::Option<u32>,
9919    #[prost(uint32, optional, tag = "4")]
9920    pub bytes: ::core::option::Option<u32>,
9921    #[prost(uint32, optional, tag = "5")]
9922    pub ioprio: ::core::option::Option<u32>,
9923    #[prost(string, optional, tag = "6")]
9924    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9925    #[prost(string, optional, tag = "7")]
9926    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9927    #[prost(string, optional, tag = "8")]
9928    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9929}
9930#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9931pub struct BlockIoDoneFtraceEvent {
9932    #[prost(uint64, optional, tag = "1")]
9933    pub dev: ::core::option::Option<u64>,
9934    #[prost(uint64, optional, tag = "2")]
9935    pub sector: ::core::option::Option<u64>,
9936    #[prost(uint32, optional, tag = "3")]
9937    pub nr_sector: ::core::option::Option<u32>,
9938    #[prost(uint32, optional, tag = "4")]
9939    pub bytes: ::core::option::Option<u32>,
9940    #[prost(uint32, optional, tag = "5")]
9941    pub ioprio: ::core::option::Option<u32>,
9942    #[prost(string, optional, tag = "6")]
9943    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
9944    #[prost(string, optional, tag = "7")]
9945    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9946    #[prost(string, optional, tag = "8")]
9947    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
9948}
9949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9950pub struct CgroupAttachTaskFtraceEvent {
9951    #[prost(int32, optional, tag = "1")]
9952    pub dst_root: ::core::option::Option<i32>,
9953    #[prost(int32, optional, tag = "2")]
9954    pub dst_id: ::core::option::Option<i32>,
9955    #[prost(int32, optional, tag = "3")]
9956    pub pid: ::core::option::Option<i32>,
9957    #[prost(string, optional, tag = "4")]
9958    pub comm: ::core::option::Option<::prost::alloc::string::String>,
9959    #[prost(string, optional, tag = "5")]
9960    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9961    #[prost(int32, optional, tag = "6")]
9962    pub dst_level: ::core::option::Option<i32>,
9963    #[prost(string, optional, tag = "7")]
9964    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
9965}
9966#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9967pub struct CgroupMkdirFtraceEvent {
9968    #[prost(int32, optional, tag = "1")]
9969    pub root: ::core::option::Option<i32>,
9970    #[prost(int32, optional, tag = "2")]
9971    pub id: ::core::option::Option<i32>,
9972    #[prost(string, optional, tag = "3")]
9973    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9974    #[prost(int32, optional, tag = "4")]
9975    pub level: ::core::option::Option<i32>,
9976    #[prost(string, optional, tag = "5")]
9977    pub path: ::core::option::Option<::prost::alloc::string::String>,
9978}
9979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9980pub struct CgroupRemountFtraceEvent {
9981    #[prost(int32, optional, tag = "1")]
9982    pub root: ::core::option::Option<i32>,
9983    #[prost(uint32, optional, tag = "2")]
9984    pub ss_mask: ::core::option::Option<u32>,
9985    #[prost(string, optional, tag = "3")]
9986    pub name: ::core::option::Option<::prost::alloc::string::String>,
9987}
9988#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9989pub struct CgroupRmdirFtraceEvent {
9990    #[prost(int32, optional, tag = "1")]
9991    pub root: ::core::option::Option<i32>,
9992    #[prost(int32, optional, tag = "2")]
9993    pub id: ::core::option::Option<i32>,
9994    #[prost(string, optional, tag = "3")]
9995    pub cname: ::core::option::Option<::prost::alloc::string::String>,
9996    #[prost(int32, optional, tag = "4")]
9997    pub level: ::core::option::Option<i32>,
9998    #[prost(string, optional, tag = "5")]
9999    pub path: ::core::option::Option<::prost::alloc::string::String>,
10000}
10001#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10002pub struct CgroupTransferTasksFtraceEvent {
10003    #[prost(int32, optional, tag = "1")]
10004    pub dst_root: ::core::option::Option<i32>,
10005    #[prost(int32, optional, tag = "2")]
10006    pub dst_id: ::core::option::Option<i32>,
10007    #[prost(int32, optional, tag = "3")]
10008    pub pid: ::core::option::Option<i32>,
10009    #[prost(string, optional, tag = "4")]
10010    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10011    #[prost(string, optional, tag = "5")]
10012    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10013    #[prost(int32, optional, tag = "6")]
10014    pub dst_level: ::core::option::Option<i32>,
10015    #[prost(string, optional, tag = "7")]
10016    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10017}
10018#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10019pub struct CgroupDestroyRootFtraceEvent {
10020    #[prost(int32, optional, tag = "1")]
10021    pub root: ::core::option::Option<i32>,
10022    #[prost(uint32, optional, tag = "2")]
10023    pub ss_mask: ::core::option::Option<u32>,
10024    #[prost(string, optional, tag = "3")]
10025    pub name: ::core::option::Option<::prost::alloc::string::String>,
10026}
10027#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10028pub struct CgroupReleaseFtraceEvent {
10029    #[prost(int32, optional, tag = "1")]
10030    pub root: ::core::option::Option<i32>,
10031    #[prost(int32, optional, tag = "2")]
10032    pub id: ::core::option::Option<i32>,
10033    #[prost(string, optional, tag = "3")]
10034    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10035    #[prost(int32, optional, tag = "4")]
10036    pub level: ::core::option::Option<i32>,
10037    #[prost(string, optional, tag = "5")]
10038    pub path: ::core::option::Option<::prost::alloc::string::String>,
10039}
10040#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10041pub struct CgroupRenameFtraceEvent {
10042    #[prost(int32, optional, tag = "1")]
10043    pub root: ::core::option::Option<i32>,
10044    #[prost(int32, optional, tag = "2")]
10045    pub id: ::core::option::Option<i32>,
10046    #[prost(string, optional, tag = "3")]
10047    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10048    #[prost(int32, optional, tag = "4")]
10049    pub level: ::core::option::Option<i32>,
10050    #[prost(string, optional, tag = "5")]
10051    pub path: ::core::option::Option<::prost::alloc::string::String>,
10052}
10053#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10054pub struct CgroupSetupRootFtraceEvent {
10055    #[prost(int32, optional, tag = "1")]
10056    pub root: ::core::option::Option<i32>,
10057    #[prost(uint32, optional, tag = "2")]
10058    pub ss_mask: ::core::option::Option<u32>,
10059    #[prost(string, optional, tag = "3")]
10060    pub name: ::core::option::Option<::prost::alloc::string::String>,
10061}
10062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10063pub struct ClkEnableFtraceEvent {
10064    #[prost(string, optional, tag = "1")]
10065    pub name: ::core::option::Option<::prost::alloc::string::String>,
10066}
10067#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10068pub struct ClkDisableFtraceEvent {
10069    #[prost(string, optional, tag = "1")]
10070    pub name: ::core::option::Option<::prost::alloc::string::String>,
10071}
10072#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10073pub struct ClkSetRateFtraceEvent {
10074    #[prost(string, optional, tag = "1")]
10075    pub name: ::core::option::Option<::prost::alloc::string::String>,
10076    #[prost(uint64, optional, tag = "2")]
10077    pub rate: ::core::option::Option<u64>,
10078}
10079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10080pub struct CmaAllocStartFtraceEvent {
10081    #[prost(uint32, optional, tag = "1")]
10082    pub align: ::core::option::Option<u32>,
10083    #[prost(uint32, optional, tag = "2")]
10084    pub count: ::core::option::Option<u32>,
10085    #[prost(string, optional, tag = "3")]
10086    pub name: ::core::option::Option<::prost::alloc::string::String>,
10087}
10088#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10089pub struct CmaAllocInfoFtraceEvent {
10090    #[prost(uint32, optional, tag = "1")]
10091    pub align: ::core::option::Option<u32>,
10092    #[prost(uint32, optional, tag = "2")]
10093    pub count: ::core::option::Option<u32>,
10094    #[prost(uint32, optional, tag = "3")]
10095    pub err_iso: ::core::option::Option<u32>,
10096    #[prost(uint32, optional, tag = "4")]
10097    pub err_mig: ::core::option::Option<u32>,
10098    #[prost(uint32, optional, tag = "5")]
10099    pub err_test: ::core::option::Option<u32>,
10100    #[prost(string, optional, tag = "6")]
10101    pub name: ::core::option::Option<::prost::alloc::string::String>,
10102    #[prost(uint64, optional, tag = "7")]
10103    pub nr_mapped: ::core::option::Option<u64>,
10104    #[prost(uint64, optional, tag = "8")]
10105    pub nr_migrated: ::core::option::Option<u64>,
10106    #[prost(uint64, optional, tag = "9")]
10107    pub nr_reclaimed: ::core::option::Option<u64>,
10108    #[prost(uint64, optional, tag = "10")]
10109    pub pfn: ::core::option::Option<u64>,
10110}
10111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10112pub struct CmaAllocFinishFtraceEvent {
10113    #[prost(string, optional, tag = "1")]
10114    pub name: ::core::option::Option<::prost::alloc::string::String>,
10115    #[prost(uint64, optional, tag = "2")]
10116    pub pfn: ::core::option::Option<u64>,
10117    #[prost(uint64, optional, tag = "3")]
10118    pub page: ::core::option::Option<u64>,
10119    #[prost(uint64, optional, tag = "4")]
10120    pub count: ::core::option::Option<u64>,
10121    #[prost(uint32, optional, tag = "5")]
10122    pub align: ::core::option::Option<u32>,
10123    #[prost(int32, optional, tag = "6")]
10124    pub errorno: ::core::option::Option<i32>,
10125}
10126#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10127pub struct MmCompactionBeginFtraceEvent {
10128    #[prost(uint64, optional, tag = "1")]
10129    pub zone_start: ::core::option::Option<u64>,
10130    #[prost(uint64, optional, tag = "2")]
10131    pub migrate_pfn: ::core::option::Option<u64>,
10132    #[prost(uint64, optional, tag = "3")]
10133    pub free_pfn: ::core::option::Option<u64>,
10134    #[prost(uint64, optional, tag = "4")]
10135    pub zone_end: ::core::option::Option<u64>,
10136    #[prost(uint32, optional, tag = "5")]
10137    pub sync: ::core::option::Option<u32>,
10138}
10139#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10140pub struct MmCompactionDeferCompactionFtraceEvent {
10141    #[prost(int32, optional, tag = "1")]
10142    pub nid: ::core::option::Option<i32>,
10143    #[prost(uint32, optional, tag = "2")]
10144    pub idx: ::core::option::Option<u32>,
10145    #[prost(int32, optional, tag = "3")]
10146    pub order: ::core::option::Option<i32>,
10147    #[prost(uint32, optional, tag = "4")]
10148    pub considered: ::core::option::Option<u32>,
10149    #[prost(uint32, optional, tag = "5")]
10150    pub defer_shift: ::core::option::Option<u32>,
10151    #[prost(int32, optional, tag = "6")]
10152    pub order_failed: ::core::option::Option<i32>,
10153}
10154#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10155pub struct MmCompactionDeferredFtraceEvent {
10156    #[prost(int32, optional, tag = "1")]
10157    pub nid: ::core::option::Option<i32>,
10158    #[prost(uint32, optional, tag = "2")]
10159    pub idx: ::core::option::Option<u32>,
10160    #[prost(int32, optional, tag = "3")]
10161    pub order: ::core::option::Option<i32>,
10162    #[prost(uint32, optional, tag = "4")]
10163    pub considered: ::core::option::Option<u32>,
10164    #[prost(uint32, optional, tag = "5")]
10165    pub defer_shift: ::core::option::Option<u32>,
10166    #[prost(int32, optional, tag = "6")]
10167    pub order_failed: ::core::option::Option<i32>,
10168}
10169#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10170pub struct MmCompactionDeferResetFtraceEvent {
10171    #[prost(int32, optional, tag = "1")]
10172    pub nid: ::core::option::Option<i32>,
10173    #[prost(uint32, optional, tag = "2")]
10174    pub idx: ::core::option::Option<u32>,
10175    #[prost(int32, optional, tag = "3")]
10176    pub order: ::core::option::Option<i32>,
10177    #[prost(uint32, optional, tag = "4")]
10178    pub considered: ::core::option::Option<u32>,
10179    #[prost(uint32, optional, tag = "5")]
10180    pub defer_shift: ::core::option::Option<u32>,
10181    #[prost(int32, optional, tag = "6")]
10182    pub order_failed: ::core::option::Option<i32>,
10183}
10184#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10185pub struct MmCompactionEndFtraceEvent {
10186    #[prost(uint64, optional, tag = "1")]
10187    pub zone_start: ::core::option::Option<u64>,
10188    #[prost(uint64, optional, tag = "2")]
10189    pub migrate_pfn: ::core::option::Option<u64>,
10190    #[prost(uint64, optional, tag = "3")]
10191    pub free_pfn: ::core::option::Option<u64>,
10192    #[prost(uint64, optional, tag = "4")]
10193    pub zone_end: ::core::option::Option<u64>,
10194    #[prost(uint32, optional, tag = "5")]
10195    pub sync: ::core::option::Option<u32>,
10196    #[prost(int32, optional, tag = "6")]
10197    pub status: ::core::option::Option<i32>,
10198}
10199#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10200pub struct MmCompactionFinishedFtraceEvent {
10201    #[prost(int32, optional, tag = "1")]
10202    pub nid: ::core::option::Option<i32>,
10203    #[prost(uint32, optional, tag = "2")]
10204    pub idx: ::core::option::Option<u32>,
10205    #[prost(int32, optional, tag = "3")]
10206    pub order: ::core::option::Option<i32>,
10207    #[prost(int32, optional, tag = "4")]
10208    pub ret: ::core::option::Option<i32>,
10209}
10210#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10211pub struct MmCompactionIsolateFreepagesFtraceEvent {
10212    #[prost(uint64, optional, tag = "1")]
10213    pub start_pfn: ::core::option::Option<u64>,
10214    #[prost(uint64, optional, tag = "2")]
10215    pub end_pfn: ::core::option::Option<u64>,
10216    #[prost(uint64, optional, tag = "3")]
10217    pub nr_scanned: ::core::option::Option<u64>,
10218    #[prost(uint64, optional, tag = "4")]
10219    pub nr_taken: ::core::option::Option<u64>,
10220}
10221#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10222pub struct MmCompactionIsolateMigratepagesFtraceEvent {
10223    #[prost(uint64, optional, tag = "1")]
10224    pub start_pfn: ::core::option::Option<u64>,
10225    #[prost(uint64, optional, tag = "2")]
10226    pub end_pfn: ::core::option::Option<u64>,
10227    #[prost(uint64, optional, tag = "3")]
10228    pub nr_scanned: ::core::option::Option<u64>,
10229    #[prost(uint64, optional, tag = "4")]
10230    pub nr_taken: ::core::option::Option<u64>,
10231}
10232#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10233pub struct MmCompactionKcompactdSleepFtraceEvent {
10234    #[prost(int32, optional, tag = "1")]
10235    pub nid: ::core::option::Option<i32>,
10236}
10237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10238pub struct MmCompactionKcompactdWakeFtraceEvent {
10239    #[prost(int32, optional, tag = "1")]
10240    pub nid: ::core::option::Option<i32>,
10241    #[prost(int32, optional, tag = "2")]
10242    pub order: ::core::option::Option<i32>,
10243    #[prost(uint32, optional, tag = "3")]
10244    pub classzone_idx: ::core::option::Option<u32>,
10245    #[prost(uint32, optional, tag = "4")]
10246    pub highest_zoneidx: ::core::option::Option<u32>,
10247}
10248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10249pub struct MmCompactionMigratepagesFtraceEvent {
10250    #[prost(uint64, optional, tag = "1")]
10251    pub nr_migrated: ::core::option::Option<u64>,
10252    #[prost(uint64, optional, tag = "2")]
10253    pub nr_failed: ::core::option::Option<u64>,
10254}
10255#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10256pub struct MmCompactionSuitableFtraceEvent {
10257    #[prost(int32, optional, tag = "1")]
10258    pub nid: ::core::option::Option<i32>,
10259    #[prost(uint32, optional, tag = "2")]
10260    pub idx: ::core::option::Option<u32>,
10261    #[prost(int32, optional, tag = "3")]
10262    pub order: ::core::option::Option<i32>,
10263    #[prost(int32, optional, tag = "4")]
10264    pub ret: ::core::option::Option<i32>,
10265}
10266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10267pub struct MmCompactionTryToCompactPagesFtraceEvent {
10268    #[prost(int32, optional, tag = "1")]
10269    pub order: ::core::option::Option<i32>,
10270    #[prost(uint32, optional, tag = "2")]
10271    pub gfp_mask: ::core::option::Option<u32>,
10272    #[prost(uint32, optional, tag = "3")]
10273    pub mode: ::core::option::Option<u32>,
10274    #[prost(int32, optional, tag = "4")]
10275    pub prio: ::core::option::Option<i32>,
10276}
10277#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10278pub struct MmCompactionWakeupKcompactdFtraceEvent {
10279    #[prost(int32, optional, tag = "1")]
10280    pub nid: ::core::option::Option<i32>,
10281    #[prost(int32, optional, tag = "2")]
10282    pub order: ::core::option::Option<i32>,
10283    #[prost(uint32, optional, tag = "3")]
10284    pub classzone_idx: ::core::option::Option<u32>,
10285    #[prost(uint32, optional, tag = "4")]
10286    pub highest_zoneidx: ::core::option::Option<u32>,
10287}
10288#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10289pub struct ParamSetValueCpmFtraceEvent {
10290    #[prost(string, optional, tag = "1")]
10291    pub body: ::core::option::Option<::prost::alloc::string::String>,
10292    #[prost(uint32, optional, tag = "2")]
10293    pub value: ::core::option::Option<u32>,
10294    #[prost(int64, optional, tag = "3")]
10295    pub timestamp: ::core::option::Option<i64>,
10296}
10297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10298pub struct CpuhpExitFtraceEvent {
10299    #[prost(uint32, optional, tag = "1")]
10300    pub cpu: ::core::option::Option<u32>,
10301    #[prost(int32, optional, tag = "2")]
10302    pub idx: ::core::option::Option<i32>,
10303    #[prost(int32, optional, tag = "3")]
10304    pub ret: ::core::option::Option<i32>,
10305    #[prost(int32, optional, tag = "4")]
10306    pub state: ::core::option::Option<i32>,
10307}
10308#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10309pub struct CpuhpMultiEnterFtraceEvent {
10310    #[prost(uint32, optional, tag = "1")]
10311    pub cpu: ::core::option::Option<u32>,
10312    #[prost(uint64, optional, tag = "2")]
10313    pub fun: ::core::option::Option<u64>,
10314    #[prost(int32, optional, tag = "3")]
10315    pub idx: ::core::option::Option<i32>,
10316    #[prost(int32, optional, tag = "4")]
10317    pub target: ::core::option::Option<i32>,
10318}
10319#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10320pub struct CpuhpEnterFtraceEvent {
10321    #[prost(uint32, optional, tag = "1")]
10322    pub cpu: ::core::option::Option<u32>,
10323    #[prost(uint64, optional, tag = "2")]
10324    pub fun: ::core::option::Option<u64>,
10325    #[prost(int32, optional, tag = "3")]
10326    pub idx: ::core::option::Option<i32>,
10327    #[prost(int32, optional, tag = "4")]
10328    pub target: ::core::option::Option<i32>,
10329}
10330#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10331pub struct CpuhpLatencyFtraceEvent {
10332    #[prost(uint32, optional, tag = "1")]
10333    pub cpu: ::core::option::Option<u32>,
10334    #[prost(int32, optional, tag = "2")]
10335    pub ret: ::core::option::Option<i32>,
10336    #[prost(uint32, optional, tag = "3")]
10337    pub state: ::core::option::Option<u32>,
10338    #[prost(uint64, optional, tag = "4")]
10339    pub time: ::core::option::Option<u64>,
10340}
10341#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10342pub struct CpuhpPauseFtraceEvent {
10343    #[prost(uint32, optional, tag = "1")]
10344    pub active_cpus: ::core::option::Option<u32>,
10345    #[prost(uint32, optional, tag = "2")]
10346    pub cpus: ::core::option::Option<u32>,
10347    #[prost(uint32, optional, tag = "3")]
10348    pub pause: ::core::option::Option<u32>,
10349    #[prost(uint32, optional, tag = "4")]
10350    pub time: ::core::option::Option<u32>,
10351}
10352#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10353pub struct CrosEcSensorhubDataFtraceEvent {
10354    #[prost(int64, optional, tag = "1")]
10355    pub current_time: ::core::option::Option<i64>,
10356    #[prost(int64, optional, tag = "2")]
10357    pub current_timestamp: ::core::option::Option<i64>,
10358    #[prost(int64, optional, tag = "3")]
10359    pub delta: ::core::option::Option<i64>,
10360    #[prost(uint32, optional, tag = "4")]
10361    pub ec_fifo_timestamp: ::core::option::Option<u32>,
10362    #[prost(uint32, optional, tag = "5")]
10363    pub ec_sensor_num: ::core::option::Option<u32>,
10364    #[prost(int64, optional, tag = "6")]
10365    pub fifo_timestamp: ::core::option::Option<i64>,
10366}
10367#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10368pub struct DcvshFreqFtraceEvent {
10369    #[prost(uint64, optional, tag = "1")]
10370    pub cpu: ::core::option::Option<u64>,
10371    #[prost(uint64, optional, tag = "2")]
10372    pub freq: ::core::option::Option<u64>,
10373}
10374#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10375pub struct DevfreqFrequencyFtraceEvent {
10376    #[prost(string, optional, tag = "1")]
10377    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
10378    #[prost(uint64, optional, tag = "2")]
10379    pub freq: ::core::option::Option<u64>,
10380    #[prost(uint64, optional, tag = "3")]
10381    pub prev_freq: ::core::option::Option<u64>,
10382    #[prost(uint64, optional, tag = "4")]
10383    pub busy_time: ::core::option::Option<u64>,
10384    #[prost(uint64, optional, tag = "5")]
10385    pub total_time: ::core::option::Option<u64>,
10386}
10387#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10388pub struct DmaFenceInitFtraceEvent {
10389    #[prost(uint32, optional, tag = "1")]
10390    pub context: ::core::option::Option<u32>,
10391    #[prost(string, optional, tag = "2")]
10392    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10393    #[prost(uint32, optional, tag = "3")]
10394    pub seqno: ::core::option::Option<u32>,
10395    #[prost(string, optional, tag = "4")]
10396    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10397}
10398#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10399pub struct DmaFenceEmitFtraceEvent {
10400    #[prost(uint32, optional, tag = "1")]
10401    pub context: ::core::option::Option<u32>,
10402    #[prost(string, optional, tag = "2")]
10403    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10404    #[prost(uint32, optional, tag = "3")]
10405    pub seqno: ::core::option::Option<u32>,
10406    #[prost(string, optional, tag = "4")]
10407    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10408}
10409#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10410pub struct DmaFenceSignaledFtraceEvent {
10411    #[prost(uint32, optional, tag = "1")]
10412    pub context: ::core::option::Option<u32>,
10413    #[prost(string, optional, tag = "2")]
10414    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10415    #[prost(uint32, optional, tag = "3")]
10416    pub seqno: ::core::option::Option<u32>,
10417    #[prost(string, optional, tag = "4")]
10418    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10419}
10420#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10421pub struct DmaFenceWaitStartFtraceEvent {
10422    #[prost(uint32, optional, tag = "1")]
10423    pub context: ::core::option::Option<u32>,
10424    #[prost(string, optional, tag = "2")]
10425    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10426    #[prost(uint32, optional, tag = "3")]
10427    pub seqno: ::core::option::Option<u32>,
10428    #[prost(string, optional, tag = "4")]
10429    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10430}
10431#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10432pub struct DmaFenceWaitEndFtraceEvent {
10433    #[prost(uint32, optional, tag = "1")]
10434    pub context: ::core::option::Option<u32>,
10435    #[prost(string, optional, tag = "2")]
10436    pub driver: ::core::option::Option<::prost::alloc::string::String>,
10437    #[prost(uint32, optional, tag = "3")]
10438    pub seqno: ::core::option::Option<u32>,
10439    #[prost(string, optional, tag = "4")]
10440    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
10441}
10442#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10443pub struct DmaHeapStatFtraceEvent {
10444    #[prost(uint64, optional, tag = "1")]
10445    pub inode: ::core::option::Option<u64>,
10446    #[prost(int64, optional, tag = "2")]
10447    pub len: ::core::option::Option<i64>,
10448    #[prost(uint64, optional, tag = "3")]
10449    pub total_allocated: ::core::option::Option<u64>,
10450}
10451#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10452pub struct DpuTracingMarkWriteFtraceEvent {
10453    #[prost(int32, optional, tag = "1")]
10454    pub pid: ::core::option::Option<i32>,
10455    #[prost(string, optional, tag = "2")]
10456    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
10457    #[prost(uint32, optional, tag = "3")]
10458    pub trace_begin: ::core::option::Option<u32>,
10459    #[prost(string, optional, tag = "4")]
10460    pub name: ::core::option::Option<::prost::alloc::string::String>,
10461    #[prost(uint32, optional, tag = "5")]
10462    pub r#type: ::core::option::Option<u32>,
10463    #[prost(int32, optional, tag = "6")]
10464    pub value: ::core::option::Option<i32>,
10465}
10466#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10467pub struct DpuDsiCmdFifoStatusFtraceEvent {
10468    #[prost(uint32, optional, tag = "1")]
10469    pub header: ::core::option::Option<u32>,
10470    #[prost(uint32, optional, tag = "2")]
10471    pub payload: ::core::option::Option<u32>,
10472}
10473#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10474pub struct DpuDsiRxFtraceEvent {
10475    #[prost(uint32, optional, tag = "1")]
10476    pub cmd: ::core::option::Option<u32>,
10477    #[prost(bytes = "vec", optional, tag = "3")]
10478    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10479}
10480#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10481pub struct DpuDsiTxFtraceEvent {
10482    #[prost(uint32, optional, tag = "1")]
10483    pub r#type: ::core::option::Option<u32>,
10484    #[prost(uint32, optional, tag = "3")]
10485    pub last: ::core::option::Option<u32>,
10486    #[prost(uint32, optional, tag = "4")]
10487    pub delay_ms: ::core::option::Option<u32>,
10488    #[prost(bytes = "vec", optional, tag = "5")]
10489    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10490}
10491#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10492pub struct DpuDispDpuUnderrunFtraceEvent {
10493    #[prost(int32, optional, tag = "1")]
10494    pub id: ::core::option::Option<i32>,
10495    #[prost(int32, optional, tag = "2")]
10496    pub frames_pending: ::core::option::Option<i32>,
10497    #[prost(int32, optional, tag = "3")]
10498    pub vsync_count: ::core::option::Option<i32>,
10499}
10500#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10501pub struct DpuDispVblankIrqEnableFtraceEvent {
10502    #[prost(int32, optional, tag = "1")]
10503    pub id: ::core::option::Option<i32>,
10504    #[prost(int32, optional, tag = "2")]
10505    pub output_id: ::core::option::Option<i32>,
10506    #[prost(int32, optional, tag = "3")]
10507    pub enable: ::core::option::Option<i32>,
10508}
10509#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10510pub struct DpuDispFrameDoneTimeoutFtraceEvent {
10511    #[prost(int32, optional, tag = "1")]
10512    pub display_id: ::core::option::Option<i32>,
10513    #[prost(uint32, optional, tag = "2")]
10514    pub output_id: ::core::option::Option<u32>,
10515    #[prost(int32, optional, tag = "3")]
10516    pub frames_pending: ::core::option::Option<i32>,
10517    #[prost(int32, optional, tag = "4")]
10518    pub te_count: ::core::option::Option<i32>,
10519    #[prost(uint32, optional, tag = "5")]
10520    pub during_disable: ::core::option::Option<u32>,
10521}
10522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10523pub struct DpuDispFrameStartTimeoutFtraceEvent {
10524    #[prost(int32, optional, tag = "1")]
10525    pub display_id: ::core::option::Option<i32>,
10526    #[prost(uint32, optional, tag = "2")]
10527    pub output_id: ::core::option::Option<u32>,
10528    #[prost(int32, optional, tag = "3")]
10529    pub frames_pending: ::core::option::Option<i32>,
10530    #[prost(int32, optional, tag = "4")]
10531    pub te_count: ::core::option::Option<i32>,
10532}
10533#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10534pub struct DpuDispFrameDoneMissingFtraceEvent {
10535    #[prost(int32, optional, tag = "1")]
10536    pub display_id: ::core::option::Option<i32>,
10537    #[prost(uint32, optional, tag = "2")]
10538    pub output_id: ::core::option::Option<u32>,
10539    #[prost(int32, optional, tag = "3")]
10540    pub frames_pending: ::core::option::Option<i32>,
10541    #[prost(int32, optional, tag = "4")]
10542    pub te_count: ::core::option::Option<i32>,
10543}
10544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10545pub struct DpuDispFrameStartMissingFtraceEvent {
10546    #[prost(int32, optional, tag = "1")]
10547    pub display_id: ::core::option::Option<i32>,
10548    #[prost(uint32, optional, tag = "2")]
10549    pub output_id: ::core::option::Option<u32>,
10550    #[prost(int32, optional, tag = "3")]
10551    pub frames_pending: ::core::option::Option<i32>,
10552    #[prost(int32, optional, tag = "4")]
10553    pub te_count: ::core::option::Option<i32>,
10554}
10555#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10556pub struct DpuDispDpuLineUnderrunFtraceEvent {
10557    #[prost(int32, optional, tag = "1")]
10558    pub id: ::core::option::Option<i32>,
10559    #[prost(int32, optional, tag = "2")]
10560    pub frames_pending: ::core::option::Option<i32>,
10561    #[prost(int32, optional, tag = "3")]
10562    pub vsync_count: ::core::option::Option<i32>,
10563}
10564#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10565pub struct DrmVblankEventFtraceEvent {
10566    #[prost(int32, optional, tag = "1")]
10567    pub crtc: ::core::option::Option<i32>,
10568    #[prost(uint32, optional, tag = "2")]
10569    pub high_prec: ::core::option::Option<u32>,
10570    #[prost(uint32, optional, tag = "3")]
10571    pub seq: ::core::option::Option<u32>,
10572    #[prost(int64, optional, tag = "4")]
10573    pub time: ::core::option::Option<i64>,
10574}
10575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10576pub struct DrmVblankEventDeliveredFtraceEvent {
10577    #[prost(int32, optional, tag = "1")]
10578    pub crtc: ::core::option::Option<i32>,
10579    #[prost(uint64, optional, tag = "2")]
10580    pub file: ::core::option::Option<u64>,
10581    #[prost(uint32, optional, tag = "3")]
10582    pub seq: ::core::option::Option<u32>,
10583}
10584#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10585pub struct Dwc3AllocRequestFtraceEvent {
10586    #[prost(string, optional, tag = "1")]
10587    pub name: ::core::option::Option<::prost::alloc::string::String>,
10588    #[prost(uint64, optional, tag = "2")]
10589    pub req: ::core::option::Option<u64>,
10590    #[prost(uint32, optional, tag = "3")]
10591    pub actual: ::core::option::Option<u32>,
10592    #[prost(uint32, optional, tag = "4")]
10593    pub length: ::core::option::Option<u32>,
10594    #[prost(int32, optional, tag = "5")]
10595    pub status: ::core::option::Option<i32>,
10596    #[prost(int32, optional, tag = "6")]
10597    pub zero: ::core::option::Option<i32>,
10598    #[prost(int32, optional, tag = "7")]
10599    pub short_not_ok: ::core::option::Option<i32>,
10600    #[prost(int32, optional, tag = "8")]
10601    pub no_interrupt: ::core::option::Option<i32>,
10602}
10603#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10604pub struct Dwc3CompleteTrbFtraceEvent {
10605    #[prost(string, optional, tag = "1")]
10606    pub name: ::core::option::Option<::prost::alloc::string::String>,
10607    #[prost(uint64, optional, tag = "2")]
10608    pub trb: ::core::option::Option<u64>,
10609    #[prost(uint32, optional, tag = "3")]
10610    pub allocated: ::core::option::Option<u32>,
10611    #[prost(uint32, optional, tag = "4")]
10612    pub queued: ::core::option::Option<u32>,
10613    #[prost(uint32, optional, tag = "5")]
10614    pub bpl: ::core::option::Option<u32>,
10615    #[prost(uint32, optional, tag = "6")]
10616    pub bph: ::core::option::Option<u32>,
10617    #[prost(uint32, optional, tag = "7")]
10618    pub size: ::core::option::Option<u32>,
10619    #[prost(uint32, optional, tag = "8")]
10620    pub ctrl: ::core::option::Option<u32>,
10621    #[prost(uint32, optional, tag = "9")]
10622    pub r#type: ::core::option::Option<u32>,
10623    #[prost(uint32, optional, tag = "10")]
10624    pub enqueue: ::core::option::Option<u32>,
10625    #[prost(uint32, optional, tag = "11")]
10626    pub dequeue: ::core::option::Option<u32>,
10627}
10628#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10629pub struct Dwc3CtrlReqFtraceEvent {
10630    #[prost(uint32, optional, tag = "1")]
10631    pub b_request_type: ::core::option::Option<u32>,
10632    #[prost(uint32, optional, tag = "2")]
10633    pub b_request: ::core::option::Option<u32>,
10634    #[prost(uint32, optional, tag = "3")]
10635    pub w_value: ::core::option::Option<u32>,
10636    #[prost(uint32, optional, tag = "4")]
10637    pub w_index: ::core::option::Option<u32>,
10638    #[prost(uint32, optional, tag = "5")]
10639    pub w_length: ::core::option::Option<u32>,
10640    #[prost(string, optional, tag = "6")]
10641    pub str: ::core::option::Option<::prost::alloc::string::String>,
10642}
10643#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10644pub struct Dwc3EpDequeueFtraceEvent {
10645    #[prost(string, optional, tag = "1")]
10646    pub name: ::core::option::Option<::prost::alloc::string::String>,
10647    #[prost(uint64, optional, tag = "2")]
10648    pub req: ::core::option::Option<u64>,
10649    #[prost(uint32, optional, tag = "3")]
10650    pub actual: ::core::option::Option<u32>,
10651    #[prost(uint32, optional, tag = "4")]
10652    pub length: ::core::option::Option<u32>,
10653    #[prost(int32, optional, tag = "5")]
10654    pub status: ::core::option::Option<i32>,
10655    #[prost(int32, optional, tag = "6")]
10656    pub zero: ::core::option::Option<i32>,
10657    #[prost(int32, optional, tag = "7")]
10658    pub short_not_ok: ::core::option::Option<i32>,
10659    #[prost(int32, optional, tag = "8")]
10660    pub no_interrupt: ::core::option::Option<i32>,
10661}
10662#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10663pub struct Dwc3EpQueueFtraceEvent {
10664    #[prost(string, optional, tag = "1")]
10665    pub name: ::core::option::Option<::prost::alloc::string::String>,
10666    #[prost(uint64, optional, tag = "2")]
10667    pub req: ::core::option::Option<u64>,
10668    #[prost(uint32, optional, tag = "3")]
10669    pub actual: ::core::option::Option<u32>,
10670    #[prost(uint32, optional, tag = "4")]
10671    pub length: ::core::option::Option<u32>,
10672    #[prost(int32, optional, tag = "5")]
10673    pub status: ::core::option::Option<i32>,
10674    #[prost(int32, optional, tag = "6")]
10675    pub zero: ::core::option::Option<i32>,
10676    #[prost(int32, optional, tag = "7")]
10677    pub short_not_ok: ::core::option::Option<i32>,
10678    #[prost(int32, optional, tag = "8")]
10679    pub no_interrupt: ::core::option::Option<i32>,
10680}
10681#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10682pub struct Dwc3EventFtraceEvent {
10683    #[prost(uint32, optional, tag = "1")]
10684    pub event: ::core::option::Option<u32>,
10685    #[prost(uint32, optional, tag = "2")]
10686    pub ep0state: ::core::option::Option<u32>,
10687    #[prost(string, optional, tag = "3")]
10688    pub str: ::core::option::Option<::prost::alloc::string::String>,
10689}
10690#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10691pub struct Dwc3FreeRequestFtraceEvent {
10692    #[prost(string, optional, tag = "1")]
10693    pub name: ::core::option::Option<::prost::alloc::string::String>,
10694    #[prost(uint64, optional, tag = "2")]
10695    pub req: ::core::option::Option<u64>,
10696    #[prost(uint32, optional, tag = "3")]
10697    pub actual: ::core::option::Option<u32>,
10698    #[prost(uint32, optional, tag = "4")]
10699    pub length: ::core::option::Option<u32>,
10700    #[prost(int32, optional, tag = "5")]
10701    pub status: ::core::option::Option<i32>,
10702    #[prost(int32, optional, tag = "6")]
10703    pub zero: ::core::option::Option<i32>,
10704    #[prost(int32, optional, tag = "7")]
10705    pub short_not_ok: ::core::option::Option<i32>,
10706    #[prost(int32, optional, tag = "8")]
10707    pub no_interrupt: ::core::option::Option<i32>,
10708}
10709#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10710pub struct Dwc3GadgetEpCmdFtraceEvent {
10711    #[prost(string, optional, tag = "1")]
10712    pub name: ::core::option::Option<::prost::alloc::string::String>,
10713    #[prost(uint32, optional, tag = "2")]
10714    pub cmd: ::core::option::Option<u32>,
10715    #[prost(uint32, optional, tag = "3")]
10716    pub param0: ::core::option::Option<u32>,
10717    #[prost(uint32, optional, tag = "4")]
10718    pub param1: ::core::option::Option<u32>,
10719    #[prost(uint32, optional, tag = "5")]
10720    pub param2: ::core::option::Option<u32>,
10721    #[prost(int32, optional, tag = "6")]
10722    pub cmd_status: ::core::option::Option<i32>,
10723}
10724#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10725pub struct Dwc3GadgetEpDisableFtraceEvent {
10726    #[prost(string, optional, tag = "1")]
10727    pub name: ::core::option::Option<::prost::alloc::string::String>,
10728    #[prost(uint32, optional, tag = "2")]
10729    pub maxpacket: ::core::option::Option<u32>,
10730    #[prost(uint32, optional, tag = "3")]
10731    pub maxpacket_limit: ::core::option::Option<u32>,
10732    #[prost(uint32, optional, tag = "4")]
10733    pub max_streams: ::core::option::Option<u32>,
10734    #[prost(uint32, optional, tag = "5")]
10735    pub maxburst: ::core::option::Option<u32>,
10736    #[prost(uint32, optional, tag = "6")]
10737    pub flags: ::core::option::Option<u32>,
10738    #[prost(uint32, optional, tag = "7")]
10739    pub direction: ::core::option::Option<u32>,
10740    #[prost(uint32, optional, tag = "8")]
10741    pub trb_enqueue: ::core::option::Option<u32>,
10742    #[prost(uint32, optional, tag = "9")]
10743    pub trb_dequeue: ::core::option::Option<u32>,
10744}
10745#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10746pub struct Dwc3GadgetEpEnableFtraceEvent {
10747    #[prost(string, optional, tag = "1")]
10748    pub name: ::core::option::Option<::prost::alloc::string::String>,
10749    #[prost(uint32, optional, tag = "2")]
10750    pub maxpacket: ::core::option::Option<u32>,
10751    #[prost(uint32, optional, tag = "3")]
10752    pub maxpacket_limit: ::core::option::Option<u32>,
10753    #[prost(uint32, optional, tag = "4")]
10754    pub max_streams: ::core::option::Option<u32>,
10755    #[prost(uint32, optional, tag = "5")]
10756    pub maxburst: ::core::option::Option<u32>,
10757    #[prost(uint32, optional, tag = "6")]
10758    pub flags: ::core::option::Option<u32>,
10759    #[prost(uint32, optional, tag = "7")]
10760    pub direction: ::core::option::Option<u32>,
10761    #[prost(uint32, optional, tag = "8")]
10762    pub trb_enqueue: ::core::option::Option<u32>,
10763    #[prost(uint32, optional, tag = "9")]
10764    pub trb_dequeue: ::core::option::Option<u32>,
10765}
10766#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10767pub struct Dwc3GadgetGenericCmdFtraceEvent {
10768    #[prost(uint32, optional, tag = "1")]
10769    pub cmd: ::core::option::Option<u32>,
10770    #[prost(uint32, optional, tag = "2")]
10771    pub param: ::core::option::Option<u32>,
10772    #[prost(int32, optional, tag = "3")]
10773    pub status: ::core::option::Option<i32>,
10774}
10775#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10776pub struct Dwc3GadgetGivebackFtraceEvent {
10777    #[prost(string, optional, tag = "1")]
10778    pub name: ::core::option::Option<::prost::alloc::string::String>,
10779    #[prost(uint64, optional, tag = "2")]
10780    pub req: ::core::option::Option<u64>,
10781    #[prost(uint32, optional, tag = "3")]
10782    pub actual: ::core::option::Option<u32>,
10783    #[prost(uint32, optional, tag = "4")]
10784    pub length: ::core::option::Option<u32>,
10785    #[prost(int32, optional, tag = "5")]
10786    pub status: ::core::option::Option<i32>,
10787    #[prost(int32, optional, tag = "6")]
10788    pub zero: ::core::option::Option<i32>,
10789    #[prost(int32, optional, tag = "7")]
10790    pub short_not_ok: ::core::option::Option<i32>,
10791    #[prost(int32, optional, tag = "8")]
10792    pub no_interrupt: ::core::option::Option<i32>,
10793}
10794#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10795pub struct Dwc3PrepareTrbFtraceEvent {
10796    #[prost(string, optional, tag = "1")]
10797    pub name: ::core::option::Option<::prost::alloc::string::String>,
10798    #[prost(uint64, optional, tag = "2")]
10799    pub trb: ::core::option::Option<u64>,
10800    #[prost(uint32, optional, tag = "3")]
10801    pub allocated: ::core::option::Option<u32>,
10802    #[prost(uint32, optional, tag = "4")]
10803    pub queued: ::core::option::Option<u32>,
10804    #[prost(uint32, optional, tag = "5")]
10805    pub bpl: ::core::option::Option<u32>,
10806    #[prost(uint32, optional, tag = "6")]
10807    pub bph: ::core::option::Option<u32>,
10808    #[prost(uint32, optional, tag = "7")]
10809    pub size: ::core::option::Option<u32>,
10810    #[prost(uint32, optional, tag = "8")]
10811    pub ctrl: ::core::option::Option<u32>,
10812    #[prost(uint32, optional, tag = "9")]
10813    pub r#type: ::core::option::Option<u32>,
10814    #[prost(uint32, optional, tag = "10")]
10815    pub enqueue: ::core::option::Option<u32>,
10816    #[prost(uint32, optional, tag = "11")]
10817    pub dequeue: ::core::option::Option<u32>,
10818}
10819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10820pub struct Dwc3ReadlFtraceEvent {
10821    #[prost(uint64, optional, tag = "1")]
10822    pub base: ::core::option::Option<u64>,
10823    #[prost(uint32, optional, tag = "2")]
10824    pub offset: ::core::option::Option<u32>,
10825    #[prost(uint32, optional, tag = "3")]
10826    pub value: ::core::option::Option<u32>,
10827    #[prost(string, optional, tag = "4")]
10828    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10829}
10830#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10831pub struct Dwc3WritelFtraceEvent {
10832    #[prost(uint64, optional, tag = "1")]
10833    pub base: ::core::option::Option<u64>,
10834    #[prost(uint32, optional, tag = "2")]
10835    pub offset: ::core::option::Option<u32>,
10836    #[prost(uint32, optional, tag = "3")]
10837    pub value: ::core::option::Option<u32>,
10838    #[prost(string, optional, tag = "4")]
10839    pub msg: ::core::option::Option<::prost::alloc::string::String>,
10840}
10841#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10842pub struct Ext4DaWriteBeginFtraceEvent {
10843    #[prost(uint64, optional, tag = "1")]
10844    pub dev: ::core::option::Option<u64>,
10845    #[prost(uint64, optional, tag = "2")]
10846    pub ino: ::core::option::Option<u64>,
10847    #[prost(int64, optional, tag = "3")]
10848    pub pos: ::core::option::Option<i64>,
10849    #[prost(uint32, optional, tag = "4")]
10850    pub len: ::core::option::Option<u32>,
10851    #[prost(uint32, optional, tag = "5")]
10852    pub flags: ::core::option::Option<u32>,
10853}
10854#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10855pub struct Ext4DaWriteEndFtraceEvent {
10856    #[prost(uint64, optional, tag = "1")]
10857    pub dev: ::core::option::Option<u64>,
10858    #[prost(uint64, optional, tag = "2")]
10859    pub ino: ::core::option::Option<u64>,
10860    #[prost(int64, optional, tag = "3")]
10861    pub pos: ::core::option::Option<i64>,
10862    #[prost(uint32, optional, tag = "4")]
10863    pub len: ::core::option::Option<u32>,
10864    #[prost(uint32, optional, tag = "5")]
10865    pub copied: ::core::option::Option<u32>,
10866}
10867#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10868pub struct Ext4SyncFileEnterFtraceEvent {
10869    #[prost(uint64, optional, tag = "1")]
10870    pub dev: ::core::option::Option<u64>,
10871    #[prost(uint64, optional, tag = "2")]
10872    pub ino: ::core::option::Option<u64>,
10873    #[prost(uint64, optional, tag = "3")]
10874    pub parent: ::core::option::Option<u64>,
10875    #[prost(int32, optional, tag = "4")]
10876    pub datasync: ::core::option::Option<i32>,
10877}
10878#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10879pub struct Ext4SyncFileExitFtraceEvent {
10880    #[prost(uint64, optional, tag = "1")]
10881    pub dev: ::core::option::Option<u64>,
10882    #[prost(uint64, optional, tag = "2")]
10883    pub ino: ::core::option::Option<u64>,
10884    #[prost(int32, optional, tag = "3")]
10885    pub ret: ::core::option::Option<i32>,
10886}
10887#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10888pub struct Ext4AllocDaBlocksFtraceEvent {
10889    #[prost(uint64, optional, tag = "1")]
10890    pub dev: ::core::option::Option<u64>,
10891    #[prost(uint64, optional, tag = "2")]
10892    pub ino: ::core::option::Option<u64>,
10893    #[prost(uint32, optional, tag = "3")]
10894    pub data_blocks: ::core::option::Option<u32>,
10895    #[prost(uint32, optional, tag = "4")]
10896    pub meta_blocks: ::core::option::Option<u32>,
10897}
10898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10899pub struct Ext4AllocateBlocksFtraceEvent {
10900    #[prost(uint64, optional, tag = "1")]
10901    pub dev: ::core::option::Option<u64>,
10902    #[prost(uint64, optional, tag = "2")]
10903    pub ino: ::core::option::Option<u64>,
10904    #[prost(uint64, optional, tag = "3")]
10905    pub block: ::core::option::Option<u64>,
10906    #[prost(uint32, optional, tag = "4")]
10907    pub len: ::core::option::Option<u32>,
10908    #[prost(uint32, optional, tag = "5")]
10909    pub logical: ::core::option::Option<u32>,
10910    #[prost(uint32, optional, tag = "6")]
10911    pub lleft: ::core::option::Option<u32>,
10912    #[prost(uint32, optional, tag = "7")]
10913    pub lright: ::core::option::Option<u32>,
10914    #[prost(uint64, optional, tag = "8")]
10915    pub goal: ::core::option::Option<u64>,
10916    #[prost(uint64, optional, tag = "9")]
10917    pub pleft: ::core::option::Option<u64>,
10918    #[prost(uint64, optional, tag = "10")]
10919    pub pright: ::core::option::Option<u64>,
10920    #[prost(uint32, optional, tag = "11")]
10921    pub flags: ::core::option::Option<u32>,
10922}
10923#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10924pub struct Ext4AllocateInodeFtraceEvent {
10925    #[prost(uint64, optional, tag = "1")]
10926    pub dev: ::core::option::Option<u64>,
10927    #[prost(uint64, optional, tag = "2")]
10928    pub ino: ::core::option::Option<u64>,
10929    #[prost(uint64, optional, tag = "3")]
10930    pub dir: ::core::option::Option<u64>,
10931    #[prost(uint32, optional, tag = "4")]
10932    pub mode: ::core::option::Option<u32>,
10933}
10934#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10935pub struct Ext4BeginOrderedTruncateFtraceEvent {
10936    #[prost(uint64, optional, tag = "1")]
10937    pub dev: ::core::option::Option<u64>,
10938    #[prost(uint64, optional, tag = "2")]
10939    pub ino: ::core::option::Option<u64>,
10940    #[prost(int64, optional, tag = "3")]
10941    pub new_size: ::core::option::Option<i64>,
10942}
10943#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10944pub struct Ext4CollapseRangeFtraceEvent {
10945    #[prost(uint64, optional, tag = "1")]
10946    pub dev: ::core::option::Option<u64>,
10947    #[prost(uint64, optional, tag = "2")]
10948    pub ino: ::core::option::Option<u64>,
10949    #[prost(int64, optional, tag = "3")]
10950    pub offset: ::core::option::Option<i64>,
10951    #[prost(int64, optional, tag = "4")]
10952    pub len: ::core::option::Option<i64>,
10953}
10954#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10955pub struct Ext4DaReleaseSpaceFtraceEvent {
10956    #[prost(uint64, optional, tag = "1")]
10957    pub dev: ::core::option::Option<u64>,
10958    #[prost(uint64, optional, tag = "2")]
10959    pub ino: ::core::option::Option<u64>,
10960    #[prost(uint64, optional, tag = "3")]
10961    pub i_blocks: ::core::option::Option<u64>,
10962    #[prost(int32, optional, tag = "4")]
10963    pub freed_blocks: ::core::option::Option<i32>,
10964    #[prost(int32, optional, tag = "5")]
10965    pub reserved_data_blocks: ::core::option::Option<i32>,
10966    #[prost(int32, optional, tag = "6")]
10967    pub reserved_meta_blocks: ::core::option::Option<i32>,
10968    #[prost(int32, optional, tag = "7")]
10969    pub allocated_meta_blocks: ::core::option::Option<i32>,
10970    #[prost(uint32, optional, tag = "8")]
10971    pub mode: ::core::option::Option<u32>,
10972}
10973#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10974pub struct Ext4DaReserveSpaceFtraceEvent {
10975    #[prost(uint64, optional, tag = "1")]
10976    pub dev: ::core::option::Option<u64>,
10977    #[prost(uint64, optional, tag = "2")]
10978    pub ino: ::core::option::Option<u64>,
10979    #[prost(uint64, optional, tag = "3")]
10980    pub i_blocks: ::core::option::Option<u64>,
10981    #[prost(int32, optional, tag = "4")]
10982    pub reserved_data_blocks: ::core::option::Option<i32>,
10983    #[prost(int32, optional, tag = "5")]
10984    pub reserved_meta_blocks: ::core::option::Option<i32>,
10985    #[prost(uint32, optional, tag = "6")]
10986    pub mode: ::core::option::Option<u32>,
10987    #[prost(int32, optional, tag = "7")]
10988    pub md_needed: ::core::option::Option<i32>,
10989}
10990#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10991pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
10992    #[prost(uint64, optional, tag = "1")]
10993    pub dev: ::core::option::Option<u64>,
10994    #[prost(uint64, optional, tag = "2")]
10995    pub ino: ::core::option::Option<u64>,
10996    #[prost(uint64, optional, tag = "3")]
10997    pub i_blocks: ::core::option::Option<u64>,
10998    #[prost(int32, optional, tag = "4")]
10999    pub used_blocks: ::core::option::Option<i32>,
11000    #[prost(int32, optional, tag = "5")]
11001    pub reserved_data_blocks: ::core::option::Option<i32>,
11002    #[prost(int32, optional, tag = "6")]
11003    pub reserved_meta_blocks: ::core::option::Option<i32>,
11004    #[prost(int32, optional, tag = "7")]
11005    pub allocated_meta_blocks: ::core::option::Option<i32>,
11006    #[prost(int32, optional, tag = "8")]
11007    pub quota_claim: ::core::option::Option<i32>,
11008    #[prost(uint32, optional, tag = "9")]
11009    pub mode: ::core::option::Option<u32>,
11010}
11011#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11012pub struct Ext4DaWritePagesFtraceEvent {
11013    #[prost(uint64, optional, tag = "1")]
11014    pub dev: ::core::option::Option<u64>,
11015    #[prost(uint64, optional, tag = "2")]
11016    pub ino: ::core::option::Option<u64>,
11017    #[prost(uint64, optional, tag = "3")]
11018    pub first_page: ::core::option::Option<u64>,
11019    #[prost(int64, optional, tag = "4")]
11020    pub nr_to_write: ::core::option::Option<i64>,
11021    #[prost(int32, optional, tag = "5")]
11022    pub sync_mode: ::core::option::Option<i32>,
11023    #[prost(uint64, optional, tag = "6")]
11024    pub b_blocknr: ::core::option::Option<u64>,
11025    #[prost(uint32, optional, tag = "7")]
11026    pub b_size: ::core::option::Option<u32>,
11027    #[prost(uint32, optional, tag = "8")]
11028    pub b_state: ::core::option::Option<u32>,
11029    #[prost(int32, optional, tag = "9")]
11030    pub io_done: ::core::option::Option<i32>,
11031    #[prost(int32, optional, tag = "10")]
11032    pub pages_written: ::core::option::Option<i32>,
11033}
11034#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11035pub struct Ext4DaWritePagesExtentFtraceEvent {
11036    #[prost(uint64, optional, tag = "1")]
11037    pub dev: ::core::option::Option<u64>,
11038    #[prost(uint64, optional, tag = "2")]
11039    pub ino: ::core::option::Option<u64>,
11040    #[prost(uint64, optional, tag = "3")]
11041    pub lblk: ::core::option::Option<u64>,
11042    #[prost(uint32, optional, tag = "4")]
11043    pub len: ::core::option::Option<u32>,
11044    #[prost(uint32, optional, tag = "5")]
11045    pub flags: ::core::option::Option<u32>,
11046}
11047#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11048pub struct Ext4DirectIoEnterFtraceEvent {
11049    #[prost(uint64, optional, tag = "1")]
11050    pub dev: ::core::option::Option<u64>,
11051    #[prost(uint64, optional, tag = "2")]
11052    pub ino: ::core::option::Option<u64>,
11053    #[prost(int64, optional, tag = "3")]
11054    pub pos: ::core::option::Option<i64>,
11055    #[prost(uint64, optional, tag = "4")]
11056    pub len: ::core::option::Option<u64>,
11057    #[prost(int32, optional, tag = "5")]
11058    pub rw: ::core::option::Option<i32>,
11059}
11060#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11061pub struct Ext4DirectIoExitFtraceEvent {
11062    #[prost(uint64, optional, tag = "1")]
11063    pub dev: ::core::option::Option<u64>,
11064    #[prost(uint64, optional, tag = "2")]
11065    pub ino: ::core::option::Option<u64>,
11066    #[prost(int64, optional, tag = "3")]
11067    pub pos: ::core::option::Option<i64>,
11068    #[prost(uint64, optional, tag = "4")]
11069    pub len: ::core::option::Option<u64>,
11070    #[prost(int32, optional, tag = "5")]
11071    pub rw: ::core::option::Option<i32>,
11072    #[prost(int32, optional, tag = "6")]
11073    pub ret: ::core::option::Option<i32>,
11074}
11075#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11076pub struct Ext4DiscardBlocksFtraceEvent {
11077    #[prost(uint64, optional, tag = "1")]
11078    pub dev: ::core::option::Option<u64>,
11079    #[prost(uint64, optional, tag = "2")]
11080    pub blk: ::core::option::Option<u64>,
11081    #[prost(uint64, optional, tag = "3")]
11082    pub count: ::core::option::Option<u64>,
11083}
11084#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11085pub struct Ext4DiscardPreallocationsFtraceEvent {
11086    #[prost(uint64, optional, tag = "1")]
11087    pub dev: ::core::option::Option<u64>,
11088    #[prost(uint64, optional, tag = "2")]
11089    pub ino: ::core::option::Option<u64>,
11090    #[prost(uint32, optional, tag = "3")]
11091    pub len: ::core::option::Option<u32>,
11092    #[prost(uint32, optional, tag = "4")]
11093    pub needed: ::core::option::Option<u32>,
11094}
11095#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11096pub struct Ext4DropInodeFtraceEvent {
11097    #[prost(uint64, optional, tag = "1")]
11098    pub dev: ::core::option::Option<u64>,
11099    #[prost(uint64, optional, tag = "2")]
11100    pub ino: ::core::option::Option<u64>,
11101    #[prost(int32, optional, tag = "3")]
11102    pub drop: ::core::option::Option<i32>,
11103}
11104#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11105pub struct Ext4EsCacheExtentFtraceEvent {
11106    #[prost(uint64, optional, tag = "1")]
11107    pub dev: ::core::option::Option<u64>,
11108    #[prost(uint64, optional, tag = "2")]
11109    pub ino: ::core::option::Option<u64>,
11110    #[prost(uint32, optional, tag = "3")]
11111    pub lblk: ::core::option::Option<u32>,
11112    #[prost(uint32, optional, tag = "4")]
11113    pub len: ::core::option::Option<u32>,
11114    #[prost(uint64, optional, tag = "5")]
11115    pub pblk: ::core::option::Option<u64>,
11116    #[prost(uint32, optional, tag = "6")]
11117    pub status: ::core::option::Option<u32>,
11118}
11119#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11120pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
11121    #[prost(uint64, optional, tag = "1")]
11122    pub dev: ::core::option::Option<u64>,
11123    #[prost(uint64, optional, tag = "2")]
11124    pub ino: ::core::option::Option<u64>,
11125    #[prost(uint32, optional, tag = "3")]
11126    pub lblk: ::core::option::Option<u32>,
11127}
11128#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11129pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
11130    #[prost(uint64, optional, tag = "1")]
11131    pub dev: ::core::option::Option<u64>,
11132    #[prost(uint64, optional, tag = "2")]
11133    pub ino: ::core::option::Option<u64>,
11134    #[prost(uint32, optional, tag = "3")]
11135    pub lblk: ::core::option::Option<u32>,
11136    #[prost(uint32, optional, tag = "4")]
11137    pub len: ::core::option::Option<u32>,
11138    #[prost(uint64, optional, tag = "5")]
11139    pub pblk: ::core::option::Option<u64>,
11140    #[prost(uint64, optional, tag = "6")]
11141    pub status: ::core::option::Option<u64>,
11142}
11143#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11144pub struct Ext4EsInsertExtentFtraceEvent {
11145    #[prost(uint64, optional, tag = "1")]
11146    pub dev: ::core::option::Option<u64>,
11147    #[prost(uint64, optional, tag = "2")]
11148    pub ino: ::core::option::Option<u64>,
11149    #[prost(uint32, optional, tag = "3")]
11150    pub lblk: ::core::option::Option<u32>,
11151    #[prost(uint32, optional, tag = "4")]
11152    pub len: ::core::option::Option<u32>,
11153    #[prost(uint64, optional, tag = "5")]
11154    pub pblk: ::core::option::Option<u64>,
11155    #[prost(uint64, optional, tag = "6")]
11156    pub status: ::core::option::Option<u64>,
11157}
11158#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11159pub struct Ext4EsLookupExtentEnterFtraceEvent {
11160    #[prost(uint64, optional, tag = "1")]
11161    pub dev: ::core::option::Option<u64>,
11162    #[prost(uint64, optional, tag = "2")]
11163    pub ino: ::core::option::Option<u64>,
11164    #[prost(uint32, optional, tag = "3")]
11165    pub lblk: ::core::option::Option<u32>,
11166}
11167#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11168pub struct Ext4EsLookupExtentExitFtraceEvent {
11169    #[prost(uint64, optional, tag = "1")]
11170    pub dev: ::core::option::Option<u64>,
11171    #[prost(uint64, optional, tag = "2")]
11172    pub ino: ::core::option::Option<u64>,
11173    #[prost(uint32, optional, tag = "3")]
11174    pub lblk: ::core::option::Option<u32>,
11175    #[prost(uint32, optional, tag = "4")]
11176    pub len: ::core::option::Option<u32>,
11177    #[prost(uint64, optional, tag = "5")]
11178    pub pblk: ::core::option::Option<u64>,
11179    #[prost(uint64, optional, tag = "6")]
11180    pub status: ::core::option::Option<u64>,
11181    #[prost(int32, optional, tag = "7")]
11182    pub found: ::core::option::Option<i32>,
11183}
11184#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11185pub struct Ext4EsRemoveExtentFtraceEvent {
11186    #[prost(uint64, optional, tag = "1")]
11187    pub dev: ::core::option::Option<u64>,
11188    #[prost(uint64, optional, tag = "2")]
11189    pub ino: ::core::option::Option<u64>,
11190    #[prost(int64, optional, tag = "3")]
11191    pub lblk: ::core::option::Option<i64>,
11192    #[prost(int64, optional, tag = "4")]
11193    pub len: ::core::option::Option<i64>,
11194}
11195#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11196pub struct Ext4EsShrinkFtraceEvent {
11197    #[prost(uint64, optional, tag = "1")]
11198    pub dev: ::core::option::Option<u64>,
11199    #[prost(int32, optional, tag = "2")]
11200    pub nr_shrunk: ::core::option::Option<i32>,
11201    #[prost(uint64, optional, tag = "3")]
11202    pub scan_time: ::core::option::Option<u64>,
11203    #[prost(int32, optional, tag = "4")]
11204    pub nr_skipped: ::core::option::Option<i32>,
11205    #[prost(int32, optional, tag = "5")]
11206    pub retried: ::core::option::Option<i32>,
11207}
11208#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11209pub struct Ext4EsShrinkCountFtraceEvent {
11210    #[prost(uint64, optional, tag = "1")]
11211    pub dev: ::core::option::Option<u64>,
11212    #[prost(int32, optional, tag = "2")]
11213    pub nr_to_scan: ::core::option::Option<i32>,
11214    #[prost(int32, optional, tag = "3")]
11215    pub cache_cnt: ::core::option::Option<i32>,
11216}
11217#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11218pub struct Ext4EsShrinkScanEnterFtraceEvent {
11219    #[prost(uint64, optional, tag = "1")]
11220    pub dev: ::core::option::Option<u64>,
11221    #[prost(int32, optional, tag = "2")]
11222    pub nr_to_scan: ::core::option::Option<i32>,
11223    #[prost(int32, optional, tag = "3")]
11224    pub cache_cnt: ::core::option::Option<i32>,
11225}
11226#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11227pub struct Ext4EsShrinkScanExitFtraceEvent {
11228    #[prost(uint64, optional, tag = "1")]
11229    pub dev: ::core::option::Option<u64>,
11230    #[prost(int32, optional, tag = "2")]
11231    pub nr_shrunk: ::core::option::Option<i32>,
11232    #[prost(int32, optional, tag = "3")]
11233    pub cache_cnt: ::core::option::Option<i32>,
11234}
11235#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11236pub struct Ext4EvictInodeFtraceEvent {
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(int32, optional, tag = "3")]
11242    pub nlink: ::core::option::Option<i32>,
11243}
11244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11245pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
11246    #[prost(uint64, optional, tag = "1")]
11247    pub dev: ::core::option::Option<u64>,
11248    #[prost(uint64, optional, tag = "2")]
11249    pub ino: ::core::option::Option<u64>,
11250    #[prost(uint32, optional, tag = "3")]
11251    pub m_lblk: ::core::option::Option<u32>,
11252    #[prost(uint32, optional, tag = "4")]
11253    pub m_len: ::core::option::Option<u32>,
11254    #[prost(uint32, optional, tag = "5")]
11255    pub u_lblk: ::core::option::Option<u32>,
11256    #[prost(uint32, optional, tag = "6")]
11257    pub u_len: ::core::option::Option<u32>,
11258    #[prost(uint64, optional, tag = "7")]
11259    pub u_pblk: ::core::option::Option<u64>,
11260}
11261#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11262pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
11263    #[prost(uint64, optional, tag = "1")]
11264    pub dev: ::core::option::Option<u64>,
11265    #[prost(uint64, optional, tag = "2")]
11266    pub ino: ::core::option::Option<u64>,
11267    #[prost(uint32, optional, tag = "3")]
11268    pub m_lblk: ::core::option::Option<u32>,
11269    #[prost(uint32, optional, tag = "4")]
11270    pub m_len: ::core::option::Option<u32>,
11271    #[prost(uint32, optional, tag = "5")]
11272    pub u_lblk: ::core::option::Option<u32>,
11273    #[prost(uint32, optional, tag = "6")]
11274    pub u_len: ::core::option::Option<u32>,
11275    #[prost(uint64, optional, tag = "7")]
11276    pub u_pblk: ::core::option::Option<u64>,
11277    #[prost(uint32, optional, tag = "8")]
11278    pub i_lblk: ::core::option::Option<u32>,
11279    #[prost(uint32, optional, tag = "9")]
11280    pub i_len: ::core::option::Option<u32>,
11281    #[prost(uint64, optional, tag = "10")]
11282    pub i_pblk: ::core::option::Option<u64>,
11283}
11284#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11285pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
11286    #[prost(uint64, optional, tag = "1")]
11287    pub dev: ::core::option::Option<u64>,
11288    #[prost(uint64, optional, tag = "2")]
11289    pub ino: ::core::option::Option<u64>,
11290    #[prost(int32, optional, tag = "3")]
11291    pub flags: ::core::option::Option<i32>,
11292    #[prost(uint32, optional, tag = "4")]
11293    pub lblk: ::core::option::Option<u32>,
11294    #[prost(uint64, optional, tag = "5")]
11295    pub pblk: ::core::option::Option<u64>,
11296    #[prost(uint32, optional, tag = "6")]
11297    pub len: ::core::option::Option<u32>,
11298    #[prost(uint32, optional, tag = "7")]
11299    pub allocated: ::core::option::Option<u32>,
11300    #[prost(uint64, optional, tag = "8")]
11301    pub newblk: ::core::option::Option<u64>,
11302}
11303#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11304pub struct Ext4ExtInCacheFtraceEvent {
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(int32, optional, tag = "4")]
11312    pub ret: ::core::option::Option<i32>,
11313}
11314#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11315pub struct Ext4ExtLoadExtentFtraceEvent {
11316    #[prost(uint64, optional, tag = "1")]
11317    pub dev: ::core::option::Option<u64>,
11318    #[prost(uint64, optional, tag = "2")]
11319    pub ino: ::core::option::Option<u64>,
11320    #[prost(uint64, optional, tag = "3")]
11321    pub pblk: ::core::option::Option<u64>,
11322    #[prost(uint32, optional, tag = "4")]
11323    pub lblk: ::core::option::Option<u32>,
11324}
11325#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11326pub struct Ext4ExtMapBlocksEnterFtraceEvent {
11327    #[prost(uint64, optional, tag = "1")]
11328    pub dev: ::core::option::Option<u64>,
11329    #[prost(uint64, optional, tag = "2")]
11330    pub ino: ::core::option::Option<u64>,
11331    #[prost(uint32, optional, tag = "3")]
11332    pub lblk: ::core::option::Option<u32>,
11333    #[prost(uint32, optional, tag = "4")]
11334    pub len: ::core::option::Option<u32>,
11335    #[prost(uint32, optional, tag = "5")]
11336    pub flags: ::core::option::Option<u32>,
11337}
11338#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11339pub struct Ext4ExtMapBlocksExitFtraceEvent {
11340    #[prost(uint64, optional, tag = "1")]
11341    pub dev: ::core::option::Option<u64>,
11342    #[prost(uint64, optional, tag = "2")]
11343    pub ino: ::core::option::Option<u64>,
11344    #[prost(uint32, optional, tag = "3")]
11345    pub flags: ::core::option::Option<u32>,
11346    #[prost(uint64, optional, tag = "4")]
11347    pub pblk: ::core::option::Option<u64>,
11348    #[prost(uint32, optional, tag = "5")]
11349    pub lblk: ::core::option::Option<u32>,
11350    #[prost(uint32, optional, tag = "6")]
11351    pub len: ::core::option::Option<u32>,
11352    #[prost(uint32, optional, tag = "7")]
11353    pub mflags: ::core::option::Option<u32>,
11354    #[prost(int32, optional, tag = "8")]
11355    pub ret: ::core::option::Option<i32>,
11356}
11357#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11358pub struct Ext4ExtPutInCacheFtraceEvent {
11359    #[prost(uint64, optional, tag = "1")]
11360    pub dev: ::core::option::Option<u64>,
11361    #[prost(uint64, optional, tag = "2")]
11362    pub ino: ::core::option::Option<u64>,
11363    #[prost(uint32, optional, tag = "3")]
11364    pub lblk: ::core::option::Option<u32>,
11365    #[prost(uint32, optional, tag = "4")]
11366    pub len: ::core::option::Option<u32>,
11367    #[prost(uint64, optional, tag = "5")]
11368    pub start: ::core::option::Option<u64>,
11369}
11370#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11371pub struct Ext4ExtRemoveSpaceFtraceEvent {
11372    #[prost(uint64, optional, tag = "1")]
11373    pub dev: ::core::option::Option<u64>,
11374    #[prost(uint64, optional, tag = "2")]
11375    pub ino: ::core::option::Option<u64>,
11376    #[prost(uint32, optional, tag = "3")]
11377    pub start: ::core::option::Option<u32>,
11378    #[prost(uint32, optional, tag = "4")]
11379    pub end: ::core::option::Option<u32>,
11380    #[prost(int32, optional, tag = "5")]
11381    pub depth: ::core::option::Option<i32>,
11382}
11383#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11384pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
11385    #[prost(uint64, optional, tag = "1")]
11386    pub dev: ::core::option::Option<u64>,
11387    #[prost(uint64, optional, tag = "2")]
11388    pub ino: ::core::option::Option<u64>,
11389    #[prost(uint32, optional, tag = "3")]
11390    pub start: ::core::option::Option<u32>,
11391    #[prost(uint32, optional, tag = "4")]
11392    pub end: ::core::option::Option<u32>,
11393    #[prost(int32, optional, tag = "5")]
11394    pub depth: ::core::option::Option<i32>,
11395    #[prost(int64, optional, tag = "6")]
11396    pub partial: ::core::option::Option<i64>,
11397    #[prost(uint32, optional, tag = "7")]
11398    pub eh_entries: ::core::option::Option<u32>,
11399    #[prost(uint32, optional, tag = "8")]
11400    pub pc_lblk: ::core::option::Option<u32>,
11401    #[prost(uint64, optional, tag = "9")]
11402    pub pc_pclu: ::core::option::Option<u64>,
11403    #[prost(int32, optional, tag = "10")]
11404    pub pc_state: ::core::option::Option<i32>,
11405}
11406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11407pub struct Ext4ExtRmIdxFtraceEvent {
11408    #[prost(uint64, optional, tag = "1")]
11409    pub dev: ::core::option::Option<u64>,
11410    #[prost(uint64, optional, tag = "2")]
11411    pub ino: ::core::option::Option<u64>,
11412    #[prost(uint64, optional, tag = "3")]
11413    pub pblk: ::core::option::Option<u64>,
11414}
11415#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11416pub struct Ext4ExtRmLeafFtraceEvent {
11417    #[prost(uint64, optional, tag = "1")]
11418    pub dev: ::core::option::Option<u64>,
11419    #[prost(uint64, optional, tag = "2")]
11420    pub ino: ::core::option::Option<u64>,
11421    #[prost(int64, optional, tag = "3")]
11422    pub partial: ::core::option::Option<i64>,
11423    #[prost(uint32, optional, tag = "4")]
11424    pub start: ::core::option::Option<u32>,
11425    #[prost(uint32, optional, tag = "5")]
11426    pub ee_lblk: ::core::option::Option<u32>,
11427    #[prost(uint64, optional, tag = "6")]
11428    pub ee_pblk: ::core::option::Option<u64>,
11429    #[prost(int32, optional, tag = "7")]
11430    pub ee_len: ::core::option::Option<i32>,
11431    #[prost(uint32, optional, tag = "8")]
11432    pub pc_lblk: ::core::option::Option<u32>,
11433    #[prost(uint64, optional, tag = "9")]
11434    pub pc_pclu: ::core::option::Option<u64>,
11435    #[prost(int32, optional, tag = "10")]
11436    pub pc_state: ::core::option::Option<i32>,
11437}
11438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11439pub struct Ext4ExtShowExtentFtraceEvent {
11440    #[prost(uint64, optional, tag = "1")]
11441    pub dev: ::core::option::Option<u64>,
11442    #[prost(uint64, optional, tag = "2")]
11443    pub ino: ::core::option::Option<u64>,
11444    #[prost(uint64, optional, tag = "3")]
11445    pub pblk: ::core::option::Option<u64>,
11446    #[prost(uint32, optional, tag = "4")]
11447    pub lblk: ::core::option::Option<u32>,
11448    #[prost(uint32, optional, tag = "5")]
11449    pub len: ::core::option::Option<u32>,
11450}
11451#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11452pub struct Ext4FallocateEnterFtraceEvent {
11453    #[prost(uint64, optional, tag = "1")]
11454    pub dev: ::core::option::Option<u64>,
11455    #[prost(uint64, optional, tag = "2")]
11456    pub ino: ::core::option::Option<u64>,
11457    #[prost(int64, optional, tag = "3")]
11458    pub offset: ::core::option::Option<i64>,
11459    #[prost(int64, optional, tag = "4")]
11460    pub len: ::core::option::Option<i64>,
11461    #[prost(int32, optional, tag = "5")]
11462    pub mode: ::core::option::Option<i32>,
11463    #[prost(int64, optional, tag = "6")]
11464    pub pos: ::core::option::Option<i64>,
11465}
11466#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11467pub struct Ext4FallocateExitFtraceEvent {
11468    #[prost(uint64, optional, tag = "1")]
11469    pub dev: ::core::option::Option<u64>,
11470    #[prost(uint64, optional, tag = "2")]
11471    pub ino: ::core::option::Option<u64>,
11472    #[prost(int64, optional, tag = "3")]
11473    pub pos: ::core::option::Option<i64>,
11474    #[prost(uint32, optional, tag = "4")]
11475    pub blocks: ::core::option::Option<u32>,
11476    #[prost(int32, optional, tag = "5")]
11477    pub ret: ::core::option::Option<i32>,
11478}
11479#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11480pub struct Ext4FindDelallocRangeFtraceEvent {
11481    #[prost(uint64, optional, tag = "1")]
11482    pub dev: ::core::option::Option<u64>,
11483    #[prost(uint64, optional, tag = "2")]
11484    pub ino: ::core::option::Option<u64>,
11485    #[prost(uint32, optional, tag = "3")]
11486    pub from: ::core::option::Option<u32>,
11487    #[prost(uint32, optional, tag = "4")]
11488    pub to: ::core::option::Option<u32>,
11489    #[prost(int32, optional, tag = "5")]
11490    pub reverse: ::core::option::Option<i32>,
11491    #[prost(int32, optional, tag = "6")]
11492    pub found: ::core::option::Option<i32>,
11493    #[prost(uint32, optional, tag = "7")]
11494    pub found_blk: ::core::option::Option<u32>,
11495}
11496#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11497pub struct Ext4ForgetFtraceEvent {
11498    #[prost(uint64, optional, tag = "1")]
11499    pub dev: ::core::option::Option<u64>,
11500    #[prost(uint64, optional, tag = "2")]
11501    pub ino: ::core::option::Option<u64>,
11502    #[prost(uint64, optional, tag = "3")]
11503    pub block: ::core::option::Option<u64>,
11504    #[prost(int32, optional, tag = "4")]
11505    pub is_metadata: ::core::option::Option<i32>,
11506    #[prost(uint32, optional, tag = "5")]
11507    pub mode: ::core::option::Option<u32>,
11508}
11509#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11510pub struct Ext4FreeBlocksFtraceEvent {
11511    #[prost(uint64, optional, tag = "1")]
11512    pub dev: ::core::option::Option<u64>,
11513    #[prost(uint64, optional, tag = "2")]
11514    pub ino: ::core::option::Option<u64>,
11515    #[prost(uint64, optional, tag = "3")]
11516    pub block: ::core::option::Option<u64>,
11517    #[prost(uint64, optional, tag = "4")]
11518    pub count: ::core::option::Option<u64>,
11519    #[prost(int32, optional, tag = "5")]
11520    pub flags: ::core::option::Option<i32>,
11521    #[prost(uint32, optional, tag = "6")]
11522    pub mode: ::core::option::Option<u32>,
11523}
11524#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11525pub struct Ext4FreeInodeFtraceEvent {
11526    #[prost(uint64, optional, tag = "1")]
11527    pub dev: ::core::option::Option<u64>,
11528    #[prost(uint64, optional, tag = "2")]
11529    pub ino: ::core::option::Option<u64>,
11530    #[prost(uint32, optional, tag = "3")]
11531    pub uid: ::core::option::Option<u32>,
11532    #[prost(uint32, optional, tag = "4")]
11533    pub gid: ::core::option::Option<u32>,
11534    #[prost(uint64, optional, tag = "5")]
11535    pub blocks: ::core::option::Option<u64>,
11536    #[prost(uint32, optional, tag = "6")]
11537    pub mode: ::core::option::Option<u32>,
11538}
11539#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11540pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
11541    #[prost(uint64, optional, tag = "1")]
11542    pub dev: ::core::option::Option<u64>,
11543    #[prost(uint32, optional, tag = "2")]
11544    pub flags: ::core::option::Option<u32>,
11545    #[prost(uint32, optional, tag = "3")]
11546    pub lblk: ::core::option::Option<u32>,
11547    #[prost(uint64, optional, tag = "4")]
11548    pub pblk: ::core::option::Option<u64>,
11549    #[prost(uint32, optional, tag = "5")]
11550    pub len: ::core::option::Option<u32>,
11551    #[prost(int32, optional, tag = "6")]
11552    pub ret: ::core::option::Option<i32>,
11553}
11554#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11555pub struct Ext4GetReservedClusterAllocFtraceEvent {
11556    #[prost(uint64, optional, tag = "1")]
11557    pub dev: ::core::option::Option<u64>,
11558    #[prost(uint64, optional, tag = "2")]
11559    pub ino: ::core::option::Option<u64>,
11560    #[prost(uint32, optional, tag = "3")]
11561    pub lblk: ::core::option::Option<u32>,
11562    #[prost(uint32, optional, tag = "4")]
11563    pub len: ::core::option::Option<u32>,
11564}
11565#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11566pub struct Ext4IndMapBlocksEnterFtraceEvent {
11567    #[prost(uint64, optional, tag = "1")]
11568    pub dev: ::core::option::Option<u64>,
11569    #[prost(uint64, optional, tag = "2")]
11570    pub ino: ::core::option::Option<u64>,
11571    #[prost(uint32, optional, tag = "3")]
11572    pub lblk: ::core::option::Option<u32>,
11573    #[prost(uint32, optional, tag = "4")]
11574    pub len: ::core::option::Option<u32>,
11575    #[prost(uint32, optional, tag = "5")]
11576    pub flags: ::core::option::Option<u32>,
11577}
11578#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11579pub struct Ext4IndMapBlocksExitFtraceEvent {
11580    #[prost(uint64, optional, tag = "1")]
11581    pub dev: ::core::option::Option<u64>,
11582    #[prost(uint64, optional, tag = "2")]
11583    pub ino: ::core::option::Option<u64>,
11584    #[prost(uint32, optional, tag = "3")]
11585    pub flags: ::core::option::Option<u32>,
11586    #[prost(uint64, optional, tag = "4")]
11587    pub pblk: ::core::option::Option<u64>,
11588    #[prost(uint32, optional, tag = "5")]
11589    pub lblk: ::core::option::Option<u32>,
11590    #[prost(uint32, optional, tag = "6")]
11591    pub len: ::core::option::Option<u32>,
11592    #[prost(uint32, optional, tag = "7")]
11593    pub mflags: ::core::option::Option<u32>,
11594    #[prost(int32, optional, tag = "8")]
11595    pub ret: ::core::option::Option<i32>,
11596}
11597#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11598pub struct Ext4InsertRangeFtraceEvent {
11599    #[prost(uint64, optional, tag = "1")]
11600    pub dev: ::core::option::Option<u64>,
11601    #[prost(uint64, optional, tag = "2")]
11602    pub ino: ::core::option::Option<u64>,
11603    #[prost(int64, optional, tag = "3")]
11604    pub offset: ::core::option::Option<i64>,
11605    #[prost(int64, optional, tag = "4")]
11606    pub len: ::core::option::Option<i64>,
11607}
11608#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11609pub struct Ext4InvalidatepageFtraceEvent {
11610    #[prost(uint64, optional, tag = "1")]
11611    pub dev: ::core::option::Option<u64>,
11612    #[prost(uint64, optional, tag = "2")]
11613    pub ino: ::core::option::Option<u64>,
11614    #[prost(uint64, optional, tag = "3")]
11615    pub index: ::core::option::Option<u64>,
11616    #[prost(uint64, optional, tag = "4")]
11617    pub offset: ::core::option::Option<u64>,
11618    #[prost(uint32, optional, tag = "5")]
11619    pub length: ::core::option::Option<u32>,
11620}
11621#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11622pub struct Ext4JournalStartFtraceEvent {
11623    #[prost(uint64, optional, tag = "1")]
11624    pub dev: ::core::option::Option<u64>,
11625    #[prost(uint64, optional, tag = "2")]
11626    pub ip: ::core::option::Option<u64>,
11627    #[prost(int32, optional, tag = "3")]
11628    pub blocks: ::core::option::Option<i32>,
11629    #[prost(int32, optional, tag = "4")]
11630    pub rsv_blocks: ::core::option::Option<i32>,
11631    #[prost(int32, optional, tag = "5")]
11632    pub nblocks: ::core::option::Option<i32>,
11633    #[prost(int32, optional, tag = "6")]
11634    pub revoke_creds: ::core::option::Option<i32>,
11635}
11636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11637pub struct Ext4JournalStartReservedFtraceEvent {
11638    #[prost(uint64, optional, tag = "1")]
11639    pub dev: ::core::option::Option<u64>,
11640    #[prost(uint64, optional, tag = "2")]
11641    pub ip: ::core::option::Option<u64>,
11642    #[prost(int32, optional, tag = "3")]
11643    pub blocks: ::core::option::Option<i32>,
11644}
11645#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11646pub struct Ext4JournalledInvalidatepageFtraceEvent {
11647    #[prost(uint64, optional, tag = "1")]
11648    pub dev: ::core::option::Option<u64>,
11649    #[prost(uint64, optional, tag = "2")]
11650    pub ino: ::core::option::Option<u64>,
11651    #[prost(uint64, optional, tag = "3")]
11652    pub index: ::core::option::Option<u64>,
11653    #[prost(uint64, optional, tag = "4")]
11654    pub offset: ::core::option::Option<u64>,
11655    #[prost(uint32, optional, tag = "5")]
11656    pub length: ::core::option::Option<u32>,
11657}
11658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11659pub struct Ext4JournalledWriteEndFtraceEvent {
11660    #[prost(uint64, optional, tag = "1")]
11661    pub dev: ::core::option::Option<u64>,
11662    #[prost(uint64, optional, tag = "2")]
11663    pub ino: ::core::option::Option<u64>,
11664    #[prost(int64, optional, tag = "3")]
11665    pub pos: ::core::option::Option<i64>,
11666    #[prost(uint32, optional, tag = "4")]
11667    pub len: ::core::option::Option<u32>,
11668    #[prost(uint32, optional, tag = "5")]
11669    pub copied: ::core::option::Option<u32>,
11670}
11671#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11672pub struct Ext4LoadInodeFtraceEvent {
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}
11678#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11679pub struct Ext4LoadInodeBitmapFtraceEvent {
11680    #[prost(uint64, optional, tag = "1")]
11681    pub dev: ::core::option::Option<u64>,
11682    #[prost(uint32, optional, tag = "2")]
11683    pub group: ::core::option::Option<u32>,
11684}
11685#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11686pub struct Ext4MarkInodeDirtyFtraceEvent {
11687    #[prost(uint64, optional, tag = "1")]
11688    pub dev: ::core::option::Option<u64>,
11689    #[prost(uint64, optional, tag = "2")]
11690    pub ino: ::core::option::Option<u64>,
11691    #[prost(uint64, optional, tag = "3")]
11692    pub ip: ::core::option::Option<u64>,
11693}
11694#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11695pub struct Ext4MbBitmapLoadFtraceEvent {
11696    #[prost(uint64, optional, tag = "1")]
11697    pub dev: ::core::option::Option<u64>,
11698    #[prost(uint32, optional, tag = "2")]
11699    pub group: ::core::option::Option<u32>,
11700}
11701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11702pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
11703    #[prost(uint64, optional, tag = "1")]
11704    pub dev: ::core::option::Option<u64>,
11705    #[prost(uint32, optional, tag = "2")]
11706    pub group: ::core::option::Option<u32>,
11707}
11708#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11709pub struct Ext4MbDiscardPreallocationsFtraceEvent {
11710    #[prost(uint64, optional, tag = "1")]
11711    pub dev: ::core::option::Option<u64>,
11712    #[prost(int32, optional, tag = "2")]
11713    pub needed: ::core::option::Option<i32>,
11714}
11715#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11716pub struct Ext4MbNewGroupPaFtraceEvent {
11717    #[prost(uint64, optional, tag = "1")]
11718    pub dev: ::core::option::Option<u64>,
11719    #[prost(uint64, optional, tag = "2")]
11720    pub ino: ::core::option::Option<u64>,
11721    #[prost(uint64, optional, tag = "3")]
11722    pub pa_pstart: ::core::option::Option<u64>,
11723    #[prost(uint64, optional, tag = "4")]
11724    pub pa_lstart: ::core::option::Option<u64>,
11725    #[prost(uint32, optional, tag = "5")]
11726    pub pa_len: ::core::option::Option<u32>,
11727}
11728#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11729pub struct Ext4MbNewInodePaFtraceEvent {
11730    #[prost(uint64, optional, tag = "1")]
11731    pub dev: ::core::option::Option<u64>,
11732    #[prost(uint64, optional, tag = "2")]
11733    pub ino: ::core::option::Option<u64>,
11734    #[prost(uint64, optional, tag = "3")]
11735    pub pa_pstart: ::core::option::Option<u64>,
11736    #[prost(uint64, optional, tag = "4")]
11737    pub pa_lstart: ::core::option::Option<u64>,
11738    #[prost(uint32, optional, tag = "5")]
11739    pub pa_len: ::core::option::Option<u32>,
11740}
11741#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11742pub struct Ext4MbReleaseGroupPaFtraceEvent {
11743    #[prost(uint64, optional, tag = "1")]
11744    pub dev: ::core::option::Option<u64>,
11745    #[prost(uint64, optional, tag = "2")]
11746    pub pa_pstart: ::core::option::Option<u64>,
11747    #[prost(uint32, optional, tag = "3")]
11748    pub pa_len: ::core::option::Option<u32>,
11749}
11750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11751pub struct Ext4MbReleaseInodePaFtraceEvent {
11752    #[prost(uint64, optional, tag = "1")]
11753    pub dev: ::core::option::Option<u64>,
11754    #[prost(uint64, optional, tag = "2")]
11755    pub ino: ::core::option::Option<u64>,
11756    #[prost(uint64, optional, tag = "3")]
11757    pub block: ::core::option::Option<u64>,
11758    #[prost(uint32, optional, tag = "4")]
11759    pub count: ::core::option::Option<u32>,
11760}
11761#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11762pub struct Ext4MballocAllocFtraceEvent {
11763    #[prost(uint64, optional, tag = "1")]
11764    pub dev: ::core::option::Option<u64>,
11765    #[prost(uint64, optional, tag = "2")]
11766    pub ino: ::core::option::Option<u64>,
11767    #[prost(uint32, optional, tag = "3")]
11768    pub orig_logical: ::core::option::Option<u32>,
11769    #[prost(int32, optional, tag = "4")]
11770    pub orig_start: ::core::option::Option<i32>,
11771    #[prost(uint32, optional, tag = "5")]
11772    pub orig_group: ::core::option::Option<u32>,
11773    #[prost(int32, optional, tag = "6")]
11774    pub orig_len: ::core::option::Option<i32>,
11775    #[prost(uint32, optional, tag = "7")]
11776    pub goal_logical: ::core::option::Option<u32>,
11777    #[prost(int32, optional, tag = "8")]
11778    pub goal_start: ::core::option::Option<i32>,
11779    #[prost(uint32, optional, tag = "9")]
11780    pub goal_group: ::core::option::Option<u32>,
11781    #[prost(int32, optional, tag = "10")]
11782    pub goal_len: ::core::option::Option<i32>,
11783    #[prost(uint32, optional, tag = "11")]
11784    pub result_logical: ::core::option::Option<u32>,
11785    #[prost(int32, optional, tag = "12")]
11786    pub result_start: ::core::option::Option<i32>,
11787    #[prost(uint32, optional, tag = "13")]
11788    pub result_group: ::core::option::Option<u32>,
11789    #[prost(int32, optional, tag = "14")]
11790    pub result_len: ::core::option::Option<i32>,
11791    #[prost(uint32, optional, tag = "15")]
11792    pub found: ::core::option::Option<u32>,
11793    #[prost(uint32, optional, tag = "16")]
11794    pub groups: ::core::option::Option<u32>,
11795    #[prost(uint32, optional, tag = "17")]
11796    pub buddy: ::core::option::Option<u32>,
11797    #[prost(uint32, optional, tag = "18")]
11798    pub flags: ::core::option::Option<u32>,
11799    #[prost(uint32, optional, tag = "19")]
11800    pub tail: ::core::option::Option<u32>,
11801    #[prost(uint32, optional, tag = "20")]
11802    pub cr: ::core::option::Option<u32>,
11803}
11804#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11805pub struct Ext4MballocDiscardFtraceEvent {
11806    #[prost(uint64, optional, tag = "1")]
11807    pub dev: ::core::option::Option<u64>,
11808    #[prost(uint64, optional, tag = "2")]
11809    pub ino: ::core::option::Option<u64>,
11810    #[prost(int32, optional, tag = "3")]
11811    pub result_start: ::core::option::Option<i32>,
11812    #[prost(uint32, optional, tag = "4")]
11813    pub result_group: ::core::option::Option<u32>,
11814    #[prost(int32, optional, tag = "5")]
11815    pub result_len: ::core::option::Option<i32>,
11816}
11817#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11818pub struct Ext4MballocFreeFtraceEvent {
11819    #[prost(uint64, optional, tag = "1")]
11820    pub dev: ::core::option::Option<u64>,
11821    #[prost(uint64, optional, tag = "2")]
11822    pub ino: ::core::option::Option<u64>,
11823    #[prost(int32, optional, tag = "3")]
11824    pub result_start: ::core::option::Option<i32>,
11825    #[prost(uint32, optional, tag = "4")]
11826    pub result_group: ::core::option::Option<u32>,
11827    #[prost(int32, optional, tag = "5")]
11828    pub result_len: ::core::option::Option<i32>,
11829}
11830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11831pub struct Ext4MballocPreallocFtraceEvent {
11832    #[prost(uint64, optional, tag = "1")]
11833    pub dev: ::core::option::Option<u64>,
11834    #[prost(uint64, optional, tag = "2")]
11835    pub ino: ::core::option::Option<u64>,
11836    #[prost(uint32, optional, tag = "3")]
11837    pub orig_logical: ::core::option::Option<u32>,
11838    #[prost(int32, optional, tag = "4")]
11839    pub orig_start: ::core::option::Option<i32>,
11840    #[prost(uint32, optional, tag = "5")]
11841    pub orig_group: ::core::option::Option<u32>,
11842    #[prost(int32, optional, tag = "6")]
11843    pub orig_len: ::core::option::Option<i32>,
11844    #[prost(uint32, optional, tag = "7")]
11845    pub result_logical: ::core::option::Option<u32>,
11846    #[prost(int32, optional, tag = "8")]
11847    pub result_start: ::core::option::Option<i32>,
11848    #[prost(uint32, optional, tag = "9")]
11849    pub result_group: ::core::option::Option<u32>,
11850    #[prost(int32, optional, tag = "10")]
11851    pub result_len: ::core::option::Option<i32>,
11852}
11853#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11854pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
11855    #[prost(uint64, optional, tag = "1")]
11856    pub dev: ::core::option::Option<u64>,
11857    #[prost(uint64, optional, tag = "2")]
11858    pub ino: ::core::option::Option<u64>,
11859    #[prost(uint64, optional, tag = "3")]
11860    pub orig_ino: ::core::option::Option<u64>,
11861    #[prost(uint32, optional, tag = "4")]
11862    pub uid: ::core::option::Option<u32>,
11863    #[prost(uint32, optional, tag = "5")]
11864    pub gid: ::core::option::Option<u32>,
11865    #[prost(uint32, optional, tag = "6")]
11866    pub mode: ::core::option::Option<u32>,
11867}
11868#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11869pub struct Ext4PunchHoleFtraceEvent {
11870    #[prost(uint64, optional, tag = "1")]
11871    pub dev: ::core::option::Option<u64>,
11872    #[prost(uint64, optional, tag = "2")]
11873    pub ino: ::core::option::Option<u64>,
11874    #[prost(int64, optional, tag = "3")]
11875    pub offset: ::core::option::Option<i64>,
11876    #[prost(int64, optional, tag = "4")]
11877    pub len: ::core::option::Option<i64>,
11878    #[prost(int32, optional, tag = "5")]
11879    pub mode: ::core::option::Option<i32>,
11880}
11881#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11882pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
11883    #[prost(uint64, optional, tag = "1")]
11884    pub dev: ::core::option::Option<u64>,
11885    #[prost(uint32, optional, tag = "2")]
11886    pub group: ::core::option::Option<u32>,
11887    #[prost(uint32, optional, tag = "3")]
11888    pub prefetch: ::core::option::Option<u32>,
11889}
11890#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11891pub struct Ext4ReadpageFtraceEvent {
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 index: ::core::option::Option<u64>,
11898}
11899#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11900pub struct Ext4ReleasepageFtraceEvent {
11901    #[prost(uint64, optional, tag = "1")]
11902    pub dev: ::core::option::Option<u64>,
11903    #[prost(uint64, optional, tag = "2")]
11904    pub ino: ::core::option::Option<u64>,
11905    #[prost(uint64, optional, tag = "3")]
11906    pub index: ::core::option::Option<u64>,
11907}
11908#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11909pub struct Ext4RemoveBlocksFtraceEvent {
11910    #[prost(uint64, optional, tag = "1")]
11911    pub dev: ::core::option::Option<u64>,
11912    #[prost(uint64, optional, tag = "2")]
11913    pub ino: ::core::option::Option<u64>,
11914    #[prost(uint32, optional, tag = "3")]
11915    pub from: ::core::option::Option<u32>,
11916    #[prost(uint32, optional, tag = "4")]
11917    pub to: ::core::option::Option<u32>,
11918    #[prost(int64, optional, tag = "5")]
11919    pub partial: ::core::option::Option<i64>,
11920    #[prost(uint64, optional, tag = "6")]
11921    pub ee_pblk: ::core::option::Option<u64>,
11922    #[prost(uint32, optional, tag = "7")]
11923    pub ee_lblk: ::core::option::Option<u32>,
11924    #[prost(uint32, optional, tag = "8")]
11925    pub ee_len: ::core::option::Option<u32>,
11926    #[prost(uint32, optional, tag = "9")]
11927    pub pc_lblk: ::core::option::Option<u32>,
11928    #[prost(uint64, optional, tag = "10")]
11929    pub pc_pclu: ::core::option::Option<u64>,
11930    #[prost(int32, optional, tag = "11")]
11931    pub pc_state: ::core::option::Option<i32>,
11932}
11933#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11934pub struct Ext4RequestBlocksFtraceEvent {
11935    #[prost(uint64, optional, tag = "1")]
11936    pub dev: ::core::option::Option<u64>,
11937    #[prost(uint64, optional, tag = "2")]
11938    pub ino: ::core::option::Option<u64>,
11939    #[prost(uint32, optional, tag = "3")]
11940    pub len: ::core::option::Option<u32>,
11941    #[prost(uint32, optional, tag = "4")]
11942    pub logical: ::core::option::Option<u32>,
11943    #[prost(uint32, optional, tag = "5")]
11944    pub lleft: ::core::option::Option<u32>,
11945    #[prost(uint32, optional, tag = "6")]
11946    pub lright: ::core::option::Option<u32>,
11947    #[prost(uint64, optional, tag = "7")]
11948    pub goal: ::core::option::Option<u64>,
11949    #[prost(uint64, optional, tag = "8")]
11950    pub pleft: ::core::option::Option<u64>,
11951    #[prost(uint64, optional, tag = "9")]
11952    pub pright: ::core::option::Option<u64>,
11953    #[prost(uint32, optional, tag = "10")]
11954    pub flags: ::core::option::Option<u32>,
11955}
11956#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11957pub struct Ext4RequestInodeFtraceEvent {
11958    #[prost(uint64, optional, tag = "1")]
11959    pub dev: ::core::option::Option<u64>,
11960    #[prost(uint64, optional, tag = "2")]
11961    pub dir: ::core::option::Option<u64>,
11962    #[prost(uint32, optional, tag = "3")]
11963    pub mode: ::core::option::Option<u32>,
11964}
11965#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11966pub struct Ext4SyncFsFtraceEvent {
11967    #[prost(uint64, optional, tag = "1")]
11968    pub dev: ::core::option::Option<u64>,
11969    #[prost(int32, optional, tag = "2")]
11970    pub wait: ::core::option::Option<i32>,
11971}
11972#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11973pub struct Ext4TrimAllFreeFtraceEvent {
11974    #[prost(int32, optional, tag = "1")]
11975    pub dev_major: ::core::option::Option<i32>,
11976    #[prost(int32, optional, tag = "2")]
11977    pub dev_minor: ::core::option::Option<i32>,
11978    #[prost(uint32, optional, tag = "3")]
11979    pub group: ::core::option::Option<u32>,
11980    #[prost(int32, optional, tag = "4")]
11981    pub start: ::core::option::Option<i32>,
11982    #[prost(int32, optional, tag = "5")]
11983    pub len: ::core::option::Option<i32>,
11984}
11985#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11986pub struct Ext4TrimExtentFtraceEvent {
11987    #[prost(int32, optional, tag = "1")]
11988    pub dev_major: ::core::option::Option<i32>,
11989    #[prost(int32, optional, tag = "2")]
11990    pub dev_minor: ::core::option::Option<i32>,
11991    #[prost(uint32, optional, tag = "3")]
11992    pub group: ::core::option::Option<u32>,
11993    #[prost(int32, optional, tag = "4")]
11994    pub start: ::core::option::Option<i32>,
11995    #[prost(int32, optional, tag = "5")]
11996    pub len: ::core::option::Option<i32>,
11997}
11998#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11999pub struct Ext4TruncateEnterFtraceEvent {
12000    #[prost(uint64, optional, tag = "1")]
12001    pub dev: ::core::option::Option<u64>,
12002    #[prost(uint64, optional, tag = "2")]
12003    pub ino: ::core::option::Option<u64>,
12004    #[prost(uint64, optional, tag = "3")]
12005    pub blocks: ::core::option::Option<u64>,
12006}
12007#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12008pub struct Ext4TruncateExitFtraceEvent {
12009    #[prost(uint64, optional, tag = "1")]
12010    pub dev: ::core::option::Option<u64>,
12011    #[prost(uint64, optional, tag = "2")]
12012    pub ino: ::core::option::Option<u64>,
12013    #[prost(uint64, optional, tag = "3")]
12014    pub blocks: ::core::option::Option<u64>,
12015}
12016#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12017pub struct Ext4UnlinkEnterFtraceEvent {
12018    #[prost(uint64, optional, tag = "1")]
12019    pub dev: ::core::option::Option<u64>,
12020    #[prost(uint64, optional, tag = "2")]
12021    pub ino: ::core::option::Option<u64>,
12022    #[prost(uint64, optional, tag = "3")]
12023    pub parent: ::core::option::Option<u64>,
12024    #[prost(int64, optional, tag = "4")]
12025    pub size: ::core::option::Option<i64>,
12026}
12027#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12028pub struct Ext4UnlinkExitFtraceEvent {
12029    #[prost(uint64, optional, tag = "1")]
12030    pub dev: ::core::option::Option<u64>,
12031    #[prost(uint64, optional, tag = "2")]
12032    pub ino: ::core::option::Option<u64>,
12033    #[prost(int32, optional, tag = "3")]
12034    pub ret: ::core::option::Option<i32>,
12035}
12036#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12037pub struct Ext4WriteBeginFtraceEvent {
12038    #[prost(uint64, optional, tag = "1")]
12039    pub dev: ::core::option::Option<u64>,
12040    #[prost(uint64, optional, tag = "2")]
12041    pub ino: ::core::option::Option<u64>,
12042    #[prost(int64, optional, tag = "3")]
12043    pub pos: ::core::option::Option<i64>,
12044    #[prost(uint32, optional, tag = "4")]
12045    pub len: ::core::option::Option<u32>,
12046    #[prost(uint32, optional, tag = "5")]
12047    pub flags: ::core::option::Option<u32>,
12048}
12049#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12050pub struct Ext4WriteEndFtraceEvent {
12051    #[prost(uint64, optional, tag = "1")]
12052    pub dev: ::core::option::Option<u64>,
12053    #[prost(uint64, optional, tag = "2")]
12054    pub ino: ::core::option::Option<u64>,
12055    #[prost(int64, optional, tag = "3")]
12056    pub pos: ::core::option::Option<i64>,
12057    #[prost(uint32, optional, tag = "4")]
12058    pub len: ::core::option::Option<u32>,
12059    #[prost(uint32, optional, tag = "5")]
12060    pub copied: ::core::option::Option<u32>,
12061}
12062#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12063pub struct Ext4WritepageFtraceEvent {
12064    #[prost(uint64, optional, tag = "1")]
12065    pub dev: ::core::option::Option<u64>,
12066    #[prost(uint64, optional, tag = "2")]
12067    pub ino: ::core::option::Option<u64>,
12068    #[prost(uint64, optional, tag = "3")]
12069    pub index: ::core::option::Option<u64>,
12070}
12071#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12072pub struct Ext4WritepagesFtraceEvent {
12073    #[prost(uint64, optional, tag = "1")]
12074    pub dev: ::core::option::Option<u64>,
12075    #[prost(uint64, optional, tag = "2")]
12076    pub ino: ::core::option::Option<u64>,
12077    #[prost(int64, optional, tag = "3")]
12078    pub nr_to_write: ::core::option::Option<i64>,
12079    #[prost(int64, optional, tag = "4")]
12080    pub pages_skipped: ::core::option::Option<i64>,
12081    #[prost(int64, optional, tag = "5")]
12082    pub range_start: ::core::option::Option<i64>,
12083    #[prost(int64, optional, tag = "6")]
12084    pub range_end: ::core::option::Option<i64>,
12085    #[prost(uint64, optional, tag = "7")]
12086    pub writeback_index: ::core::option::Option<u64>,
12087    #[prost(int32, optional, tag = "8")]
12088    pub sync_mode: ::core::option::Option<i32>,
12089    #[prost(uint32, optional, tag = "9")]
12090    pub for_kupdate: ::core::option::Option<u32>,
12091    #[prost(uint32, optional, tag = "10")]
12092    pub range_cyclic: ::core::option::Option<u32>,
12093}
12094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12095pub struct Ext4WritepagesResultFtraceEvent {
12096    #[prost(uint64, optional, tag = "1")]
12097    pub dev: ::core::option::Option<u64>,
12098    #[prost(uint64, optional, tag = "2")]
12099    pub ino: ::core::option::Option<u64>,
12100    #[prost(int32, optional, tag = "3")]
12101    pub ret: ::core::option::Option<i32>,
12102    #[prost(int32, optional, tag = "4")]
12103    pub pages_written: ::core::option::Option<i32>,
12104    #[prost(int64, optional, tag = "5")]
12105    pub pages_skipped: ::core::option::Option<i64>,
12106    #[prost(uint64, optional, tag = "6")]
12107    pub writeback_index: ::core::option::Option<u64>,
12108    #[prost(int32, optional, tag = "7")]
12109    pub sync_mode: ::core::option::Option<i32>,
12110}
12111#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12112pub struct Ext4ZeroRangeFtraceEvent {
12113    #[prost(uint64, optional, tag = "1")]
12114    pub dev: ::core::option::Option<u64>,
12115    #[prost(uint64, optional, tag = "2")]
12116    pub ino: ::core::option::Option<u64>,
12117    #[prost(int64, optional, tag = "3")]
12118    pub offset: ::core::option::Option<i64>,
12119    #[prost(int64, optional, tag = "4")]
12120    pub len: ::core::option::Option<i64>,
12121    #[prost(int32, optional, tag = "5")]
12122    pub mode: ::core::option::Option<i32>,
12123}
12124#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12125pub struct F2fsDoSubmitBioFtraceEvent {
12126    #[prost(uint64, optional, tag = "1")]
12127    pub dev: ::core::option::Option<u64>,
12128    #[prost(int32, optional, tag = "2")]
12129    pub btype: ::core::option::Option<i32>,
12130    #[prost(uint32, optional, tag = "3")]
12131    pub sync: ::core::option::Option<u32>,
12132    #[prost(uint64, optional, tag = "4")]
12133    pub sector: ::core::option::Option<u64>,
12134    #[prost(uint32, optional, tag = "5")]
12135    pub size: ::core::option::Option<u32>,
12136}
12137#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12138pub struct F2fsEvictInodeFtraceEvent {
12139    #[prost(uint64, optional, tag = "1")]
12140    pub dev: ::core::option::Option<u64>,
12141    #[prost(uint64, optional, tag = "2")]
12142    pub ino: ::core::option::Option<u64>,
12143    #[prost(uint64, optional, tag = "3")]
12144    pub pino: ::core::option::Option<u64>,
12145    #[prost(uint32, optional, tag = "4")]
12146    pub mode: ::core::option::Option<u32>,
12147    #[prost(int64, optional, tag = "5")]
12148    pub size: ::core::option::Option<i64>,
12149    #[prost(uint32, optional, tag = "6")]
12150    pub nlink: ::core::option::Option<u32>,
12151    #[prost(uint64, optional, tag = "7")]
12152    pub blocks: ::core::option::Option<u64>,
12153    #[prost(uint32, optional, tag = "8")]
12154    pub advise: ::core::option::Option<u32>,
12155}
12156#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12157pub struct F2fsFallocateFtraceEvent {
12158    #[prost(uint64, optional, tag = "1")]
12159    pub dev: ::core::option::Option<u64>,
12160    #[prost(uint64, optional, tag = "2")]
12161    pub ino: ::core::option::Option<u64>,
12162    #[prost(int32, optional, tag = "3")]
12163    pub mode: ::core::option::Option<i32>,
12164    #[prost(int64, optional, tag = "4")]
12165    pub offset: ::core::option::Option<i64>,
12166    #[prost(int64, optional, tag = "5")]
12167    pub len: ::core::option::Option<i64>,
12168    #[prost(int64, optional, tag = "6")]
12169    pub size: ::core::option::Option<i64>,
12170    #[prost(uint64, optional, tag = "7")]
12171    pub blocks: ::core::option::Option<u64>,
12172    #[prost(int32, optional, tag = "8")]
12173    pub ret: ::core::option::Option<i32>,
12174}
12175#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12176pub struct F2fsGetDataBlockFtraceEvent {
12177    #[prost(uint64, optional, tag = "1")]
12178    pub dev: ::core::option::Option<u64>,
12179    #[prost(uint64, optional, tag = "2")]
12180    pub ino: ::core::option::Option<u64>,
12181    #[prost(uint64, optional, tag = "3")]
12182    pub iblock: ::core::option::Option<u64>,
12183    #[prost(uint64, optional, tag = "4")]
12184    pub bh_start: ::core::option::Option<u64>,
12185    #[prost(uint64, optional, tag = "5")]
12186    pub bh_size: ::core::option::Option<u64>,
12187    #[prost(int32, optional, tag = "6")]
12188    pub ret: ::core::option::Option<i32>,
12189}
12190#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12191pub struct F2fsGetVictimFtraceEvent {
12192    #[prost(uint64, optional, tag = "1")]
12193    pub dev: ::core::option::Option<u64>,
12194    #[prost(int32, optional, tag = "2")]
12195    pub r#type: ::core::option::Option<i32>,
12196    #[prost(int32, optional, tag = "3")]
12197    pub gc_type: ::core::option::Option<i32>,
12198    #[prost(int32, optional, tag = "4")]
12199    pub alloc_mode: ::core::option::Option<i32>,
12200    #[prost(int32, optional, tag = "5")]
12201    pub gc_mode: ::core::option::Option<i32>,
12202    #[prost(uint32, optional, tag = "6")]
12203    pub victim: ::core::option::Option<u32>,
12204    #[prost(uint32, optional, tag = "7")]
12205    pub ofs_unit: ::core::option::Option<u32>,
12206    #[prost(uint32, optional, tag = "8")]
12207    pub pre_victim: ::core::option::Option<u32>,
12208    #[prost(uint32, optional, tag = "9")]
12209    pub prefree: ::core::option::Option<u32>,
12210    #[prost(uint32, optional, tag = "10")]
12211    pub free: ::core::option::Option<u32>,
12212    #[prost(uint32, optional, tag = "11")]
12213    pub cost: ::core::option::Option<u32>,
12214}
12215#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12216pub struct F2fsIgetFtraceEvent {
12217    #[prost(uint64, optional, tag = "1")]
12218    pub dev: ::core::option::Option<u64>,
12219    #[prost(uint64, optional, tag = "2")]
12220    pub ino: ::core::option::Option<u64>,
12221    #[prost(uint64, optional, tag = "3")]
12222    pub pino: ::core::option::Option<u64>,
12223    #[prost(uint32, optional, tag = "4")]
12224    pub mode: ::core::option::Option<u32>,
12225    #[prost(int64, optional, tag = "5")]
12226    pub size: ::core::option::Option<i64>,
12227    #[prost(uint32, optional, tag = "6")]
12228    pub nlink: ::core::option::Option<u32>,
12229    #[prost(uint64, optional, tag = "7")]
12230    pub blocks: ::core::option::Option<u64>,
12231    #[prost(uint32, optional, tag = "8")]
12232    pub advise: ::core::option::Option<u32>,
12233}
12234#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12235pub struct F2fsIgetExitFtraceEvent {
12236    #[prost(uint64, optional, tag = "1")]
12237    pub dev: ::core::option::Option<u64>,
12238    #[prost(uint64, optional, tag = "2")]
12239    pub ino: ::core::option::Option<u64>,
12240    #[prost(int32, optional, tag = "3")]
12241    pub ret: ::core::option::Option<i32>,
12242}
12243#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12244pub struct F2fsNewInodeFtraceEvent {
12245    #[prost(uint64, optional, tag = "1")]
12246    pub dev: ::core::option::Option<u64>,
12247    #[prost(uint64, optional, tag = "2")]
12248    pub ino: ::core::option::Option<u64>,
12249    #[prost(int32, optional, tag = "3")]
12250    pub ret: ::core::option::Option<i32>,
12251}
12252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12253pub struct F2fsReadpageFtraceEvent {
12254    #[prost(uint64, optional, tag = "1")]
12255    pub dev: ::core::option::Option<u64>,
12256    #[prost(uint64, optional, tag = "2")]
12257    pub ino: ::core::option::Option<u64>,
12258    #[prost(uint64, optional, tag = "3")]
12259    pub index: ::core::option::Option<u64>,
12260    #[prost(uint64, optional, tag = "4")]
12261    pub blkaddr: ::core::option::Option<u64>,
12262    #[prost(int32, optional, tag = "5")]
12263    pub r#type: ::core::option::Option<i32>,
12264    #[prost(int32, optional, tag = "6")]
12265    pub dir: ::core::option::Option<i32>,
12266    #[prost(int32, optional, tag = "7")]
12267    pub dirty: ::core::option::Option<i32>,
12268    #[prost(int32, optional, tag = "8")]
12269    pub uptodate: ::core::option::Option<i32>,
12270}
12271#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12272pub struct F2fsReserveNewBlockFtraceEvent {
12273    #[prost(uint64, optional, tag = "1")]
12274    pub dev: ::core::option::Option<u64>,
12275    #[prost(uint32, optional, tag = "2")]
12276    pub nid: ::core::option::Option<u32>,
12277    #[prost(uint32, optional, tag = "3")]
12278    pub ofs_in_node: ::core::option::Option<u32>,
12279}
12280#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12281pub struct F2fsSetPageDirtyFtraceEvent {
12282    #[prost(uint64, optional, tag = "1")]
12283    pub dev: ::core::option::Option<u64>,
12284    #[prost(uint64, optional, tag = "2")]
12285    pub ino: ::core::option::Option<u64>,
12286    #[prost(int32, optional, tag = "3")]
12287    pub r#type: ::core::option::Option<i32>,
12288    #[prost(int32, optional, tag = "4")]
12289    pub dir: ::core::option::Option<i32>,
12290    #[prost(uint64, optional, tag = "5")]
12291    pub index: ::core::option::Option<u64>,
12292    #[prost(int32, optional, tag = "6")]
12293    pub dirty: ::core::option::Option<i32>,
12294    #[prost(int32, optional, tag = "7")]
12295    pub uptodate: ::core::option::Option<i32>,
12296}
12297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12298pub struct F2fsSubmitWritePageFtraceEvent {
12299    #[prost(uint64, optional, tag = "1")]
12300    pub dev: ::core::option::Option<u64>,
12301    #[prost(uint64, optional, tag = "2")]
12302    pub ino: ::core::option::Option<u64>,
12303    #[prost(int32, optional, tag = "3")]
12304    pub r#type: ::core::option::Option<i32>,
12305    #[prost(uint64, optional, tag = "4")]
12306    pub index: ::core::option::Option<u64>,
12307    #[prost(uint32, optional, tag = "5")]
12308    pub block: ::core::option::Option<u32>,
12309}
12310#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12311pub struct F2fsSyncFileEnterFtraceEvent {
12312    #[prost(uint64, optional, tag = "1")]
12313    pub dev: ::core::option::Option<u64>,
12314    #[prost(uint64, optional, tag = "2")]
12315    pub ino: ::core::option::Option<u64>,
12316    #[prost(uint64, optional, tag = "3")]
12317    pub pino: ::core::option::Option<u64>,
12318    #[prost(uint32, optional, tag = "4")]
12319    pub mode: ::core::option::Option<u32>,
12320    #[prost(int64, optional, tag = "5")]
12321    pub size: ::core::option::Option<i64>,
12322    #[prost(uint32, optional, tag = "6")]
12323    pub nlink: ::core::option::Option<u32>,
12324    #[prost(uint64, optional, tag = "7")]
12325    pub blocks: ::core::option::Option<u64>,
12326    #[prost(uint32, optional, tag = "8")]
12327    pub advise: ::core::option::Option<u32>,
12328}
12329#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12330pub struct F2fsSyncFileExitFtraceEvent {
12331    #[prost(uint64, optional, tag = "1")]
12332    pub dev: ::core::option::Option<u64>,
12333    #[prost(uint64, optional, tag = "2")]
12334    pub ino: ::core::option::Option<u64>,
12335    #[prost(uint32, optional, tag = "3")]
12336    pub need_cp: ::core::option::Option<u32>,
12337    #[prost(int32, optional, tag = "4")]
12338    pub datasync: ::core::option::Option<i32>,
12339    #[prost(int32, optional, tag = "5")]
12340    pub ret: ::core::option::Option<i32>,
12341    #[prost(int32, optional, tag = "6")]
12342    pub cp_reason: ::core::option::Option<i32>,
12343}
12344#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12345pub struct F2fsSyncFsFtraceEvent {
12346    #[prost(uint64, optional, tag = "1")]
12347    pub dev: ::core::option::Option<u64>,
12348    #[prost(int32, optional, tag = "2")]
12349    pub dirty: ::core::option::Option<i32>,
12350    #[prost(int32, optional, tag = "3")]
12351    pub wait: ::core::option::Option<i32>,
12352}
12353#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12354pub struct F2fsTruncateFtraceEvent {
12355    #[prost(uint64, optional, tag = "1")]
12356    pub dev: ::core::option::Option<u64>,
12357    #[prost(uint64, optional, tag = "2")]
12358    pub ino: ::core::option::Option<u64>,
12359    #[prost(uint64, optional, tag = "3")]
12360    pub pino: ::core::option::Option<u64>,
12361    #[prost(uint32, optional, tag = "4")]
12362    pub mode: ::core::option::Option<u32>,
12363    #[prost(int64, optional, tag = "5")]
12364    pub size: ::core::option::Option<i64>,
12365    #[prost(uint32, optional, tag = "6")]
12366    pub nlink: ::core::option::Option<u32>,
12367    #[prost(uint64, optional, tag = "7")]
12368    pub blocks: ::core::option::Option<u64>,
12369    #[prost(uint32, optional, tag = "8")]
12370    pub advise: ::core::option::Option<u32>,
12371}
12372#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12373pub struct F2fsTruncateBlocksEnterFtraceEvent {
12374    #[prost(uint64, optional, tag = "1")]
12375    pub dev: ::core::option::Option<u64>,
12376    #[prost(uint64, optional, tag = "2")]
12377    pub ino: ::core::option::Option<u64>,
12378    #[prost(int64, optional, tag = "3")]
12379    pub size: ::core::option::Option<i64>,
12380    #[prost(uint64, optional, tag = "4")]
12381    pub blocks: ::core::option::Option<u64>,
12382    #[prost(uint64, optional, tag = "5")]
12383    pub from: ::core::option::Option<u64>,
12384}
12385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12386pub struct F2fsTruncateBlocksExitFtraceEvent {
12387    #[prost(uint64, optional, tag = "1")]
12388    pub dev: ::core::option::Option<u64>,
12389    #[prost(uint64, optional, tag = "2")]
12390    pub ino: ::core::option::Option<u64>,
12391    #[prost(int32, optional, tag = "3")]
12392    pub ret: ::core::option::Option<i32>,
12393}
12394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12395pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
12396    #[prost(uint64, optional, tag = "1")]
12397    pub dev: ::core::option::Option<u64>,
12398    #[prost(uint64, optional, tag = "2")]
12399    pub ino: ::core::option::Option<u64>,
12400    #[prost(uint32, optional, tag = "3")]
12401    pub nid: ::core::option::Option<u32>,
12402    #[prost(uint32, optional, tag = "4")]
12403    pub ofs: ::core::option::Option<u32>,
12404    #[prost(int32, optional, tag = "5")]
12405    pub free: ::core::option::Option<i32>,
12406}
12407#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12408pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
12409    #[prost(uint64, optional, tag = "1")]
12410    pub dev: ::core::option::Option<u64>,
12411    #[prost(uint64, optional, tag = "2")]
12412    pub ino: ::core::option::Option<u64>,
12413    #[prost(int64, optional, tag = "3")]
12414    pub size: ::core::option::Option<i64>,
12415    #[prost(uint64, optional, tag = "4")]
12416    pub blocks: ::core::option::Option<u64>,
12417    #[prost(uint64, optional, tag = "5")]
12418    pub from: ::core::option::Option<u64>,
12419}
12420#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12421pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
12422    #[prost(uint64, optional, tag = "1")]
12423    pub dev: ::core::option::Option<u64>,
12424    #[prost(uint64, optional, tag = "2")]
12425    pub ino: ::core::option::Option<u64>,
12426    #[prost(int32, optional, tag = "3")]
12427    pub ret: ::core::option::Option<i32>,
12428}
12429#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12430pub struct F2fsTruncateNodeFtraceEvent {
12431    #[prost(uint64, optional, tag = "1")]
12432    pub dev: ::core::option::Option<u64>,
12433    #[prost(uint64, optional, tag = "2")]
12434    pub ino: ::core::option::Option<u64>,
12435    #[prost(uint32, optional, tag = "3")]
12436    pub nid: ::core::option::Option<u32>,
12437    #[prost(uint32, optional, tag = "4")]
12438    pub blk_addr: ::core::option::Option<u32>,
12439}
12440#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12441pub struct F2fsTruncateNodesEnterFtraceEvent {
12442    #[prost(uint64, optional, tag = "1")]
12443    pub dev: ::core::option::Option<u64>,
12444    #[prost(uint64, optional, tag = "2")]
12445    pub ino: ::core::option::Option<u64>,
12446    #[prost(uint32, optional, tag = "3")]
12447    pub nid: ::core::option::Option<u32>,
12448    #[prost(uint32, optional, tag = "4")]
12449    pub blk_addr: ::core::option::Option<u32>,
12450}
12451#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12452pub struct F2fsTruncateNodesExitFtraceEvent {
12453    #[prost(uint64, optional, tag = "1")]
12454    pub dev: ::core::option::Option<u64>,
12455    #[prost(uint64, optional, tag = "2")]
12456    pub ino: ::core::option::Option<u64>,
12457    #[prost(int32, optional, tag = "3")]
12458    pub ret: ::core::option::Option<i32>,
12459}
12460#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12461pub struct F2fsTruncatePartialNodesFtraceEvent {
12462    #[prost(uint64, optional, tag = "1")]
12463    pub dev: ::core::option::Option<u64>,
12464    #[prost(uint64, optional, tag = "2")]
12465    pub ino: ::core::option::Option<u64>,
12466    #[prost(uint32, optional, tag = "3")]
12467    pub nid: ::core::option::Option<u32>,
12468    #[prost(int32, optional, tag = "4")]
12469    pub depth: ::core::option::Option<i32>,
12470    #[prost(int32, optional, tag = "5")]
12471    pub err: ::core::option::Option<i32>,
12472}
12473#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12474pub struct F2fsUnlinkEnterFtraceEvent {
12475    #[prost(uint64, optional, tag = "1")]
12476    pub dev: ::core::option::Option<u64>,
12477    #[prost(uint64, optional, tag = "2")]
12478    pub ino: ::core::option::Option<u64>,
12479    #[prost(int64, optional, tag = "3")]
12480    pub size: ::core::option::Option<i64>,
12481    #[prost(uint64, optional, tag = "4")]
12482    pub blocks: ::core::option::Option<u64>,
12483    #[prost(string, optional, tag = "5")]
12484    pub name: ::core::option::Option<::prost::alloc::string::String>,
12485}
12486#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12487pub struct F2fsUnlinkExitFtraceEvent {
12488    #[prost(uint64, optional, tag = "1")]
12489    pub dev: ::core::option::Option<u64>,
12490    #[prost(uint64, optional, tag = "2")]
12491    pub ino: ::core::option::Option<u64>,
12492    #[prost(int32, optional, tag = "3")]
12493    pub ret: ::core::option::Option<i32>,
12494}
12495#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12496pub struct F2fsVmPageMkwriteFtraceEvent {
12497    #[prost(uint64, optional, tag = "1")]
12498    pub dev: ::core::option::Option<u64>,
12499    #[prost(uint64, optional, tag = "2")]
12500    pub ino: ::core::option::Option<u64>,
12501    #[prost(int32, optional, tag = "3")]
12502    pub r#type: ::core::option::Option<i32>,
12503    #[prost(int32, optional, tag = "4")]
12504    pub dir: ::core::option::Option<i32>,
12505    #[prost(uint64, optional, tag = "5")]
12506    pub index: ::core::option::Option<u64>,
12507    #[prost(int32, optional, tag = "6")]
12508    pub dirty: ::core::option::Option<i32>,
12509    #[prost(int32, optional, tag = "7")]
12510    pub uptodate: ::core::option::Option<i32>,
12511}
12512#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12513pub struct F2fsWriteBeginFtraceEvent {
12514    #[prost(uint64, optional, tag = "1")]
12515    pub dev: ::core::option::Option<u64>,
12516    #[prost(uint64, optional, tag = "2")]
12517    pub ino: ::core::option::Option<u64>,
12518    #[prost(int64, optional, tag = "3")]
12519    pub pos: ::core::option::Option<i64>,
12520    #[prost(uint32, optional, tag = "4")]
12521    pub len: ::core::option::Option<u32>,
12522    #[prost(uint32, optional, tag = "5")]
12523    pub flags: ::core::option::Option<u32>,
12524}
12525#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12526pub struct F2fsWriteCheckpointFtraceEvent {
12527    #[prost(uint64, optional, tag = "1")]
12528    pub dev: ::core::option::Option<u64>,
12529    #[prost(uint32, optional, tag = "2")]
12530    pub is_umount: ::core::option::Option<u32>,
12531    #[prost(string, optional, tag = "3")]
12532    pub msg: ::core::option::Option<::prost::alloc::string::String>,
12533    #[prost(int32, optional, tag = "4")]
12534    pub reason: ::core::option::Option<i32>,
12535    #[prost(uint32, optional, tag = "5")]
12536    pub phase: ::core::option::Option<u32>,
12537}
12538#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12539pub struct F2fsWriteEndFtraceEvent {
12540    #[prost(uint64, optional, tag = "1")]
12541    pub dev: ::core::option::Option<u64>,
12542    #[prost(uint64, optional, tag = "2")]
12543    pub ino: ::core::option::Option<u64>,
12544    #[prost(int64, optional, tag = "3")]
12545    pub pos: ::core::option::Option<i64>,
12546    #[prost(uint32, optional, tag = "4")]
12547    pub len: ::core::option::Option<u32>,
12548    #[prost(uint32, optional, tag = "5")]
12549    pub copied: ::core::option::Option<u32>,
12550}
12551#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12552pub struct F2fsIostatFtraceEvent {
12553    #[prost(uint64, optional, tag = "1")]
12554    pub app_bio: ::core::option::Option<u64>,
12555    #[prost(uint64, optional, tag = "2")]
12556    pub app_brio: ::core::option::Option<u64>,
12557    #[prost(uint64, optional, tag = "3")]
12558    pub app_dio: ::core::option::Option<u64>,
12559    #[prost(uint64, optional, tag = "4")]
12560    pub app_drio: ::core::option::Option<u64>,
12561    #[prost(uint64, optional, tag = "5")]
12562    pub app_mio: ::core::option::Option<u64>,
12563    #[prost(uint64, optional, tag = "6")]
12564    pub app_mrio: ::core::option::Option<u64>,
12565    #[prost(uint64, optional, tag = "7")]
12566    pub app_rio: ::core::option::Option<u64>,
12567    #[prost(uint64, optional, tag = "8")]
12568    pub app_wio: ::core::option::Option<u64>,
12569    #[prost(uint64, optional, tag = "9")]
12570    pub dev: ::core::option::Option<u64>,
12571    #[prost(uint64, optional, tag = "10")]
12572    pub fs_cdrio: ::core::option::Option<u64>,
12573    #[prost(uint64, optional, tag = "11")]
12574    pub fs_cp_dio: ::core::option::Option<u64>,
12575    #[prost(uint64, optional, tag = "12")]
12576    pub fs_cp_mio: ::core::option::Option<u64>,
12577    #[prost(uint64, optional, tag = "13")]
12578    pub fs_cp_nio: ::core::option::Option<u64>,
12579    #[prost(uint64, optional, tag = "14")]
12580    pub fs_dio: ::core::option::Option<u64>,
12581    #[prost(uint64, optional, tag = "15")]
12582    pub fs_discard: ::core::option::Option<u64>,
12583    #[prost(uint64, optional, tag = "16")]
12584    pub fs_drio: ::core::option::Option<u64>,
12585    #[prost(uint64, optional, tag = "17")]
12586    pub fs_gc_dio: ::core::option::Option<u64>,
12587    #[prost(uint64, optional, tag = "18")]
12588    pub fs_gc_nio: ::core::option::Option<u64>,
12589    #[prost(uint64, optional, tag = "19")]
12590    pub fs_gdrio: ::core::option::Option<u64>,
12591    #[prost(uint64, optional, tag = "20")]
12592    pub fs_mio: ::core::option::Option<u64>,
12593    #[prost(uint64, optional, tag = "21")]
12594    pub fs_mrio: ::core::option::Option<u64>,
12595    #[prost(uint64, optional, tag = "22")]
12596    pub fs_nio: ::core::option::Option<u64>,
12597    #[prost(uint64, optional, tag = "23")]
12598    pub fs_nrio: ::core::option::Option<u64>,
12599}
12600#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12601pub struct F2fsIostatLatencyFtraceEvent {
12602    #[prost(uint32, optional, tag = "1")]
12603    pub d_rd_avg: ::core::option::Option<u32>,
12604    #[prost(uint32, optional, tag = "2")]
12605    pub d_rd_cnt: ::core::option::Option<u32>,
12606    #[prost(uint32, optional, tag = "3")]
12607    pub d_rd_peak: ::core::option::Option<u32>,
12608    #[prost(uint32, optional, tag = "4")]
12609    pub d_wr_as_avg: ::core::option::Option<u32>,
12610    #[prost(uint32, optional, tag = "5")]
12611    pub d_wr_as_cnt: ::core::option::Option<u32>,
12612    #[prost(uint32, optional, tag = "6")]
12613    pub d_wr_as_peak: ::core::option::Option<u32>,
12614    #[prost(uint32, optional, tag = "7")]
12615    pub d_wr_s_avg: ::core::option::Option<u32>,
12616    #[prost(uint32, optional, tag = "8")]
12617    pub d_wr_s_cnt: ::core::option::Option<u32>,
12618    #[prost(uint32, optional, tag = "9")]
12619    pub d_wr_s_peak: ::core::option::Option<u32>,
12620    #[prost(uint64, optional, tag = "10")]
12621    pub dev: ::core::option::Option<u64>,
12622    #[prost(uint32, optional, tag = "11")]
12623    pub m_rd_avg: ::core::option::Option<u32>,
12624    #[prost(uint32, optional, tag = "12")]
12625    pub m_rd_cnt: ::core::option::Option<u32>,
12626    #[prost(uint32, optional, tag = "13")]
12627    pub m_rd_peak: ::core::option::Option<u32>,
12628    #[prost(uint32, optional, tag = "14")]
12629    pub m_wr_as_avg: ::core::option::Option<u32>,
12630    #[prost(uint32, optional, tag = "15")]
12631    pub m_wr_as_cnt: ::core::option::Option<u32>,
12632    #[prost(uint32, optional, tag = "16")]
12633    pub m_wr_as_peak: ::core::option::Option<u32>,
12634    #[prost(uint32, optional, tag = "17")]
12635    pub m_wr_s_avg: ::core::option::Option<u32>,
12636    #[prost(uint32, optional, tag = "18")]
12637    pub m_wr_s_cnt: ::core::option::Option<u32>,
12638    #[prost(uint32, optional, tag = "19")]
12639    pub m_wr_s_peak: ::core::option::Option<u32>,
12640    #[prost(uint32, optional, tag = "20")]
12641    pub n_rd_avg: ::core::option::Option<u32>,
12642    #[prost(uint32, optional, tag = "21")]
12643    pub n_rd_cnt: ::core::option::Option<u32>,
12644    #[prost(uint32, optional, tag = "22")]
12645    pub n_rd_peak: ::core::option::Option<u32>,
12646    #[prost(uint32, optional, tag = "23")]
12647    pub n_wr_as_avg: ::core::option::Option<u32>,
12648    #[prost(uint32, optional, tag = "24")]
12649    pub n_wr_as_cnt: ::core::option::Option<u32>,
12650    #[prost(uint32, optional, tag = "25")]
12651    pub n_wr_as_peak: ::core::option::Option<u32>,
12652    #[prost(uint32, optional, tag = "26")]
12653    pub n_wr_s_avg: ::core::option::Option<u32>,
12654    #[prost(uint32, optional, tag = "27")]
12655    pub n_wr_s_cnt: ::core::option::Option<u32>,
12656    #[prost(uint32, optional, tag = "28")]
12657    pub n_wr_s_peak: ::core::option::Option<u32>,
12658}
12659#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12660pub struct F2fsBackgroundGcFtraceEvent {
12661    #[prost(uint64, optional, tag = "1")]
12662    pub dev: ::core::option::Option<u64>,
12663    #[prost(uint32, optional, tag = "2")]
12664    pub wait_ms: ::core::option::Option<u32>,
12665    #[prost(uint32, optional, tag = "3")]
12666    pub prefree: ::core::option::Option<u32>,
12667    #[prost(uint32, optional, tag = "4")]
12668    pub free: ::core::option::Option<u32>,
12669}
12670#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12671pub struct F2fsGcBeginFtraceEvent {
12672    #[prost(uint64, optional, tag = "1")]
12673    pub dev: ::core::option::Option<u64>,
12674    #[prost(uint32, optional, tag = "2")]
12675    pub sync: ::core::option::Option<u32>,
12676    #[prost(uint32, optional, tag = "3")]
12677    pub background: ::core::option::Option<u32>,
12678    #[prost(int64, optional, tag = "4")]
12679    pub dirty_nodes: ::core::option::Option<i64>,
12680    #[prost(int64, optional, tag = "5")]
12681    pub dirty_dents: ::core::option::Option<i64>,
12682    #[prost(int64, optional, tag = "6")]
12683    pub dirty_imeta: ::core::option::Option<i64>,
12684    #[prost(uint32, optional, tag = "7")]
12685    pub free_sec: ::core::option::Option<u32>,
12686    #[prost(uint32, optional, tag = "8")]
12687    pub free_seg: ::core::option::Option<u32>,
12688    #[prost(int32, optional, tag = "9")]
12689    pub reserved_seg: ::core::option::Option<i32>,
12690    #[prost(uint32, optional, tag = "10")]
12691    pub prefree_seg: ::core::option::Option<u32>,
12692    #[prost(int32, optional, tag = "11")]
12693    pub gc_type: ::core::option::Option<i32>,
12694    #[prost(uint32, optional, tag = "12")]
12695    pub no_bg_gc: ::core::option::Option<u32>,
12696    #[prost(uint32, optional, tag = "13")]
12697    pub nr_free_secs: ::core::option::Option<u32>,
12698}
12699#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12700pub struct F2fsGcEndFtraceEvent {
12701    #[prost(uint64, optional, tag = "1")]
12702    pub dev: ::core::option::Option<u64>,
12703    #[prost(int32, optional, tag = "2")]
12704    pub ret: ::core::option::Option<i32>,
12705    #[prost(int32, optional, tag = "3")]
12706    pub seg_freed: ::core::option::Option<i32>,
12707    #[prost(int32, optional, tag = "4")]
12708    pub sec_freed: ::core::option::Option<i32>,
12709    #[prost(int64, optional, tag = "5")]
12710    pub dirty_nodes: ::core::option::Option<i64>,
12711    #[prost(int64, optional, tag = "6")]
12712    pub dirty_dents: ::core::option::Option<i64>,
12713    #[prost(int64, optional, tag = "7")]
12714    pub dirty_imeta: ::core::option::Option<i64>,
12715    #[prost(uint32, optional, tag = "8")]
12716    pub free_sec: ::core::option::Option<u32>,
12717    #[prost(uint32, optional, tag = "9")]
12718    pub free_seg: ::core::option::Option<u32>,
12719    #[prost(int32, optional, tag = "10")]
12720    pub reserved_seg: ::core::option::Option<i32>,
12721    #[prost(uint32, optional, tag = "11")]
12722    pub prefree_seg: ::core::option::Option<u32>,
12723}
12724#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12725pub struct F2fsLockElapsedTimeFtraceEvent {
12726    #[prost(uint64, optional, tag = "1")]
12727    pub dev: ::core::option::Option<u64>,
12728    #[prost(string, optional, tag = "2")]
12729    pub comm: ::core::option::Option<::prost::alloc::string::String>,
12730    #[prost(int32, optional, tag = "3")]
12731    pub pid: ::core::option::Option<i32>,
12732    #[prost(int32, optional, tag = "4")]
12733    pub prio: ::core::option::Option<i32>,
12734    #[prost(int32, optional, tag = "5")]
12735    pub ioprio_class: ::core::option::Option<i32>,
12736    #[prost(int32, optional, tag = "6")]
12737    pub ioprio_data: ::core::option::Option<i32>,
12738    #[prost(uint32, optional, tag = "7")]
12739    pub lock_name: ::core::option::Option<u32>,
12740    #[prost(uint32, optional, tag = "8")]
12741    pub is_write: ::core::option::Option<u32>,
12742    #[prost(uint64, optional, tag = "9")]
12743    pub total_time: ::core::option::Option<u64>,
12744    #[prost(uint64, optional, tag = "10")]
12745    pub running_time: ::core::option::Option<u64>,
12746    #[prost(uint64, optional, tag = "11")]
12747    pub runnable_time: ::core::option::Option<u64>,
12748    #[prost(uint64, optional, tag = "12")]
12749    pub io_sleep_time: ::core::option::Option<u64>,
12750    #[prost(uint64, optional, tag = "13")]
12751    pub other_time: ::core::option::Option<u64>,
12752}
12753#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12754pub struct FastrpcDmaStatFtraceEvent {
12755    #[prost(int32, optional, tag = "1")]
12756    pub cid: ::core::option::Option<i32>,
12757    #[prost(int64, optional, tag = "2")]
12758    pub len: ::core::option::Option<i64>,
12759    #[prost(uint64, optional, tag = "3")]
12760    pub total_allocated: ::core::option::Option<u64>,
12761}
12762#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12763pub struct FastrpcDmaFreeFtraceEvent {
12764    #[prost(int32, optional, tag = "1")]
12765    pub cid: ::core::option::Option<i32>,
12766    #[prost(uint64, optional, tag = "2")]
12767    pub phys: ::core::option::Option<u64>,
12768    #[prost(uint64, optional, tag = "3")]
12769    pub size: ::core::option::Option<u64>,
12770}
12771#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12772pub struct FastrpcDmaAllocFtraceEvent {
12773    #[prost(int32, optional, tag = "1")]
12774    pub cid: ::core::option::Option<i32>,
12775    #[prost(uint64, optional, tag = "2")]
12776    pub phys: ::core::option::Option<u64>,
12777    #[prost(uint64, optional, tag = "3")]
12778    pub size: ::core::option::Option<u64>,
12779    #[prost(uint64, optional, tag = "4")]
12780    pub attr: ::core::option::Option<u64>,
12781    #[prost(int32, optional, tag = "5")]
12782    pub mflags: ::core::option::Option<i32>,
12783}
12784#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12785pub struct FastrpcDmaUnmapFtraceEvent {
12786    #[prost(int32, optional, tag = "1")]
12787    pub cid: ::core::option::Option<i32>,
12788    #[prost(uint64, optional, tag = "2")]
12789    pub phys: ::core::option::Option<u64>,
12790    #[prost(uint64, optional, tag = "3")]
12791    pub size: ::core::option::Option<u64>,
12792}
12793#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12794pub struct FastrpcDmaMapFtraceEvent {
12795    #[prost(int32, optional, tag = "1")]
12796    pub cid: ::core::option::Option<i32>,
12797    #[prost(int32, optional, tag = "2")]
12798    pub fd: ::core::option::Option<i32>,
12799    #[prost(uint64, optional, tag = "3")]
12800    pub phys: ::core::option::Option<u64>,
12801    #[prost(uint64, optional, tag = "4")]
12802    pub size: ::core::option::Option<u64>,
12803    #[prost(uint64, optional, tag = "5")]
12804    pub len: ::core::option::Option<u64>,
12805    #[prost(uint32, optional, tag = "6")]
12806    pub attr: ::core::option::Option<u32>,
12807    #[prost(int32, optional, tag = "7")]
12808    pub mflags: ::core::option::Option<i32>,
12809}
12810#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12811pub struct FenceInitFtraceEvent {
12812    #[prost(uint32, optional, tag = "1")]
12813    pub context: ::core::option::Option<u32>,
12814    #[prost(string, optional, tag = "2")]
12815    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12816    #[prost(uint32, optional, tag = "3")]
12817    pub seqno: ::core::option::Option<u32>,
12818    #[prost(string, optional, tag = "4")]
12819    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12820}
12821#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12822pub struct FenceDestroyFtraceEvent {
12823    #[prost(uint32, optional, tag = "1")]
12824    pub context: ::core::option::Option<u32>,
12825    #[prost(string, optional, tag = "2")]
12826    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12827    #[prost(uint32, optional, tag = "3")]
12828    pub seqno: ::core::option::Option<u32>,
12829    #[prost(string, optional, tag = "4")]
12830    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12831}
12832#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12833pub struct FenceEnableSignalFtraceEvent {
12834    #[prost(uint32, optional, tag = "1")]
12835    pub context: ::core::option::Option<u32>,
12836    #[prost(string, optional, tag = "2")]
12837    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12838    #[prost(uint32, optional, tag = "3")]
12839    pub seqno: ::core::option::Option<u32>,
12840    #[prost(string, optional, tag = "4")]
12841    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12842}
12843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12844pub struct FenceSignaledFtraceEvent {
12845    #[prost(uint32, optional, tag = "1")]
12846    pub context: ::core::option::Option<u32>,
12847    #[prost(string, optional, tag = "2")]
12848    pub driver: ::core::option::Option<::prost::alloc::string::String>,
12849    #[prost(uint32, optional, tag = "3")]
12850    pub seqno: ::core::option::Option<u32>,
12851    #[prost(string, optional, tag = "4")]
12852    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
12853}
12854#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12855pub struct MmFilemapAddToPageCacheFtraceEvent {
12856    #[prost(uint64, optional, tag = "1")]
12857    pub pfn: ::core::option::Option<u64>,
12858    #[prost(uint64, optional, tag = "2")]
12859    pub i_ino: ::core::option::Option<u64>,
12860    #[prost(uint64, optional, tag = "3")]
12861    pub index: ::core::option::Option<u64>,
12862    #[prost(uint64, optional, tag = "4")]
12863    pub s_dev: ::core::option::Option<u64>,
12864    #[prost(uint64, optional, tag = "5")]
12865    pub page: ::core::option::Option<u64>,
12866}
12867#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12868pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
12869    #[prost(uint64, optional, tag = "1")]
12870    pub pfn: ::core::option::Option<u64>,
12871    #[prost(uint64, optional, tag = "2")]
12872    pub i_ino: ::core::option::Option<u64>,
12873    #[prost(uint64, optional, tag = "3")]
12874    pub index: ::core::option::Option<u64>,
12875    #[prost(uint64, optional, tag = "4")]
12876    pub s_dev: ::core::option::Option<u64>,
12877    #[prost(uint64, optional, tag = "5")]
12878    pub page: ::core::option::Option<u64>,
12879}
12880#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12881pub struct DoSysOpenFtraceEvent {
12882    #[prost(string, optional, tag = "1")]
12883    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12884    #[prost(int32, optional, tag = "2")]
12885    pub flags: ::core::option::Option<i32>,
12886    #[prost(int32, optional, tag = "3")]
12887    pub mode: ::core::option::Option<i32>,
12888}
12889#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12890pub struct OpenExecFtraceEvent {
12891    #[prost(string, optional, tag = "1")]
12892    pub filename: ::core::option::Option<::prost::alloc::string::String>,
12893}
12894#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12895pub struct PrintFtraceEvent {
12896    #[prost(uint64, optional, tag = "1")]
12897    pub ip: ::core::option::Option<u64>,
12898    #[prost(string, optional, tag = "2")]
12899    pub buf: ::core::option::Option<::prost::alloc::string::String>,
12900}
12901#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12902pub struct FuncgraphEntryFtraceEvent {
12903    #[prost(int32, optional, tag = "1")]
12904    pub depth: ::core::option::Option<i32>,
12905    #[prost(uint64, optional, tag = "2")]
12906    pub func: ::core::option::Option<u64>,
12907}
12908#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12909pub struct FuncgraphExitFtraceEvent {
12910    #[prost(uint64, optional, tag = "1")]
12911    pub calltime: ::core::option::Option<u64>,
12912    #[prost(int32, optional, tag = "2")]
12913    pub depth: ::core::option::Option<i32>,
12914    #[prost(uint64, optional, tag = "3")]
12915    pub func: ::core::option::Option<u64>,
12916    #[prost(uint64, optional, tag = "4")]
12917    pub overrun: ::core::option::Option<u64>,
12918    #[prost(uint64, optional, tag = "5")]
12919    pub rettime: ::core::option::Option<u64>,
12920}
12921#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12922pub struct FwtpPerfettoCounterFtraceEvent {
12923    #[prost(uint64, optional, tag = "1")]
12924    pub timestamp: ::core::option::Option<u64>,
12925    #[prost(uint32, optional, tag = "2")]
12926    pub track_id: ::core::option::Option<u32>,
12927    #[prost(string, optional, tag = "3")]
12928    pub category: ::core::option::Option<::prost::alloc::string::String>,
12929    #[prost(string, optional, tag = "4")]
12930    pub name: ::core::option::Option<::prost::alloc::string::String>,
12931    #[prost(uint32, optional, tag = "5")]
12932    pub value: ::core::option::Option<u32>,
12933}
12934#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12935pub struct FwtpPerfettoSliceFtraceEvent {
12936    #[prost(uint64, optional, tag = "1")]
12937    pub timestamp: ::core::option::Option<u64>,
12938    #[prost(uint32, optional, tag = "2")]
12939    pub track_id: ::core::option::Option<u32>,
12940    #[prost(string, optional, tag = "3")]
12941    pub category: ::core::option::Option<::prost::alloc::string::String>,
12942    #[prost(string, optional, tag = "4")]
12943    pub name: ::core::option::Option<::prost::alloc::string::String>,
12944    #[prost(uint32, optional, tag = "5")]
12945    pub begin: ::core::option::Option<u32>,
12946}
12947#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12948pub struct G2dTracingMarkWriteFtraceEvent {
12949    #[prost(int32, optional, tag = "1")]
12950    pub pid: ::core::option::Option<i32>,
12951    #[prost(string, optional, tag = "4")]
12952    pub name: ::core::option::Option<::prost::alloc::string::String>,
12953    #[prost(uint32, optional, tag = "5")]
12954    pub r#type: ::core::option::Option<u32>,
12955    #[prost(int32, optional, tag = "6")]
12956    pub value: ::core::option::Option<i32>,
12957}
12958/// This generic proto is used to output events in the trace
12959/// when a specific proto for that event does not exist.
12960#[derive(Clone, PartialEq, ::prost::Message)]
12961pub struct GenericFtraceEvent {
12962    #[prost(string, optional, tag = "1")]
12963    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
12964    #[prost(message, repeated, tag = "2")]
12965    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
12966}
12967/// Nested message and enum types in `GenericFtraceEvent`.
12968pub mod generic_ftrace_event {
12969    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12970    pub struct Field {
12971        #[prost(string, optional, tag = "1")]
12972        pub name: ::core::option::Option<::prost::alloc::string::String>,
12973        #[prost(oneof = "field::Value", tags = "3, 4, 5")]
12974        pub value: ::core::option::Option<field::Value>,
12975    }
12976    /// Nested message and enum types in `Field`.
12977    pub mod field {
12978        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
12979        pub enum Value {
12980            #[prost(string, tag = "3")]
12981            StrValue(::prost::alloc::string::String),
12982            #[prost(int64, tag = "4")]
12983            IntValue(i64),
12984            #[prost(uint64, tag = "5")]
12985            UintValue(u64),
12986        }
12987    }
12988}
12989#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12990pub struct KprobeEvent {
12991    #[prost(string, optional, tag = "1")]
12992    pub name: ::core::option::Option<::prost::alloc::string::String>,
12993    #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
12994    pub r#type: ::core::option::Option<i32>,
12995}
12996/// Nested message and enum types in `KprobeEvent`.
12997pub mod kprobe_event {
12998    #[derive(
12999        Clone,
13000        Copy,
13001        Debug,
13002        PartialEq,
13003        Eq,
13004        Hash,
13005        PartialOrd,
13006        Ord,
13007        ::prost::Enumeration
13008    )]
13009    #[repr(i32)]
13010    pub enum KprobeType {
13011        Unknown = 0,
13012        Begin = 1,
13013        End = 2,
13014        Instant = 3,
13015    }
13016    impl KprobeType {
13017        /// String value of the enum field names used in the ProtoBuf definition.
13018        ///
13019        /// The values are not transformed in any way and thus are considered stable
13020        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13021        pub fn as_str_name(&self) -> &'static str {
13022            match self {
13023                Self::Unknown => "KPROBE_TYPE_UNKNOWN",
13024                Self::Begin => "KPROBE_TYPE_BEGIN",
13025                Self::End => "KPROBE_TYPE_END",
13026                Self::Instant => "KPROBE_TYPE_INSTANT",
13027            }
13028        }
13029        /// Creates an enum from field names used in the ProtoBuf definition.
13030        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13031            match value {
13032                "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
13033                "KPROBE_TYPE_BEGIN" => Some(Self::Begin),
13034                "KPROBE_TYPE_END" => Some(Self::End),
13035                "KPROBE_TYPE_INSTANT" => Some(Self::Instant),
13036                _ => None,
13037            }
13038        }
13039    }
13040}
13041#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13042pub struct GoogleIccEventFtraceEvent {
13043    #[prost(string, optional, tag = "1")]
13044    pub event: ::core::option::Option<::prost::alloc::string::String>,
13045    #[prost(uint64, optional, tag = "2")]
13046    pub timestamp: ::core::option::Option<u64>,
13047}
13048#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13049pub struct GoogleIrmEventFtraceEvent {
13050    #[prost(string, optional, tag = "1")]
13051    pub event: ::core::option::Option<::prost::alloc::string::String>,
13052    #[prost(uint64, optional, tag = "2")]
13053    pub timestamp: ::core::option::Option<u64>,
13054}
13055#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13056pub struct GpuMemTotalFtraceEvent {
13057    #[prost(uint32, optional, tag = "1")]
13058    pub gpu_id: ::core::option::Option<u32>,
13059    #[prost(uint32, optional, tag = "2")]
13060    pub pid: ::core::option::Option<u32>,
13061    #[prost(uint64, optional, tag = "3")]
13062    pub size: ::core::option::Option<u64>,
13063}
13064#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13065pub struct DrmSchedJobFtraceEvent {
13066    #[prost(uint64, optional, tag = "1")]
13067    pub entity: ::core::option::Option<u64>,
13068    #[prost(uint64, optional, tag = "2")]
13069    pub fence: ::core::option::Option<u64>,
13070    #[prost(int32, optional, tag = "3")]
13071    pub hw_job_count: ::core::option::Option<i32>,
13072    #[prost(uint64, optional, tag = "4")]
13073    pub id: ::core::option::Option<u64>,
13074    #[prost(uint32, optional, tag = "5")]
13075    pub job_count: ::core::option::Option<u32>,
13076    #[prost(string, optional, tag = "6")]
13077    pub name: ::core::option::Option<::prost::alloc::string::String>,
13078}
13079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13080pub struct DrmRunJobFtraceEvent {
13081    #[prost(uint64, optional, tag = "1")]
13082    pub entity: ::core::option::Option<u64>,
13083    #[prost(uint64, optional, tag = "2")]
13084    pub fence: ::core::option::Option<u64>,
13085    #[prost(int32, optional, tag = "3")]
13086    pub hw_job_count: ::core::option::Option<i32>,
13087    #[prost(uint64, optional, tag = "4")]
13088    pub id: ::core::option::Option<u64>,
13089    #[prost(uint32, optional, tag = "5")]
13090    pub job_count: ::core::option::Option<u32>,
13091    #[prost(string, optional, tag = "6")]
13092    pub name: ::core::option::Option<::prost::alloc::string::String>,
13093}
13094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13095pub struct DrmSchedProcessJobFtraceEvent {
13096    #[prost(uint64, optional, tag = "1")]
13097    pub fence: ::core::option::Option<u64>,
13098}
13099#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13100pub struct DrmSchedJobAddDepFtraceEvent {
13101    #[prost(uint64, optional, tag = "1")]
13102    pub fence_context: ::core::option::Option<u64>,
13103    #[prost(uint64, optional, tag = "2")]
13104    pub fence_seqno: ::core::option::Option<u64>,
13105    #[prost(uint64, optional, tag = "3")]
13106    pub ctx: ::core::option::Option<u64>,
13107    #[prost(uint64, optional, tag = "4")]
13108    pub seqno: ::core::option::Option<u64>,
13109}
13110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13111pub struct DrmSchedJobDoneFtraceEvent {
13112    #[prost(uint64, optional, tag = "1")]
13113    pub fence_context: ::core::option::Option<u64>,
13114    #[prost(uint64, optional, tag = "2")]
13115    pub fence_seqno: ::core::option::Option<u64>,
13116}
13117#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13118pub struct DrmSchedJobQueueFtraceEvent {
13119    #[prost(string, optional, tag = "1")]
13120    pub name: ::core::option::Option<::prost::alloc::string::String>,
13121    #[prost(uint32, optional, tag = "2")]
13122    pub job_count: ::core::option::Option<u32>,
13123    #[prost(int32, optional, tag = "3")]
13124    pub hw_job_count: ::core::option::Option<i32>,
13125    #[prost(string, optional, tag = "4")]
13126    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13127    #[prost(uint64, optional, tag = "5")]
13128    pub fence_context: ::core::option::Option<u64>,
13129    #[prost(uint64, optional, tag = "6")]
13130    pub fence_seqno: ::core::option::Option<u64>,
13131    #[prost(uint64, optional, tag = "7")]
13132    pub client_id: ::core::option::Option<u64>,
13133}
13134#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13135pub struct DrmSchedJobRunFtraceEvent {
13136    #[prost(string, optional, tag = "1")]
13137    pub name: ::core::option::Option<::prost::alloc::string::String>,
13138    #[prost(uint32, optional, tag = "2")]
13139    pub job_count: ::core::option::Option<u32>,
13140    #[prost(int32, optional, tag = "3")]
13141    pub hw_job_count: ::core::option::Option<i32>,
13142    #[prost(string, optional, tag = "4")]
13143    pub dev: ::core::option::Option<::prost::alloc::string::String>,
13144    #[prost(uint64, optional, tag = "5")]
13145    pub fence_context: ::core::option::Option<u64>,
13146    #[prost(uint64, optional, tag = "6")]
13147    pub fence_seqno: ::core::option::Option<u64>,
13148    #[prost(uint64, optional, tag = "7")]
13149    pub client_id: ::core::option::Option<u64>,
13150}
13151#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13152pub struct DrmSchedJobUnschedulableFtraceEvent {
13153    #[prost(uint64, optional, tag = "1")]
13154    pub fence_context: ::core::option::Option<u64>,
13155    #[prost(uint64, optional, tag = "2")]
13156    pub fence_seqno: ::core::option::Option<u64>,
13157    #[prost(uint64, optional, tag = "3")]
13158    pub ctx: ::core::option::Option<u64>,
13159    #[prost(uint64, optional, tag = "4")]
13160    pub seqno: ::core::option::Option<u64>,
13161}
13162#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13163pub struct HypEnterFtraceEvent {}
13164#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13165pub struct HypExitFtraceEvent {}
13166#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13167pub struct HostHcallFtraceEvent {
13168    #[prost(uint32, optional, tag = "1")]
13169    pub id: ::core::option::Option<u32>,
13170    #[prost(uint32, optional, tag = "2")]
13171    pub invalid: ::core::option::Option<u32>,
13172}
13173#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13174pub struct HostSmcFtraceEvent {
13175    #[prost(uint64, optional, tag = "1")]
13176    pub id: ::core::option::Option<u64>,
13177    #[prost(uint32, optional, tag = "2")]
13178    pub forwarded: ::core::option::Option<u32>,
13179}
13180#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13181pub struct HostMemAbortFtraceEvent {
13182    #[prost(uint64, optional, tag = "1")]
13183    pub esr: ::core::option::Option<u64>,
13184    #[prost(uint64, optional, tag = "2")]
13185    pub addr: ::core::option::Option<u64>,
13186}
13187#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13188pub struct HostFfaCallFtraceEvent {
13189    #[prost(uint64, optional, tag = "1")]
13190    pub func_id: ::core::option::Option<u64>,
13191    #[prost(uint64, optional, tag = "2")]
13192    pub res_a1: ::core::option::Option<u64>,
13193    #[prost(uint64, optional, tag = "3")]
13194    pub res_a2: ::core::option::Option<u64>,
13195    #[prost(uint64, optional, tag = "4")]
13196    pub res_a3: ::core::option::Option<u64>,
13197    #[prost(uint64, optional, tag = "5")]
13198    pub res_a4: ::core::option::Option<u64>,
13199    #[prost(int32, optional, tag = "6")]
13200    pub handled: ::core::option::Option<i32>,
13201    #[prost(int32, optional, tag = "7")]
13202    pub err: ::core::option::Option<i32>,
13203}
13204#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13205pub struct IommuIdmapFtraceEvent {
13206    #[prost(uint64, optional, tag = "1")]
13207    pub from: ::core::option::Option<u64>,
13208    #[prost(uint64, optional, tag = "2")]
13209    pub to: ::core::option::Option<u64>,
13210    #[prost(int32, optional, tag = "3")]
13211    pub prot: ::core::option::Option<i32>,
13212}
13213#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13214pub struct PsciMemProtectFtraceEvent {
13215    #[prost(uint64, optional, tag = "1")]
13216    pub count: ::core::option::Option<u64>,
13217    #[prost(uint64, optional, tag = "2")]
13218    pub was: ::core::option::Option<u64>,
13219}
13220#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13221pub struct HypervisorHostHcallFtraceEvent {
13222    #[prost(uint32, optional, tag = "1")]
13223    pub id: ::core::option::Option<u32>,
13224    #[prost(uint32, optional, tag = "2")]
13225    pub invalid: ::core::option::Option<u32>,
13226}
13227#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13228pub struct HypervisorHostSmcFtraceEvent {
13229    #[prost(uint64, optional, tag = "1")]
13230    pub id: ::core::option::Option<u64>,
13231    #[prost(uint32, optional, tag = "2")]
13232    pub forwarded: ::core::option::Option<u32>,
13233}
13234#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13235pub struct HypervisorHypExitFtraceEvent {}
13236#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13237pub struct HypervisorIommuIdmapFtraceEvent {
13238    #[prost(uint64, optional, tag = "1")]
13239    pub from: ::core::option::Option<u64>,
13240    #[prost(uint64, optional, tag = "2")]
13241    pub to: ::core::option::Option<u64>,
13242    #[prost(int32, optional, tag = "3")]
13243    pub prot: ::core::option::Option<i32>,
13244}
13245#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13246pub struct HypervisorPsciMemProtectFtraceEvent {
13247    #[prost(uint64, optional, tag = "1")]
13248    pub count: ::core::option::Option<u64>,
13249    #[prost(uint64, optional, tag = "2")]
13250    pub was: ::core::option::Option<u64>,
13251}
13252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13253pub struct HypervisorHostMemAbortFtraceEvent {
13254    #[prost(uint64, optional, tag = "1")]
13255    pub esr: ::core::option::Option<u64>,
13256    #[prost(uint64, optional, tag = "2")]
13257    pub addr: ::core::option::Option<u64>,
13258}
13259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13260pub struct HypervisorHypEnterFtraceEvent {}
13261#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13262pub struct HypervisorIommuIdmapCompleteFtraceEvent {
13263    #[prost(uint32, optional, tag = "1")]
13264    pub map: ::core::option::Option<u32>,
13265}
13266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13267pub struct HypervisorVcpuIllegalTrapFtraceEvent {
13268    #[prost(uint64, optional, tag = "1")]
13269    pub esr: ::core::option::Option<u64>,
13270}
13271#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13272pub struct I2cReadFtraceEvent {
13273    #[prost(int32, optional, tag = "1")]
13274    pub adapter_nr: ::core::option::Option<i32>,
13275    #[prost(uint32, optional, tag = "2")]
13276    pub msg_nr: ::core::option::Option<u32>,
13277    #[prost(uint32, optional, tag = "3")]
13278    pub addr: ::core::option::Option<u32>,
13279    #[prost(uint32, optional, tag = "4")]
13280    pub flags: ::core::option::Option<u32>,
13281    #[prost(uint32, optional, tag = "5")]
13282    pub len: ::core::option::Option<u32>,
13283}
13284#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13285pub struct I2cWriteFtraceEvent {
13286    #[prost(int32, optional, tag = "1")]
13287    pub adapter_nr: ::core::option::Option<i32>,
13288    #[prost(uint32, optional, tag = "2")]
13289    pub msg_nr: ::core::option::Option<u32>,
13290    #[prost(uint32, optional, tag = "3")]
13291    pub addr: ::core::option::Option<u32>,
13292    #[prost(uint32, optional, tag = "4")]
13293    pub flags: ::core::option::Option<u32>,
13294    #[prost(uint32, optional, tag = "5")]
13295    pub len: ::core::option::Option<u32>,
13296    #[prost(bytes = "vec", optional, tag = "7")]
13297    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13298}
13299#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13300pub struct I2cResultFtraceEvent {
13301    #[prost(int32, optional, tag = "1")]
13302    pub adapter_nr: ::core::option::Option<i32>,
13303    #[prost(uint32, optional, tag = "2")]
13304    pub nr_msgs: ::core::option::Option<u32>,
13305    #[prost(int32, optional, tag = "3")]
13306    pub ret: ::core::option::Option<i32>,
13307}
13308#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13309pub struct I2cReplyFtraceEvent {
13310    #[prost(int32, optional, tag = "1")]
13311    pub adapter_nr: ::core::option::Option<i32>,
13312    #[prost(uint32, optional, tag = "2")]
13313    pub msg_nr: ::core::option::Option<u32>,
13314    #[prost(uint32, optional, tag = "3")]
13315    pub addr: ::core::option::Option<u32>,
13316    #[prost(uint32, optional, tag = "4")]
13317    pub flags: ::core::option::Option<u32>,
13318    #[prost(uint32, optional, tag = "5")]
13319    pub len: ::core::option::Option<u32>,
13320    #[prost(bytes = "vec", optional, tag = "7")]
13321    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
13322}
13323#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13324pub struct SmbusReadFtraceEvent {
13325    #[prost(int32, optional, tag = "1")]
13326    pub adapter_nr: ::core::option::Option<i32>,
13327    #[prost(uint32, optional, tag = "2")]
13328    pub flags: ::core::option::Option<u32>,
13329    #[prost(uint32, optional, tag = "3")]
13330    pub addr: ::core::option::Option<u32>,
13331    #[prost(uint32, optional, tag = "4")]
13332    pub command: ::core::option::Option<u32>,
13333    #[prost(uint32, optional, tag = "5")]
13334    pub protocol: ::core::option::Option<u32>,
13335}
13336#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13337pub struct SmbusWriteFtraceEvent {
13338    #[prost(int32, optional, tag = "1")]
13339    pub adapter_nr: ::core::option::Option<i32>,
13340    #[prost(uint32, optional, tag = "2")]
13341    pub addr: ::core::option::Option<u32>,
13342    #[prost(uint32, optional, tag = "3")]
13343    pub flags: ::core::option::Option<u32>,
13344    #[prost(uint32, optional, tag = "4")]
13345    pub command: ::core::option::Option<u32>,
13346    #[prost(uint32, optional, tag = "5")]
13347    pub len: ::core::option::Option<u32>,
13348    #[prost(uint32, optional, tag = "6")]
13349    pub protocol: ::core::option::Option<u32>,
13350}
13351#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13352pub struct SmbusResultFtraceEvent {
13353    #[prost(int32, optional, tag = "1")]
13354    pub adapter_nr: ::core::option::Option<i32>,
13355    #[prost(uint32, optional, tag = "2")]
13356    pub addr: ::core::option::Option<u32>,
13357    #[prost(uint32, optional, tag = "3")]
13358    pub flags: ::core::option::Option<u32>,
13359    #[prost(uint32, optional, tag = "4")]
13360    pub read_write: ::core::option::Option<u32>,
13361    #[prost(uint32, optional, tag = "5")]
13362    pub command: ::core::option::Option<u32>,
13363    #[prost(int32, optional, tag = "6")]
13364    pub res: ::core::option::Option<i32>,
13365    #[prost(uint32, optional, tag = "7")]
13366    pub protocol: ::core::option::Option<u32>,
13367}
13368#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13369pub struct SmbusReplyFtraceEvent {
13370    #[prost(int32, optional, tag = "1")]
13371    pub adapter_nr: ::core::option::Option<i32>,
13372    #[prost(uint32, optional, tag = "2")]
13373    pub addr: ::core::option::Option<u32>,
13374    #[prost(uint32, optional, tag = "3")]
13375    pub flags: ::core::option::Option<u32>,
13376    #[prost(uint32, optional, tag = "4")]
13377    pub command: ::core::option::Option<u32>,
13378    #[prost(uint32, optional, tag = "5")]
13379    pub len: ::core::option::Option<u32>,
13380    #[prost(uint32, optional, tag = "6")]
13381    pub protocol: ::core::option::Option<u32>,
13382}
13383#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13384pub struct IonStatFtraceEvent {
13385    #[prost(uint32, optional, tag = "1")]
13386    pub buffer_id: ::core::option::Option<u32>,
13387    #[prost(int64, optional, tag = "2")]
13388    pub len: ::core::option::Option<i64>,
13389    #[prost(uint64, optional, tag = "3")]
13390    pub total_allocated: ::core::option::Option<u64>,
13391}
13392#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13393pub struct IpiEntryFtraceEvent {
13394    #[prost(string, optional, tag = "1")]
13395    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13396}
13397#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13398pub struct IpiExitFtraceEvent {
13399    #[prost(string, optional, tag = "1")]
13400    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13401}
13402#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13403pub struct IpiRaiseFtraceEvent {
13404    #[prost(uint32, optional, tag = "1")]
13405    pub target_cpus: ::core::option::Option<u32>,
13406    #[prost(string, optional, tag = "2")]
13407    pub reason: ::core::option::Option<::prost::alloc::string::String>,
13408}
13409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13410pub struct SoftirqEntryFtraceEvent {
13411    #[prost(uint32, optional, tag = "1")]
13412    pub vec: ::core::option::Option<u32>,
13413}
13414#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13415pub struct SoftirqExitFtraceEvent {
13416    #[prost(uint32, optional, tag = "1")]
13417    pub vec: ::core::option::Option<u32>,
13418}
13419#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13420pub struct SoftirqRaiseFtraceEvent {
13421    #[prost(uint32, optional, tag = "1")]
13422    pub vec: ::core::option::Option<u32>,
13423}
13424#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13425pub struct IrqHandlerEntryFtraceEvent {
13426    #[prost(int32, optional, tag = "1")]
13427    pub irq: ::core::option::Option<i32>,
13428    #[prost(string, optional, tag = "2")]
13429    pub name: ::core::option::Option<::prost::alloc::string::String>,
13430    #[prost(uint32, optional, tag = "3")]
13431    pub handler: ::core::option::Option<u32>,
13432}
13433#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13434pub struct IrqHandlerExitFtraceEvent {
13435    #[prost(int32, optional, tag = "1")]
13436    pub irq: ::core::option::Option<i32>,
13437    #[prost(int32, optional, tag = "2")]
13438    pub ret: ::core::option::Option<i32>,
13439}
13440#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13441pub struct LocalTimerEntryFtraceEvent {
13442    #[prost(int32, optional, tag = "1")]
13443    pub vector: ::core::option::Option<i32>,
13444}
13445#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13446pub struct LocalTimerExitFtraceEvent {
13447    #[prost(int32, optional, tag = "1")]
13448    pub vector: ::core::option::Option<i32>,
13449}
13450#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13451pub struct KgslGpuFrequencyFtraceEvent {
13452    #[prost(uint32, optional, tag = "1")]
13453    pub gpu_freq: ::core::option::Option<u32>,
13454    #[prost(uint32, optional, tag = "2")]
13455    pub gpu_id: ::core::option::Option<u32>,
13456}
13457#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13458pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
13459    #[prost(uint32, optional, tag = "1")]
13460    pub id: ::core::option::Option<u32>,
13461    #[prost(uint32, optional, tag = "2")]
13462    pub timestamp: ::core::option::Option<u32>,
13463    #[prost(uint32, optional, tag = "3")]
13464    pub queued: ::core::option::Option<u32>,
13465    #[prost(uint32, optional, tag = "4")]
13466    pub flags: ::core::option::Option<u32>,
13467    #[prost(uint32, optional, tag = "5")]
13468    pub prio: ::core::option::Option<u32>,
13469}
13470#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13471pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
13472    #[prost(uint32, optional, tag = "1")]
13473    pub id: ::core::option::Option<u32>,
13474    #[prost(uint32, optional, tag = "2")]
13475    pub timestamp: ::core::option::Option<u32>,
13476    #[prost(int64, optional, tag = "3")]
13477    pub inflight: ::core::option::Option<i64>,
13478    #[prost(uint32, optional, tag = "4")]
13479    pub flags: ::core::option::Option<u32>,
13480    #[prost(uint64, optional, tag = "5")]
13481    pub ticks: ::core::option::Option<u64>,
13482    #[prost(uint64, optional, tag = "6")]
13483    pub secs: ::core::option::Option<u64>,
13484    #[prost(uint64, optional, tag = "7")]
13485    pub usecs: ::core::option::Option<u64>,
13486    #[prost(int32, optional, tag = "8")]
13487    pub prio: ::core::option::Option<i32>,
13488    #[prost(int32, optional, tag = "9")]
13489    pub rb_id: ::core::option::Option<i32>,
13490    #[prost(uint32, optional, tag = "10")]
13491    pub rptr: ::core::option::Option<u32>,
13492    #[prost(uint32, optional, tag = "11")]
13493    pub wptr: ::core::option::Option<u32>,
13494    #[prost(int32, optional, tag = "12")]
13495    pub q_inflight: ::core::option::Option<i32>,
13496    #[prost(int32, optional, tag = "13")]
13497    pub dispatch_queue: ::core::option::Option<i32>,
13498}
13499#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13500pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
13501    #[prost(uint32, optional, tag = "1")]
13502    pub id: ::core::option::Option<u32>,
13503    #[prost(uint32, optional, tag = "2")]
13504    pub timestamp: ::core::option::Option<u32>,
13505    #[prost(uint64, optional, tag = "3")]
13506    pub ticks: ::core::option::Option<u64>,
13507    #[prost(int32, optional, tag = "4")]
13508    pub prio: ::core::option::Option<i32>,
13509}
13510#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13511pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
13512    #[prost(uint32, optional, tag = "1")]
13513    pub id: ::core::option::Option<u32>,
13514    #[prost(uint32, optional, tag = "2")]
13515    pub timestamp: ::core::option::Option<u32>,
13516    #[prost(int64, optional, tag = "3")]
13517    pub inflight: ::core::option::Option<i64>,
13518    #[prost(uint32, optional, tag = "4")]
13519    pub recovery: ::core::option::Option<u32>,
13520    #[prost(uint32, optional, tag = "5")]
13521    pub flags: ::core::option::Option<u32>,
13522    #[prost(uint64, optional, tag = "6")]
13523    pub start: ::core::option::Option<u64>,
13524    #[prost(uint64, optional, tag = "7")]
13525    pub retire: ::core::option::Option<u64>,
13526    #[prost(int32, optional, tag = "8")]
13527    pub prio: ::core::option::Option<i32>,
13528    #[prost(int32, optional, tag = "9")]
13529    pub rb_id: ::core::option::Option<i32>,
13530    #[prost(uint32, optional, tag = "10")]
13531    pub rptr: ::core::option::Option<u32>,
13532    #[prost(uint32, optional, tag = "11")]
13533    pub wptr: ::core::option::Option<u32>,
13534    #[prost(int32, optional, tag = "12")]
13535    pub q_inflight: ::core::option::Option<i32>,
13536    #[prost(uint64, optional, tag = "13")]
13537    pub fault_recovery: ::core::option::Option<u64>,
13538    #[prost(uint32, optional, tag = "14")]
13539    pub dispatch_queue: ::core::option::Option<u32>,
13540    #[prost(uint64, optional, tag = "15")]
13541    pub submitted_to_rb: ::core::option::Option<u64>,
13542    #[prost(uint64, optional, tag = "16")]
13543    pub retired_on_gmu: ::core::option::Option<u64>,
13544    #[prost(uint64, optional, tag = "17")]
13545    pub active: ::core::option::Option<u64>,
13546}
13547#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13548pub struct AllocPagesIommuEndFtraceEvent {
13549    #[prost(uint32, optional, tag = "1")]
13550    pub gfp_flags: ::core::option::Option<u32>,
13551    #[prost(uint32, optional, tag = "2")]
13552    pub order: ::core::option::Option<u32>,
13553}
13554#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13555pub struct AllocPagesIommuFailFtraceEvent {
13556    #[prost(uint32, optional, tag = "1")]
13557    pub gfp_flags: ::core::option::Option<u32>,
13558    #[prost(uint32, optional, tag = "2")]
13559    pub order: ::core::option::Option<u32>,
13560}
13561#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13562pub struct AllocPagesIommuStartFtraceEvent {
13563    #[prost(uint32, optional, tag = "1")]
13564    pub gfp_flags: ::core::option::Option<u32>,
13565    #[prost(uint32, optional, tag = "2")]
13566    pub order: ::core::option::Option<u32>,
13567}
13568#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13569pub struct AllocPagesSysEndFtraceEvent {
13570    #[prost(uint32, optional, tag = "1")]
13571    pub gfp_flags: ::core::option::Option<u32>,
13572    #[prost(uint32, optional, tag = "2")]
13573    pub order: ::core::option::Option<u32>,
13574}
13575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13576pub struct AllocPagesSysFailFtraceEvent {
13577    #[prost(uint32, optional, tag = "1")]
13578    pub gfp_flags: ::core::option::Option<u32>,
13579    #[prost(uint32, optional, tag = "2")]
13580    pub order: ::core::option::Option<u32>,
13581}
13582#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13583pub struct AllocPagesSysStartFtraceEvent {
13584    #[prost(uint32, optional, tag = "1")]
13585    pub gfp_flags: ::core::option::Option<u32>,
13586    #[prost(uint32, optional, tag = "2")]
13587    pub order: ::core::option::Option<u32>,
13588}
13589#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13590pub struct DmaAllocContiguousRetryFtraceEvent {
13591    #[prost(int32, optional, tag = "1")]
13592    pub tries: ::core::option::Option<i32>,
13593}
13594#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13595pub struct IommuMapRangeFtraceEvent {
13596    #[prost(uint64, optional, tag = "1")]
13597    pub chunk_size: ::core::option::Option<u64>,
13598    #[prost(uint64, optional, tag = "2")]
13599    pub len: ::core::option::Option<u64>,
13600    #[prost(uint64, optional, tag = "3")]
13601    pub pa: ::core::option::Option<u64>,
13602    #[prost(uint64, optional, tag = "4")]
13603    pub va: ::core::option::Option<u64>,
13604}
13605#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13606pub struct IommuSecPtblMapRangeEndFtraceEvent {
13607    #[prost(uint64, optional, tag = "1")]
13608    pub len: ::core::option::Option<u64>,
13609    #[prost(int32, optional, tag = "2")]
13610    pub num: ::core::option::Option<i32>,
13611    #[prost(uint32, optional, tag = "3")]
13612    pub pa: ::core::option::Option<u32>,
13613    #[prost(int32, optional, tag = "4")]
13614    pub sec_id: ::core::option::Option<i32>,
13615    #[prost(uint64, optional, tag = "5")]
13616    pub va: ::core::option::Option<u64>,
13617}
13618#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13619pub struct IommuSecPtblMapRangeStartFtraceEvent {
13620    #[prost(uint64, optional, tag = "1")]
13621    pub len: ::core::option::Option<u64>,
13622    #[prost(int32, optional, tag = "2")]
13623    pub num: ::core::option::Option<i32>,
13624    #[prost(uint32, optional, tag = "3")]
13625    pub pa: ::core::option::Option<u32>,
13626    #[prost(int32, optional, tag = "4")]
13627    pub sec_id: ::core::option::Option<i32>,
13628    #[prost(uint64, optional, tag = "5")]
13629    pub va: ::core::option::Option<u64>,
13630}
13631#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13632pub struct IonAllocBufferEndFtraceEvent {
13633    #[prost(string, optional, tag = "1")]
13634    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13635    #[prost(uint32, optional, tag = "2")]
13636    pub flags: ::core::option::Option<u32>,
13637    #[prost(string, optional, tag = "3")]
13638    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13639    #[prost(uint64, optional, tag = "4")]
13640    pub len: ::core::option::Option<u64>,
13641    #[prost(uint32, optional, tag = "5")]
13642    pub mask: ::core::option::Option<u32>,
13643}
13644#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13645pub struct IonAllocBufferFailFtraceEvent {
13646    #[prost(string, optional, tag = "1")]
13647    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13648    #[prost(int64, optional, tag = "2")]
13649    pub error: ::core::option::Option<i64>,
13650    #[prost(uint32, optional, tag = "3")]
13651    pub flags: ::core::option::Option<u32>,
13652    #[prost(string, optional, tag = "4")]
13653    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13654    #[prost(uint64, optional, tag = "5")]
13655    pub len: ::core::option::Option<u64>,
13656    #[prost(uint32, optional, tag = "6")]
13657    pub mask: ::core::option::Option<u32>,
13658}
13659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13660pub struct IonAllocBufferFallbackFtraceEvent {
13661    #[prost(string, optional, tag = "1")]
13662    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13663    #[prost(int64, optional, tag = "2")]
13664    pub error: ::core::option::Option<i64>,
13665    #[prost(uint32, optional, tag = "3")]
13666    pub flags: ::core::option::Option<u32>,
13667    #[prost(string, optional, tag = "4")]
13668    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13669    #[prost(uint64, optional, tag = "5")]
13670    pub len: ::core::option::Option<u64>,
13671    #[prost(uint32, optional, tag = "6")]
13672    pub mask: ::core::option::Option<u32>,
13673}
13674#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13675pub struct IonAllocBufferStartFtraceEvent {
13676    #[prost(string, optional, tag = "1")]
13677    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
13678    #[prost(uint32, optional, tag = "2")]
13679    pub flags: ::core::option::Option<u32>,
13680    #[prost(string, optional, tag = "3")]
13681    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13682    #[prost(uint64, optional, tag = "4")]
13683    pub len: ::core::option::Option<u64>,
13684    #[prost(uint32, optional, tag = "5")]
13685    pub mask: ::core::option::Option<u32>,
13686}
13687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13688pub struct IonCpAllocRetryFtraceEvent {
13689    #[prost(int32, optional, tag = "1")]
13690    pub tries: ::core::option::Option<i32>,
13691}
13692#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13693pub struct IonCpSecureBufferEndFtraceEvent {
13694    #[prost(uint64, optional, tag = "1")]
13695    pub align: ::core::option::Option<u64>,
13696    #[prost(uint64, optional, tag = "2")]
13697    pub flags: ::core::option::Option<u64>,
13698    #[prost(string, optional, tag = "3")]
13699    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13700    #[prost(uint64, optional, tag = "4")]
13701    pub len: ::core::option::Option<u64>,
13702}
13703#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13704pub struct IonCpSecureBufferStartFtraceEvent {
13705    #[prost(uint64, optional, tag = "1")]
13706    pub align: ::core::option::Option<u64>,
13707    #[prost(uint64, optional, tag = "2")]
13708    pub flags: ::core::option::Option<u64>,
13709    #[prost(string, optional, tag = "3")]
13710    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13711    #[prost(uint64, optional, tag = "4")]
13712    pub len: ::core::option::Option<u64>,
13713}
13714#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13715pub struct IonPrefetchingFtraceEvent {
13716    #[prost(uint64, optional, tag = "1")]
13717    pub len: ::core::option::Option<u64>,
13718}
13719#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13720pub struct IonSecureCmaAddToPoolEndFtraceEvent {
13721    #[prost(uint32, optional, tag = "1")]
13722    pub is_prefetch: ::core::option::Option<u32>,
13723    #[prost(uint64, optional, tag = "2")]
13724    pub len: ::core::option::Option<u64>,
13725    #[prost(int32, optional, tag = "3")]
13726    pub pool_total: ::core::option::Option<i32>,
13727}
13728#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13729pub struct IonSecureCmaAddToPoolStartFtraceEvent {
13730    #[prost(uint32, optional, tag = "1")]
13731    pub is_prefetch: ::core::option::Option<u32>,
13732    #[prost(uint64, optional, tag = "2")]
13733    pub len: ::core::option::Option<u64>,
13734    #[prost(int32, optional, tag = "3")]
13735    pub pool_total: ::core::option::Option<i32>,
13736}
13737#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13738pub struct IonSecureCmaAllocateEndFtraceEvent {
13739    #[prost(uint64, optional, tag = "1")]
13740    pub align: ::core::option::Option<u64>,
13741    #[prost(uint64, optional, tag = "2")]
13742    pub flags: ::core::option::Option<u64>,
13743    #[prost(string, optional, tag = "3")]
13744    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13745    #[prost(uint64, optional, tag = "4")]
13746    pub len: ::core::option::Option<u64>,
13747}
13748#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13749pub struct IonSecureCmaAllocateStartFtraceEvent {
13750    #[prost(uint64, optional, tag = "1")]
13751    pub align: ::core::option::Option<u64>,
13752    #[prost(uint64, optional, tag = "2")]
13753    pub flags: ::core::option::Option<u64>,
13754    #[prost(string, optional, tag = "3")]
13755    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13756    #[prost(uint64, optional, tag = "4")]
13757    pub len: ::core::option::Option<u64>,
13758}
13759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13760pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
13761    #[prost(uint64, optional, tag = "1")]
13762    pub drained_size: ::core::option::Option<u64>,
13763    #[prost(uint64, optional, tag = "2")]
13764    pub skipped_size: ::core::option::Option<u64>,
13765}
13766#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13767pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
13768    #[prost(uint64, optional, tag = "1")]
13769    pub drained_size: ::core::option::Option<u64>,
13770    #[prost(uint64, optional, tag = "2")]
13771    pub skipped_size: ::core::option::Option<u64>,
13772}
13773#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13774pub struct KfreeFtraceEvent {
13775    #[prost(uint64, optional, tag = "1")]
13776    pub call_site: ::core::option::Option<u64>,
13777    #[prost(uint64, optional, tag = "2")]
13778    pub ptr: ::core::option::Option<u64>,
13779}
13780#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13781pub struct KmallocFtraceEvent {
13782    #[prost(uint64, optional, tag = "1")]
13783    pub bytes_alloc: ::core::option::Option<u64>,
13784    #[prost(uint64, optional, tag = "2")]
13785    pub bytes_req: ::core::option::Option<u64>,
13786    #[prost(uint64, optional, tag = "3")]
13787    pub call_site: ::core::option::Option<u64>,
13788    #[prost(uint32, optional, tag = "4")]
13789    pub gfp_flags: ::core::option::Option<u32>,
13790    #[prost(uint64, optional, tag = "5")]
13791    pub ptr: ::core::option::Option<u64>,
13792}
13793#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13794pub struct KmallocNodeFtraceEvent {
13795    #[prost(uint64, optional, tag = "1")]
13796    pub bytes_alloc: ::core::option::Option<u64>,
13797    #[prost(uint64, optional, tag = "2")]
13798    pub bytes_req: ::core::option::Option<u64>,
13799    #[prost(uint64, optional, tag = "3")]
13800    pub call_site: ::core::option::Option<u64>,
13801    #[prost(uint32, optional, tag = "4")]
13802    pub gfp_flags: ::core::option::Option<u32>,
13803    #[prost(int32, optional, tag = "5")]
13804    pub node: ::core::option::Option<i32>,
13805    #[prost(uint64, optional, tag = "6")]
13806    pub ptr: ::core::option::Option<u64>,
13807}
13808#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13809pub struct KmemCacheAllocFtraceEvent {
13810    #[prost(uint64, optional, tag = "1")]
13811    pub bytes_alloc: ::core::option::Option<u64>,
13812    #[prost(uint64, optional, tag = "2")]
13813    pub bytes_req: ::core::option::Option<u64>,
13814    #[prost(uint64, optional, tag = "3")]
13815    pub call_site: ::core::option::Option<u64>,
13816    #[prost(uint32, optional, tag = "4")]
13817    pub gfp_flags: ::core::option::Option<u32>,
13818    #[prost(uint64, optional, tag = "5")]
13819    pub ptr: ::core::option::Option<u64>,
13820}
13821#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13822pub struct KmemCacheAllocNodeFtraceEvent {
13823    #[prost(uint64, optional, tag = "1")]
13824    pub bytes_alloc: ::core::option::Option<u64>,
13825    #[prost(uint64, optional, tag = "2")]
13826    pub bytes_req: ::core::option::Option<u64>,
13827    #[prost(uint64, optional, tag = "3")]
13828    pub call_site: ::core::option::Option<u64>,
13829    #[prost(uint32, optional, tag = "4")]
13830    pub gfp_flags: ::core::option::Option<u32>,
13831    #[prost(int32, optional, tag = "5")]
13832    pub node: ::core::option::Option<i32>,
13833    #[prost(uint64, optional, tag = "6")]
13834    pub ptr: ::core::option::Option<u64>,
13835}
13836#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13837pub struct KmemCacheFreeFtraceEvent {
13838    #[prost(uint64, optional, tag = "1")]
13839    pub call_site: ::core::option::Option<u64>,
13840    #[prost(uint64, optional, tag = "2")]
13841    pub ptr: ::core::option::Option<u64>,
13842}
13843#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13844pub struct MigratePagesEndFtraceEvent {
13845    #[prost(int32, optional, tag = "1")]
13846    pub mode: ::core::option::Option<i32>,
13847}
13848#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13849pub struct MigratePagesStartFtraceEvent {
13850    #[prost(int32, optional, tag = "1")]
13851    pub mode: ::core::option::Option<i32>,
13852}
13853#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13854pub struct MigrateRetryFtraceEvent {
13855    #[prost(int32, optional, tag = "1")]
13856    pub tries: ::core::option::Option<i32>,
13857}
13858#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13859pub struct MmPageAllocFtraceEvent {
13860    #[prost(uint32, optional, tag = "1")]
13861    pub gfp_flags: ::core::option::Option<u32>,
13862    #[prost(int32, optional, tag = "2")]
13863    pub migratetype: ::core::option::Option<i32>,
13864    #[prost(uint32, optional, tag = "3")]
13865    pub order: ::core::option::Option<u32>,
13866    #[prost(uint64, optional, tag = "4")]
13867    pub page: ::core::option::Option<u64>,
13868    #[prost(uint64, optional, tag = "5")]
13869    pub pfn: ::core::option::Option<u64>,
13870}
13871#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13872pub struct MmPageAllocExtfragFtraceEvent {
13873    #[prost(int32, optional, tag = "1")]
13874    pub alloc_migratetype: ::core::option::Option<i32>,
13875    #[prost(int32, optional, tag = "2")]
13876    pub alloc_order: ::core::option::Option<i32>,
13877    #[prost(int32, optional, tag = "3")]
13878    pub fallback_migratetype: ::core::option::Option<i32>,
13879    #[prost(int32, optional, tag = "4")]
13880    pub fallback_order: ::core::option::Option<i32>,
13881    #[prost(uint64, optional, tag = "5")]
13882    pub page: ::core::option::Option<u64>,
13883    #[prost(int32, optional, tag = "6")]
13884    pub change_ownership: ::core::option::Option<i32>,
13885    #[prost(uint64, optional, tag = "7")]
13886    pub pfn: ::core::option::Option<u64>,
13887}
13888#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13889pub struct MmPageAllocZoneLockedFtraceEvent {
13890    #[prost(int32, optional, tag = "1")]
13891    pub migratetype: ::core::option::Option<i32>,
13892    #[prost(uint32, optional, tag = "2")]
13893    pub order: ::core::option::Option<u32>,
13894    #[prost(uint64, optional, tag = "3")]
13895    pub page: ::core::option::Option<u64>,
13896    #[prost(uint64, optional, tag = "4")]
13897    pub pfn: ::core::option::Option<u64>,
13898}
13899#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13900pub struct MmPageFreeFtraceEvent {
13901    #[prost(uint32, optional, tag = "1")]
13902    pub order: ::core::option::Option<u32>,
13903    #[prost(uint64, optional, tag = "2")]
13904    pub page: ::core::option::Option<u64>,
13905    #[prost(uint64, optional, tag = "3")]
13906    pub pfn: ::core::option::Option<u64>,
13907}
13908#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13909pub struct MmPageFreeBatchedFtraceEvent {
13910    #[prost(int32, optional, tag = "1")]
13911    pub cold: ::core::option::Option<i32>,
13912    #[prost(uint64, optional, tag = "2")]
13913    pub page: ::core::option::Option<u64>,
13914    #[prost(uint64, optional, tag = "3")]
13915    pub pfn: ::core::option::Option<u64>,
13916}
13917#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13918pub struct MmPagePcpuDrainFtraceEvent {
13919    #[prost(int32, optional, tag = "1")]
13920    pub migratetype: ::core::option::Option<i32>,
13921    #[prost(uint32, optional, tag = "2")]
13922    pub order: ::core::option::Option<u32>,
13923    #[prost(uint64, optional, tag = "3")]
13924    pub page: ::core::option::Option<u64>,
13925    #[prost(uint64, optional, tag = "4")]
13926    pub pfn: ::core::option::Option<u64>,
13927}
13928#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13929pub struct RssStatFtraceEvent {
13930    #[prost(int32, optional, tag = "1")]
13931    pub member: ::core::option::Option<i32>,
13932    #[prost(int64, optional, tag = "2")]
13933    pub size: ::core::option::Option<i64>,
13934    #[prost(uint32, optional, tag = "3")]
13935    pub curr: ::core::option::Option<u32>,
13936    #[prost(uint32, optional, tag = "4")]
13937    pub mm_id: ::core::option::Option<u32>,
13938}
13939#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13940pub struct IonHeapShrinkFtraceEvent {
13941    #[prost(string, optional, tag = "1")]
13942    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13943    #[prost(uint64, optional, tag = "2")]
13944    pub len: ::core::option::Option<u64>,
13945    #[prost(int64, optional, tag = "3")]
13946    pub total_allocated: ::core::option::Option<i64>,
13947}
13948#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13949pub struct IonHeapGrowFtraceEvent {
13950    #[prost(string, optional, tag = "1")]
13951    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
13952    #[prost(uint64, optional, tag = "2")]
13953    pub len: ::core::option::Option<u64>,
13954    #[prost(int64, optional, tag = "3")]
13955    pub total_allocated: ::core::option::Option<i64>,
13956}
13957#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13958pub struct IonBufferCreateFtraceEvent {
13959    #[prost(uint64, optional, tag = "1")]
13960    pub addr: ::core::option::Option<u64>,
13961    #[prost(uint64, optional, tag = "2")]
13962    pub len: ::core::option::Option<u64>,
13963}
13964#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13965pub struct IonBufferDestroyFtraceEvent {
13966    #[prost(uint64, optional, tag = "1")]
13967    pub addr: ::core::option::Option<u64>,
13968    #[prost(uint64, optional, tag = "2")]
13969    pub len: ::core::option::Option<u64>,
13970}
13971#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13972pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
13973    #[prost(uint64, optional, tag = "1")]
13974    pub start: ::core::option::Option<u64>,
13975    #[prost(uint64, optional, tag = "2")]
13976    pub end: ::core::option::Option<u64>,
13977    #[prost(uint64, optional, tag = "3")]
13978    pub nr_migrated: ::core::option::Option<u64>,
13979    #[prost(uint64, optional, tag = "4")]
13980    pub nr_reclaimed: ::core::option::Option<u64>,
13981    #[prost(uint64, optional, tag = "5")]
13982    pub nr_mapped: ::core::option::Option<u64>,
13983    #[prost(int32, optional, tag = "6")]
13984    pub migratetype: ::core::option::Option<i32>,
13985}
13986#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13987pub struct DmabufRssStatFtraceEvent {
13988    #[prost(uint64, optional, tag = "1")]
13989    pub rss: ::core::option::Option<u64>,
13990    #[prost(int64, optional, tag = "2")]
13991    pub rss_delta: ::core::option::Option<i64>,
13992    #[prost(uint64, optional, tag = "3")]
13993    pub i_ino: ::core::option::Option<u64>,
13994}
13995#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13996pub struct KvmAccessFaultFtraceEvent {
13997    #[prost(uint64, optional, tag = "1")]
13998    pub ipa: ::core::option::Option<u64>,
13999}
14000#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14001pub struct KvmAckIrqFtraceEvent {
14002    #[prost(uint32, optional, tag = "1")]
14003    pub irqchip: ::core::option::Option<u32>,
14004    #[prost(uint32, optional, tag = "2")]
14005    pub pin: ::core::option::Option<u32>,
14006}
14007#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14008pub struct KvmAgeHvaFtraceEvent {
14009    #[prost(uint64, optional, tag = "1")]
14010    pub end: ::core::option::Option<u64>,
14011    #[prost(uint64, optional, tag = "2")]
14012    pub start: ::core::option::Option<u64>,
14013}
14014#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14015pub struct KvmAgePageFtraceEvent {
14016    #[prost(uint64, optional, tag = "1")]
14017    pub gfn: ::core::option::Option<u64>,
14018    #[prost(uint64, optional, tag = "2")]
14019    pub hva: ::core::option::Option<u64>,
14020    #[prost(uint32, optional, tag = "3")]
14021    pub level: ::core::option::Option<u32>,
14022    #[prost(uint32, optional, tag = "4")]
14023    pub referenced: ::core::option::Option<u32>,
14024}
14025#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14026pub struct KvmArmClearDebugFtraceEvent {
14027    #[prost(uint32, optional, tag = "1")]
14028    pub guest_debug: ::core::option::Option<u32>,
14029}
14030#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14031pub struct KvmArmSetDreg32FtraceEvent {
14032    #[prost(string, optional, tag = "1")]
14033    pub name: ::core::option::Option<::prost::alloc::string::String>,
14034    #[prost(uint32, optional, tag = "2")]
14035    pub value: ::core::option::Option<u32>,
14036}
14037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14038pub struct KvmArmSetRegsetFtraceEvent {
14039    #[prost(int32, optional, tag = "1")]
14040    pub len: ::core::option::Option<i32>,
14041    #[prost(string, optional, tag = "2")]
14042    pub name: ::core::option::Option<::prost::alloc::string::String>,
14043}
14044#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14045pub struct KvmArmSetupDebugFtraceEvent {
14046    #[prost(uint32, optional, tag = "1")]
14047    pub guest_debug: ::core::option::Option<u32>,
14048    #[prost(uint64, optional, tag = "2")]
14049    pub vcpu: ::core::option::Option<u64>,
14050}
14051#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14052pub struct KvmEntryFtraceEvent {
14053    #[prost(uint64, optional, tag = "1")]
14054    pub vcpu_pc: ::core::option::Option<u64>,
14055}
14056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14057pub struct KvmExitFtraceEvent {
14058    #[prost(uint32, optional, tag = "1")]
14059    pub esr_ec: ::core::option::Option<u32>,
14060    #[prost(int32, optional, tag = "2")]
14061    pub ret: ::core::option::Option<i32>,
14062    #[prost(uint64, optional, tag = "3")]
14063    pub vcpu_pc: ::core::option::Option<u64>,
14064}
14065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14066pub struct KvmFpuFtraceEvent {
14067    #[prost(uint32, optional, tag = "1")]
14068    pub load: ::core::option::Option<u32>,
14069}
14070#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14071pub struct KvmGetTimerMapFtraceEvent {
14072    #[prost(int32, optional, tag = "1")]
14073    pub direct_ptimer: ::core::option::Option<i32>,
14074    #[prost(int32, optional, tag = "2")]
14075    pub direct_vtimer: ::core::option::Option<i32>,
14076    #[prost(int32, optional, tag = "3")]
14077    pub emul_ptimer: ::core::option::Option<i32>,
14078    #[prost(uint64, optional, tag = "4")]
14079    pub vcpu_id: ::core::option::Option<u64>,
14080}
14081#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14082pub struct KvmGuestFaultFtraceEvent {
14083    #[prost(uint64, optional, tag = "1")]
14084    pub hsr: ::core::option::Option<u64>,
14085    #[prost(uint64, optional, tag = "2")]
14086    pub hxfar: ::core::option::Option<u64>,
14087    #[prost(uint64, optional, tag = "3")]
14088    pub ipa: ::core::option::Option<u64>,
14089    #[prost(uint64, optional, tag = "4")]
14090    pub vcpu_pc: ::core::option::Option<u64>,
14091}
14092#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14093pub struct KvmHandleSysRegFtraceEvent {
14094    #[prost(uint64, optional, tag = "1")]
14095    pub hsr: ::core::option::Option<u64>,
14096}
14097#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14098pub struct KvmHvcArm64FtraceEvent {
14099    #[prost(uint64, optional, tag = "1")]
14100    pub imm: ::core::option::Option<u64>,
14101    #[prost(uint64, optional, tag = "2")]
14102    pub r0: ::core::option::Option<u64>,
14103    #[prost(uint64, optional, tag = "3")]
14104    pub vcpu_pc: ::core::option::Option<u64>,
14105}
14106#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14107pub struct KvmIrqLineFtraceEvent {
14108    #[prost(int32, optional, tag = "1")]
14109    pub irq_num: ::core::option::Option<i32>,
14110    #[prost(int32, optional, tag = "2")]
14111    pub level: ::core::option::Option<i32>,
14112    #[prost(uint32, optional, tag = "3")]
14113    pub r#type: ::core::option::Option<u32>,
14114    #[prost(int32, optional, tag = "4")]
14115    pub vcpu_idx: ::core::option::Option<i32>,
14116}
14117#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14118pub struct KvmMmioFtraceEvent {
14119    #[prost(uint64, optional, tag = "1")]
14120    pub gpa: ::core::option::Option<u64>,
14121    #[prost(uint32, optional, tag = "2")]
14122    pub len: ::core::option::Option<u32>,
14123    #[prost(uint32, optional, tag = "3")]
14124    pub r#type: ::core::option::Option<u32>,
14125    #[prost(uint64, optional, tag = "4")]
14126    pub val: ::core::option::Option<u64>,
14127}
14128#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14129pub struct KvmMmioEmulateFtraceEvent {
14130    #[prost(uint64, optional, tag = "1")]
14131    pub cpsr: ::core::option::Option<u64>,
14132    #[prost(uint64, optional, tag = "2")]
14133    pub instr: ::core::option::Option<u64>,
14134    #[prost(uint64, optional, tag = "3")]
14135    pub vcpu_pc: ::core::option::Option<u64>,
14136}
14137#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14138pub struct KvmSetGuestDebugFtraceEvent {
14139    #[prost(uint32, optional, tag = "1")]
14140    pub guest_debug: ::core::option::Option<u32>,
14141    #[prost(uint64, optional, tag = "2")]
14142    pub vcpu: ::core::option::Option<u64>,
14143}
14144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14145pub struct KvmSetIrqFtraceEvent {
14146    #[prost(uint32, optional, tag = "1")]
14147    pub gsi: ::core::option::Option<u32>,
14148    #[prost(int32, optional, tag = "2")]
14149    pub irq_source_id: ::core::option::Option<i32>,
14150    #[prost(int32, optional, tag = "3")]
14151    pub level: ::core::option::Option<i32>,
14152}
14153#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14154pub struct KvmSetSpteHvaFtraceEvent {
14155    #[prost(uint64, optional, tag = "1")]
14156    pub hva: ::core::option::Option<u64>,
14157}
14158#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14159pub struct KvmSetWayFlushFtraceEvent {
14160    #[prost(uint32, optional, tag = "1")]
14161    pub cache: ::core::option::Option<u32>,
14162    #[prost(uint64, optional, tag = "2")]
14163    pub vcpu_pc: ::core::option::Option<u64>,
14164}
14165#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14166pub struct KvmSysAccessFtraceEvent {
14167    #[prost(uint32, optional, tag = "1")]
14168    pub c_rm: ::core::option::Option<u32>,
14169    #[prost(uint32, optional, tag = "2")]
14170    pub c_rn: ::core::option::Option<u32>,
14171    #[prost(uint32, optional, tag = "3")]
14172    pub op0: ::core::option::Option<u32>,
14173    #[prost(uint32, optional, tag = "4")]
14174    pub op1: ::core::option::Option<u32>,
14175    #[prost(uint32, optional, tag = "5")]
14176    pub op2: ::core::option::Option<u32>,
14177    #[prost(uint32, optional, tag = "6")]
14178    pub is_write: ::core::option::Option<u32>,
14179    #[prost(string, optional, tag = "7")]
14180    pub name: ::core::option::Option<::prost::alloc::string::String>,
14181    #[prost(uint64, optional, tag = "8")]
14182    pub vcpu_pc: ::core::option::Option<u64>,
14183}
14184#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14185pub struct KvmTestAgeHvaFtraceEvent {
14186    #[prost(uint64, optional, tag = "1")]
14187    pub hva: ::core::option::Option<u64>,
14188}
14189#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14190pub struct KvmTimerEmulateFtraceEvent {
14191    #[prost(uint32, optional, tag = "1")]
14192    pub should_fire: ::core::option::Option<u32>,
14193    #[prost(int32, optional, tag = "2")]
14194    pub timer_idx: ::core::option::Option<i32>,
14195}
14196#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14197pub struct KvmTimerHrtimerExpireFtraceEvent {
14198    #[prost(int32, optional, tag = "1")]
14199    pub timer_idx: ::core::option::Option<i32>,
14200}
14201#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14202pub struct KvmTimerRestoreStateFtraceEvent {
14203    #[prost(uint64, optional, tag = "1")]
14204    pub ctl: ::core::option::Option<u64>,
14205    #[prost(uint64, optional, tag = "2")]
14206    pub cval: ::core::option::Option<u64>,
14207    #[prost(int32, optional, tag = "3")]
14208    pub timer_idx: ::core::option::Option<i32>,
14209}
14210#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14211pub struct KvmTimerSaveStateFtraceEvent {
14212    #[prost(uint64, optional, tag = "1")]
14213    pub ctl: ::core::option::Option<u64>,
14214    #[prost(uint64, optional, tag = "2")]
14215    pub cval: ::core::option::Option<u64>,
14216    #[prost(int32, optional, tag = "3")]
14217    pub timer_idx: ::core::option::Option<i32>,
14218}
14219#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14220pub struct KvmTimerUpdateIrqFtraceEvent {
14221    #[prost(uint32, optional, tag = "1")]
14222    pub irq: ::core::option::Option<u32>,
14223    #[prost(int32, optional, tag = "2")]
14224    pub level: ::core::option::Option<i32>,
14225    #[prost(uint64, optional, tag = "3")]
14226    pub vcpu_id: ::core::option::Option<u64>,
14227}
14228#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14229pub struct KvmToggleCacheFtraceEvent {
14230    #[prost(uint32, optional, tag = "1")]
14231    pub now: ::core::option::Option<u32>,
14232    #[prost(uint64, optional, tag = "2")]
14233    pub vcpu_pc: ::core::option::Option<u64>,
14234    #[prost(uint32, optional, tag = "3")]
14235    pub was: ::core::option::Option<u32>,
14236}
14237#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14238pub struct KvmUnmapHvaRangeFtraceEvent {
14239    #[prost(uint64, optional, tag = "1")]
14240    pub end: ::core::option::Option<u64>,
14241    #[prost(uint64, optional, tag = "2")]
14242    pub start: ::core::option::Option<u64>,
14243}
14244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14245pub struct KvmUserspaceExitFtraceEvent {
14246    #[prost(uint32, optional, tag = "1")]
14247    pub reason: ::core::option::Option<u32>,
14248}
14249#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14250pub struct KvmVcpuWakeupFtraceEvent {
14251    #[prost(uint64, optional, tag = "1")]
14252    pub ns: ::core::option::Option<u64>,
14253    #[prost(uint32, optional, tag = "2")]
14254    pub valid: ::core::option::Option<u32>,
14255    #[prost(uint32, optional, tag = "3")]
14256    pub waited: ::core::option::Option<u32>,
14257}
14258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14259pub struct KvmWfxArm64FtraceEvent {
14260    #[prost(uint32, optional, tag = "1")]
14261    pub is_wfe: ::core::option::Option<u32>,
14262    #[prost(uint64, optional, tag = "2")]
14263    pub vcpu_pc: ::core::option::Option<u64>,
14264}
14265#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14266pub struct TrapRegFtraceEvent {
14267    #[prost(string, optional, tag = "1")]
14268    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
14269    #[prost(uint32, optional, tag = "2")]
14270    pub is_write: ::core::option::Option<u32>,
14271    #[prost(int32, optional, tag = "3")]
14272    pub reg: ::core::option::Option<i32>,
14273    #[prost(uint64, optional, tag = "4")]
14274    pub write_value: ::core::option::Option<u64>,
14275}
14276#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14277pub struct VgicUpdateIrqPendingFtraceEvent {
14278    #[prost(uint32, optional, tag = "1")]
14279    pub irq: ::core::option::Option<u32>,
14280    #[prost(uint32, optional, tag = "2")]
14281    pub level: ::core::option::Option<u32>,
14282    #[prost(uint64, optional, tag = "3")]
14283    pub vcpu_id: ::core::option::Option<u64>,
14284}
14285#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14286pub struct LowmemoryKillFtraceEvent {
14287    #[prost(string, optional, tag = "1")]
14288    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14289    #[prost(int32, optional, tag = "2")]
14290    pub pid: ::core::option::Option<i32>,
14291    #[prost(int64, optional, tag = "3")]
14292    pub pagecache_size: ::core::option::Option<i64>,
14293    #[prost(int64, optional, tag = "4")]
14294    pub pagecache_limit: ::core::option::Option<i64>,
14295    #[prost(int64, optional, tag = "5")]
14296    pub free: ::core::option::Option<i64>,
14297}
14298#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14299pub struct LwisTracingMarkWriteFtraceEvent {
14300    #[prost(string, optional, tag = "1")]
14301    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
14302    #[prost(uint32, optional, tag = "2")]
14303    pub r#type: ::core::option::Option<u32>,
14304    #[prost(int32, optional, tag = "3")]
14305    pub pid: ::core::option::Option<i32>,
14306    #[prost(string, optional, tag = "4")]
14307    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
14308    #[prost(int64, optional, tag = "5")]
14309    pub value: ::core::option::Option<i64>,
14310}
14311#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14312pub struct MaliTracingMarkWriteFtraceEvent {
14313    #[prost(string, optional, tag = "1")]
14314    pub name: ::core::option::Option<::prost::alloc::string::String>,
14315    #[prost(int32, optional, tag = "2")]
14316    pub pid: ::core::option::Option<i32>,
14317    #[prost(uint32, optional, tag = "3")]
14318    pub r#type: ::core::option::Option<u32>,
14319    #[prost(int32, optional, tag = "4")]
14320    pub value: ::core::option::Option<i32>,
14321}
14322#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14323pub struct MaliMaliKcpucqssetFtraceEvent {
14324    #[prost(uint32, optional, tag = "1")]
14325    pub id: ::core::option::Option<u32>,
14326    #[prost(uint64, optional, tag = "2")]
14327    pub info_val1: ::core::option::Option<u64>,
14328    #[prost(uint64, optional, tag = "3")]
14329    pub info_val2: ::core::option::Option<u64>,
14330    #[prost(uint32, optional, tag = "4")]
14331    pub kctx_id: ::core::option::Option<u32>,
14332    #[prost(int32, optional, tag = "5")]
14333    pub kctx_tgid: ::core::option::Option<i32>,
14334}
14335#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14336pub struct MaliMaliKcpucqswaitstartFtraceEvent {
14337    #[prost(uint32, optional, tag = "1")]
14338    pub id: ::core::option::Option<u32>,
14339    #[prost(uint64, optional, tag = "2")]
14340    pub info_val1: ::core::option::Option<u64>,
14341    #[prost(uint64, optional, tag = "3")]
14342    pub info_val2: ::core::option::Option<u64>,
14343    #[prost(uint32, optional, tag = "4")]
14344    pub kctx_id: ::core::option::Option<u32>,
14345    #[prost(int32, optional, tag = "5")]
14346    pub kctx_tgid: ::core::option::Option<i32>,
14347}
14348#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14349pub struct MaliMaliKcpucqswaitendFtraceEvent {
14350    #[prost(uint32, optional, tag = "1")]
14351    pub id: ::core::option::Option<u32>,
14352    #[prost(uint64, optional, tag = "2")]
14353    pub info_val1: ::core::option::Option<u64>,
14354    #[prost(uint64, optional, tag = "3")]
14355    pub info_val2: ::core::option::Option<u64>,
14356    #[prost(uint32, optional, tag = "4")]
14357    pub kctx_id: ::core::option::Option<u32>,
14358    #[prost(int32, optional, tag = "5")]
14359    pub kctx_tgid: ::core::option::Option<i32>,
14360}
14361#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14362pub struct MaliMaliKcpufencesignalFtraceEvent {
14363    #[prost(uint64, optional, tag = "1")]
14364    pub info_val1: ::core::option::Option<u64>,
14365    #[prost(uint64, optional, tag = "2")]
14366    pub info_val2: ::core::option::Option<u64>,
14367    #[prost(int32, optional, tag = "3")]
14368    pub kctx_tgid: ::core::option::Option<i32>,
14369    #[prost(uint32, optional, tag = "4")]
14370    pub kctx_id: ::core::option::Option<u32>,
14371    #[prost(uint32, optional, tag = "5")]
14372    pub id: ::core::option::Option<u32>,
14373}
14374#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14375pub struct MaliMaliKcpufencewaitstartFtraceEvent {
14376    #[prost(uint64, optional, tag = "1")]
14377    pub info_val1: ::core::option::Option<u64>,
14378    #[prost(uint64, optional, tag = "2")]
14379    pub info_val2: ::core::option::Option<u64>,
14380    #[prost(int32, optional, tag = "3")]
14381    pub kctx_tgid: ::core::option::Option<i32>,
14382    #[prost(uint32, optional, tag = "4")]
14383    pub kctx_id: ::core::option::Option<u32>,
14384    #[prost(uint32, optional, tag = "5")]
14385    pub id: ::core::option::Option<u32>,
14386}
14387#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14388pub struct MaliMaliKcpufencewaitendFtraceEvent {
14389    #[prost(uint64, optional, tag = "1")]
14390    pub info_val1: ::core::option::Option<u64>,
14391    #[prost(uint64, optional, tag = "2")]
14392    pub info_val2: ::core::option::Option<u64>,
14393    #[prost(int32, optional, tag = "3")]
14394    pub kctx_tgid: ::core::option::Option<i32>,
14395    #[prost(uint32, optional, tag = "4")]
14396    pub kctx_id: ::core::option::Option<u32>,
14397    #[prost(uint32, optional, tag = "5")]
14398    pub id: ::core::option::Option<u32>,
14399}
14400#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14401pub struct MaliMaliCsfinterruptstartFtraceEvent {
14402    #[prost(int32, optional, tag = "1")]
14403    pub kctx_tgid: ::core::option::Option<i32>,
14404    #[prost(uint32, optional, tag = "2")]
14405    pub kctx_id: ::core::option::Option<u32>,
14406    #[prost(uint64, optional, tag = "3")]
14407    pub info_val: ::core::option::Option<u64>,
14408}
14409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14410pub struct MaliMaliCsfinterruptendFtraceEvent {
14411    #[prost(int32, optional, tag = "1")]
14412    pub kctx_tgid: ::core::option::Option<i32>,
14413    #[prost(uint32, optional, tag = "2")]
14414    pub kctx_id: ::core::option::Option<u32>,
14415    #[prost(uint64, optional, tag = "3")]
14416    pub info_val: ::core::option::Option<u64>,
14417}
14418#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14419pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
14420    #[prost(int32, optional, tag = "1")]
14421    pub kctx_tgid: ::core::option::Option<i32>,
14422    #[prost(uint32, optional, tag = "2")]
14423    pub kctx_id: ::core::option::Option<u32>,
14424    #[prost(uint64, optional, tag = "3")]
14425    pub info_val: ::core::option::Option<u64>,
14426}
14427#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14428pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
14429    #[prost(int32, optional, tag = "1")]
14430    pub kctx_tgid: ::core::option::Option<i32>,
14431    #[prost(uint32, optional, tag = "2")]
14432    pub kctx_id: ::core::option::Option<u32>,
14433    #[prost(uint64, optional, tag = "3")]
14434    pub info_val: ::core::option::Option<u64>,
14435}
14436#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14437pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
14438    #[prost(int32, optional, tag = "1")]
14439    pub kctx_tgid: ::core::option::Option<i32>,
14440    #[prost(uint32, optional, tag = "2")]
14441    pub kctx_id: ::core::option::Option<u32>,
14442    #[prost(uint64, optional, tag = "3")]
14443    pub info_val: ::core::option::Option<u64>,
14444}
14445#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14446pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
14447    #[prost(int32, optional, tag = "1")]
14448    pub kctx_tgid: ::core::option::Option<i32>,
14449    #[prost(uint32, optional, tag = "2")]
14450    pub kctx_id: ::core::option::Option<u32>,
14451    #[prost(uint64, optional, tag = "3")]
14452    pub info_val: ::core::option::Option<u64>,
14453}
14454#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14455pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
14456    #[prost(int32, optional, tag = "1")]
14457    pub kctx_tgid: ::core::option::Option<i32>,
14458    #[prost(uint32, optional, tag = "2")]
14459    pub kctx_id: ::core::option::Option<u32>,
14460    #[prost(uint64, optional, tag = "3")]
14461    pub info_val: ::core::option::Option<u64>,
14462}
14463#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14464pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
14465    #[prost(int32, optional, tag = "1")]
14466    pub kctx_tgid: ::core::option::Option<i32>,
14467    #[prost(uint32, optional, tag = "2")]
14468    pub kctx_id: ::core::option::Option<u32>,
14469    #[prost(uint64, optional, tag = "3")]
14470    pub info_val: ::core::option::Option<u64>,
14471}
14472#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14473pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
14474    #[prost(int32, optional, tag = "1")]
14475    pub kctx_tgid: ::core::option::Option<i32>,
14476    #[prost(uint32, optional, tag = "2")]
14477    pub kctx_id: ::core::option::Option<u32>,
14478    #[prost(uint64, optional, tag = "3")]
14479    pub info_val: ::core::option::Option<u64>,
14480}
14481#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14482pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
14483    #[prost(int32, optional, tag = "1")]
14484    pub kctx_tgid: ::core::option::Option<i32>,
14485    #[prost(uint32, optional, tag = "2")]
14486    pub kctx_id: ::core::option::Option<u32>,
14487    #[prost(uint64, optional, tag = "3")]
14488    pub info_val: ::core::option::Option<u64>,
14489}
14490#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14491pub struct MaliMaliPmmcuinsleepFtraceEvent {
14492    #[prost(int32, optional, tag = "1")]
14493    pub kctx_tgid: ::core::option::Option<i32>,
14494    #[prost(uint32, optional, tag = "2")]
14495    pub kctx_id: ::core::option::Option<u32>,
14496    #[prost(uint64, optional, tag = "3")]
14497    pub info_val: ::core::option::Option<u64>,
14498}
14499#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14500pub struct MaliMaliPmmcuoffFtraceEvent {
14501    #[prost(int32, optional, tag = "1")]
14502    pub kctx_tgid: ::core::option::Option<i32>,
14503    #[prost(uint32, optional, tag = "2")]
14504    pub kctx_id: ::core::option::Option<u32>,
14505    #[prost(uint64, optional, tag = "3")]
14506    pub info_val: ::core::option::Option<u64>,
14507}
14508#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14509pub struct MaliMaliPmmcuonFtraceEvent {
14510    #[prost(int32, optional, tag = "1")]
14511    pub kctx_tgid: ::core::option::Option<i32>,
14512    #[prost(uint32, optional, tag = "2")]
14513    pub kctx_id: ::core::option::Option<u32>,
14514    #[prost(uint64, optional, tag = "3")]
14515    pub info_val: ::core::option::Option<u64>,
14516}
14517#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14518pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
14519    #[prost(int32, optional, tag = "1")]
14520    pub kctx_tgid: ::core::option::Option<i32>,
14521    #[prost(uint32, optional, tag = "2")]
14522    pub kctx_id: ::core::option::Option<u32>,
14523    #[prost(uint64, optional, tag = "3")]
14524    pub info_val: ::core::option::Option<u64>,
14525}
14526#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14527pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
14528    #[prost(int32, optional, tag = "1")]
14529    pub kctx_tgid: ::core::option::Option<i32>,
14530    #[prost(uint32, optional, tag = "2")]
14531    pub kctx_id: ::core::option::Option<u32>,
14532    #[prost(uint64, optional, tag = "3")]
14533    pub info_val: ::core::option::Option<u64>,
14534}
14535#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14536pub struct MaliMaliPmmcuonhaltFtraceEvent {
14537    #[prost(int32, optional, tag = "1")]
14538    pub kctx_tgid: ::core::option::Option<i32>,
14539    #[prost(uint32, optional, tag = "2")]
14540    pub kctx_id: ::core::option::Option<u32>,
14541    #[prost(uint64, optional, tag = "3")]
14542    pub info_val: ::core::option::Option<u64>,
14543}
14544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14545pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
14546    #[prost(int32, optional, tag = "1")]
14547    pub kctx_tgid: ::core::option::Option<i32>,
14548    #[prost(uint32, optional, tag = "2")]
14549    pub kctx_id: ::core::option::Option<u32>,
14550    #[prost(uint64, optional, tag = "3")]
14551    pub info_val: ::core::option::Option<u64>,
14552}
14553#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14554pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
14555    #[prost(int32, optional, tag = "1")]
14556    pub kctx_tgid: ::core::option::Option<i32>,
14557    #[prost(uint32, optional, tag = "2")]
14558    pub kctx_id: ::core::option::Option<u32>,
14559    #[prost(uint64, optional, tag = "3")]
14560    pub info_val: ::core::option::Option<u64>,
14561}
14562#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14563pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
14564    #[prost(int32, optional, tag = "1")]
14565    pub kctx_tgid: ::core::option::Option<i32>,
14566    #[prost(uint32, optional, tag = "2")]
14567    pub kctx_id: ::core::option::Option<u32>,
14568    #[prost(uint64, optional, tag = "3")]
14569    pub info_val: ::core::option::Option<u64>,
14570}
14571#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14572pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
14573    #[prost(int32, optional, tag = "1")]
14574    pub kctx_tgid: ::core::option::Option<i32>,
14575    #[prost(uint32, optional, tag = "2")]
14576    pub kctx_id: ::core::option::Option<u32>,
14577    #[prost(uint64, optional, tag = "3")]
14578    pub info_val: ::core::option::Option<u64>,
14579}
14580#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14581pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
14582    #[prost(int32, optional, tag = "1")]
14583    pub kctx_tgid: ::core::option::Option<i32>,
14584    #[prost(uint32, optional, tag = "2")]
14585    pub kctx_id: ::core::option::Option<u32>,
14586    #[prost(uint64, optional, tag = "3")]
14587    pub info_val: ::core::option::Option<u64>,
14588}
14589#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14590pub struct MaliMaliPmmcupendoffFtraceEvent {
14591    #[prost(int32, optional, tag = "1")]
14592    pub kctx_tgid: ::core::option::Option<i32>,
14593    #[prost(uint32, optional, tag = "2")]
14594    pub kctx_id: ::core::option::Option<u32>,
14595    #[prost(uint64, optional, tag = "3")]
14596    pub info_val: ::core::option::Option<u64>,
14597}
14598#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14599pub struct MaliMaliPmmcupendonreloadFtraceEvent {
14600    #[prost(int32, optional, tag = "1")]
14601    pub kctx_tgid: ::core::option::Option<i32>,
14602    #[prost(uint32, optional, tag = "2")]
14603    pub kctx_id: ::core::option::Option<u32>,
14604    #[prost(uint64, optional, tag = "3")]
14605    pub info_val: ::core::option::Option<u64>,
14606}
14607#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14608pub struct MaliMaliPmmcupowerdownFtraceEvent {
14609    #[prost(int32, optional, tag = "1")]
14610    pub kctx_tgid: ::core::option::Option<i32>,
14611    #[prost(uint32, optional, tag = "2")]
14612    pub kctx_id: ::core::option::Option<u32>,
14613    #[prost(uint64, optional, tag = "3")]
14614    pub info_val: ::core::option::Option<u64>,
14615}
14616#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14617pub struct MaliMaliPmmcuresetwaitFtraceEvent {
14618    #[prost(int32, optional, tag = "1")]
14619    pub kctx_tgid: ::core::option::Option<i32>,
14620    #[prost(uint32, optional, tag = "2")]
14621    pub kctx_id: ::core::option::Option<u32>,
14622    #[prost(uint64, optional, tag = "3")]
14623    pub info_val: ::core::option::Option<u64>,
14624}
14625#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14626pub struct MaliGpuPowerStateFtraceEvent {
14627    #[prost(uint64, optional, tag = "1")]
14628    pub change_ns: ::core::option::Option<u64>,
14629    #[prost(int32, optional, tag = "2")]
14630    pub from_state: ::core::option::Option<i32>,
14631    #[prost(int32, optional, tag = "3")]
14632    pub to_state: ::core::option::Option<i32>,
14633}
14634#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14635pub struct MdpCmdKickoffFtraceEvent {
14636    #[prost(uint32, optional, tag = "1")]
14637    pub ctl_num: ::core::option::Option<u32>,
14638    #[prost(int32, optional, tag = "2")]
14639    pub kickoff_cnt: ::core::option::Option<i32>,
14640}
14641#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14642pub struct MdpCommitFtraceEvent {
14643    #[prost(uint32, optional, tag = "1")]
14644    pub num: ::core::option::Option<u32>,
14645    #[prost(uint32, optional, tag = "2")]
14646    pub play_cnt: ::core::option::Option<u32>,
14647    #[prost(uint32, optional, tag = "3")]
14648    pub clk_rate: ::core::option::Option<u32>,
14649    #[prost(uint64, optional, tag = "4")]
14650    pub bandwidth: ::core::option::Option<u64>,
14651}
14652#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14653pub struct MdpPerfSetOtFtraceEvent {
14654    #[prost(uint32, optional, tag = "1")]
14655    pub pnum: ::core::option::Option<u32>,
14656    #[prost(uint32, optional, tag = "2")]
14657    pub xin_id: ::core::option::Option<u32>,
14658    #[prost(uint32, optional, tag = "3")]
14659    pub rd_lim: ::core::option::Option<u32>,
14660    #[prost(uint32, optional, tag = "4")]
14661    pub is_vbif_rt: ::core::option::Option<u32>,
14662}
14663#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14664pub struct MdpSsppChangeFtraceEvent {
14665    #[prost(uint32, optional, tag = "1")]
14666    pub num: ::core::option::Option<u32>,
14667    #[prost(uint32, optional, tag = "2")]
14668    pub play_cnt: ::core::option::Option<u32>,
14669    #[prost(uint32, optional, tag = "3")]
14670    pub mixer: ::core::option::Option<u32>,
14671    #[prost(uint32, optional, tag = "4")]
14672    pub stage: ::core::option::Option<u32>,
14673    #[prost(uint32, optional, tag = "5")]
14674    pub flags: ::core::option::Option<u32>,
14675    #[prost(uint32, optional, tag = "6")]
14676    pub format: ::core::option::Option<u32>,
14677    #[prost(uint32, optional, tag = "7")]
14678    pub img_w: ::core::option::Option<u32>,
14679    #[prost(uint32, optional, tag = "8")]
14680    pub img_h: ::core::option::Option<u32>,
14681    #[prost(uint32, optional, tag = "9")]
14682    pub src_x: ::core::option::Option<u32>,
14683    #[prost(uint32, optional, tag = "10")]
14684    pub src_y: ::core::option::Option<u32>,
14685    #[prost(uint32, optional, tag = "11")]
14686    pub src_w: ::core::option::Option<u32>,
14687    #[prost(uint32, optional, tag = "12")]
14688    pub src_h: ::core::option::Option<u32>,
14689    #[prost(uint32, optional, tag = "13")]
14690    pub dst_x: ::core::option::Option<u32>,
14691    #[prost(uint32, optional, tag = "14")]
14692    pub dst_y: ::core::option::Option<u32>,
14693    #[prost(uint32, optional, tag = "15")]
14694    pub dst_w: ::core::option::Option<u32>,
14695    #[prost(uint32, optional, tag = "16")]
14696    pub dst_h: ::core::option::Option<u32>,
14697}
14698#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14699pub struct TracingMarkWriteFtraceEvent {
14700    #[prost(int32, optional, tag = "1")]
14701    pub pid: ::core::option::Option<i32>,
14702    #[prost(string, optional, tag = "2")]
14703    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
14704    #[prost(uint32, optional, tag = "3")]
14705    pub trace_begin: ::core::option::Option<u32>,
14706}
14707#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14708pub struct MdpCmdPingpongDoneFtraceEvent {
14709    #[prost(uint32, optional, tag = "1")]
14710    pub ctl_num: ::core::option::Option<u32>,
14711    #[prost(uint32, optional, tag = "2")]
14712    pub intf_num: ::core::option::Option<u32>,
14713    #[prost(uint32, optional, tag = "3")]
14714    pub pp_num: ::core::option::Option<u32>,
14715    #[prost(int32, optional, tag = "4")]
14716    pub koff_cnt: ::core::option::Option<i32>,
14717}
14718#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14719pub struct MdpCompareBwFtraceEvent {
14720    #[prost(uint64, optional, tag = "1")]
14721    pub new_ab: ::core::option::Option<u64>,
14722    #[prost(uint64, optional, tag = "2")]
14723    pub new_ib: ::core::option::Option<u64>,
14724    #[prost(uint64, optional, tag = "3")]
14725    pub new_wb: ::core::option::Option<u64>,
14726    #[prost(uint64, optional, tag = "4")]
14727    pub old_ab: ::core::option::Option<u64>,
14728    #[prost(uint64, optional, tag = "5")]
14729    pub old_ib: ::core::option::Option<u64>,
14730    #[prost(uint64, optional, tag = "6")]
14731    pub old_wb: ::core::option::Option<u64>,
14732    #[prost(uint32, optional, tag = "7")]
14733    pub params_changed: ::core::option::Option<u32>,
14734    #[prost(uint32, optional, tag = "8")]
14735    pub update_bw: ::core::option::Option<u32>,
14736}
14737#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14738pub struct MdpPerfSetPanicLutsFtraceEvent {
14739    #[prost(uint32, optional, tag = "1")]
14740    pub pnum: ::core::option::Option<u32>,
14741    #[prost(uint32, optional, tag = "2")]
14742    pub fmt: ::core::option::Option<u32>,
14743    #[prost(uint32, optional, tag = "3")]
14744    pub mode: ::core::option::Option<u32>,
14745    #[prost(uint32, optional, tag = "4")]
14746    pub panic_lut: ::core::option::Option<u32>,
14747    #[prost(uint32, optional, tag = "5")]
14748    pub robust_lut: ::core::option::Option<u32>,
14749}
14750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14751pub struct MdpSsppSetFtraceEvent {
14752    #[prost(uint32, optional, tag = "1")]
14753    pub num: ::core::option::Option<u32>,
14754    #[prost(uint32, optional, tag = "2")]
14755    pub play_cnt: ::core::option::Option<u32>,
14756    #[prost(uint32, optional, tag = "3")]
14757    pub mixer: ::core::option::Option<u32>,
14758    #[prost(uint32, optional, tag = "4")]
14759    pub stage: ::core::option::Option<u32>,
14760    #[prost(uint32, optional, tag = "5")]
14761    pub flags: ::core::option::Option<u32>,
14762    #[prost(uint32, optional, tag = "6")]
14763    pub format: ::core::option::Option<u32>,
14764    #[prost(uint32, optional, tag = "7")]
14765    pub img_w: ::core::option::Option<u32>,
14766    #[prost(uint32, optional, tag = "8")]
14767    pub img_h: ::core::option::Option<u32>,
14768    #[prost(uint32, optional, tag = "9")]
14769    pub src_x: ::core::option::Option<u32>,
14770    #[prost(uint32, optional, tag = "10")]
14771    pub src_y: ::core::option::Option<u32>,
14772    #[prost(uint32, optional, tag = "11")]
14773    pub src_w: ::core::option::Option<u32>,
14774    #[prost(uint32, optional, tag = "12")]
14775    pub src_h: ::core::option::Option<u32>,
14776    #[prost(uint32, optional, tag = "13")]
14777    pub dst_x: ::core::option::Option<u32>,
14778    #[prost(uint32, optional, tag = "14")]
14779    pub dst_y: ::core::option::Option<u32>,
14780    #[prost(uint32, optional, tag = "15")]
14781    pub dst_w: ::core::option::Option<u32>,
14782    #[prost(uint32, optional, tag = "16")]
14783    pub dst_h: ::core::option::Option<u32>,
14784}
14785#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14786pub struct MdpCmdReadptrDoneFtraceEvent {
14787    #[prost(uint32, optional, tag = "1")]
14788    pub ctl_num: ::core::option::Option<u32>,
14789    #[prost(int32, optional, tag = "2")]
14790    pub koff_cnt: ::core::option::Option<i32>,
14791}
14792#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14793pub struct MdpMisrCrcFtraceEvent {
14794    #[prost(uint32, optional, tag = "1")]
14795    pub block_id: ::core::option::Option<u32>,
14796    #[prost(uint32, optional, tag = "2")]
14797    pub vsync_cnt: ::core::option::Option<u32>,
14798    #[prost(uint32, optional, tag = "3")]
14799    pub crc: ::core::option::Option<u32>,
14800}
14801#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14802pub struct MdpPerfSetQosLutsFtraceEvent {
14803    #[prost(uint32, optional, tag = "1")]
14804    pub pnum: ::core::option::Option<u32>,
14805    #[prost(uint32, optional, tag = "2")]
14806    pub fmt: ::core::option::Option<u32>,
14807    #[prost(uint32, optional, tag = "3")]
14808    pub intf: ::core::option::Option<u32>,
14809    #[prost(uint32, optional, tag = "4")]
14810    pub rot: ::core::option::Option<u32>,
14811    #[prost(uint32, optional, tag = "5")]
14812    pub fl: ::core::option::Option<u32>,
14813    #[prost(uint32, optional, tag = "6")]
14814    pub lut: ::core::option::Option<u32>,
14815    #[prost(uint32, optional, tag = "7")]
14816    pub linear: ::core::option::Option<u32>,
14817}
14818#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14819pub struct MdpTraceCounterFtraceEvent {
14820    #[prost(int32, optional, tag = "1")]
14821    pub pid: ::core::option::Option<i32>,
14822    #[prost(string, optional, tag = "2")]
14823    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
14824    #[prost(int32, optional, tag = "3")]
14825    pub value: ::core::option::Option<i32>,
14826}
14827#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14828pub struct MdpCmdReleaseBwFtraceEvent {
14829    #[prost(uint32, optional, tag = "1")]
14830    pub ctl_num: ::core::option::Option<u32>,
14831}
14832#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14833pub struct MdpMixerUpdateFtraceEvent {
14834    #[prost(uint32, optional, tag = "1")]
14835    pub mixer_num: ::core::option::Option<u32>,
14836}
14837#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14838pub struct MdpPerfSetWmLevelsFtraceEvent {
14839    #[prost(uint32, optional, tag = "1")]
14840    pub pnum: ::core::option::Option<u32>,
14841    #[prost(uint32, optional, tag = "2")]
14842    pub use_space: ::core::option::Option<u32>,
14843    #[prost(uint32, optional, tag = "3")]
14844    pub priority_bytes: ::core::option::Option<u32>,
14845    #[prost(uint32, optional, tag = "4")]
14846    pub wm0: ::core::option::Option<u32>,
14847    #[prost(uint32, optional, tag = "5")]
14848    pub wm1: ::core::option::Option<u32>,
14849    #[prost(uint32, optional, tag = "6")]
14850    pub wm2: ::core::option::Option<u32>,
14851    #[prost(uint32, optional, tag = "7")]
14852    pub mb_cnt: ::core::option::Option<u32>,
14853    #[prost(uint32, optional, tag = "8")]
14854    pub mb_size: ::core::option::Option<u32>,
14855}
14856#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14857pub struct MdpVideoUnderrunDoneFtraceEvent {
14858    #[prost(uint32, optional, tag = "1")]
14859    pub ctl_num: ::core::option::Option<u32>,
14860    #[prost(uint32, optional, tag = "2")]
14861    pub underrun_cnt: ::core::option::Option<u32>,
14862}
14863#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14864pub struct MdpCmdWaitPingpongFtraceEvent {
14865    #[prost(uint32, optional, tag = "1")]
14866    pub ctl_num: ::core::option::Option<u32>,
14867    #[prost(int32, optional, tag = "2")]
14868    pub kickoff_cnt: ::core::option::Option<i32>,
14869}
14870#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14871pub struct MdpPerfPrefillCalcFtraceEvent {
14872    #[prost(uint32, optional, tag = "1")]
14873    pub pnum: ::core::option::Option<u32>,
14874    #[prost(uint32, optional, tag = "2")]
14875    pub latency_buf: ::core::option::Option<u32>,
14876    #[prost(uint32, optional, tag = "3")]
14877    pub ot: ::core::option::Option<u32>,
14878    #[prost(uint32, optional, tag = "4")]
14879    pub y_buf: ::core::option::Option<u32>,
14880    #[prost(uint32, optional, tag = "5")]
14881    pub y_scaler: ::core::option::Option<u32>,
14882    #[prost(uint32, optional, tag = "6")]
14883    pub pp_lines: ::core::option::Option<u32>,
14884    #[prost(uint32, optional, tag = "7")]
14885    pub pp_bytes: ::core::option::Option<u32>,
14886    #[prost(uint32, optional, tag = "8")]
14887    pub post_sc: ::core::option::Option<u32>,
14888    #[prost(uint32, optional, tag = "9")]
14889    pub fbc_bytes: ::core::option::Option<u32>,
14890    #[prost(uint32, optional, tag = "10")]
14891    pub prefill_bytes: ::core::option::Option<u32>,
14892}
14893#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14894pub struct MdpPerfUpdateBusFtraceEvent {
14895    #[prost(int32, optional, tag = "1")]
14896    pub client: ::core::option::Option<i32>,
14897    #[prost(uint64, optional, tag = "2")]
14898    pub ab_quota: ::core::option::Option<u64>,
14899    #[prost(uint64, optional, tag = "3")]
14900    pub ib_quota: ::core::option::Option<u64>,
14901}
14902#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14903pub struct RotatorBwAoAsContextFtraceEvent {
14904    #[prost(uint32, optional, tag = "1")]
14905    pub state: ::core::option::Option<u32>,
14906}
14907#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14908pub struct MmEventRecordFtraceEvent {
14909    #[prost(uint32, optional, tag = "1")]
14910    pub avg_lat: ::core::option::Option<u32>,
14911    #[prost(uint32, optional, tag = "2")]
14912    pub count: ::core::option::Option<u32>,
14913    #[prost(uint32, optional, tag = "3")]
14914    pub max_lat: ::core::option::Option<u32>,
14915    #[prost(uint32, optional, tag = "4")]
14916    pub r#type: ::core::option::Option<u32>,
14917}
14918#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14919pub struct NetifReceiveSkbFtraceEvent {
14920    #[prost(uint32, optional, tag = "1")]
14921    pub len: ::core::option::Option<u32>,
14922    #[prost(string, optional, tag = "2")]
14923    pub name: ::core::option::Option<::prost::alloc::string::String>,
14924    #[prost(uint64, optional, tag = "3")]
14925    pub skbaddr: ::core::option::Option<u64>,
14926}
14927#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14928pub struct NetDevXmitFtraceEvent {
14929    #[prost(uint32, optional, tag = "1")]
14930    pub len: ::core::option::Option<u32>,
14931    #[prost(string, optional, tag = "2")]
14932    pub name: ::core::option::Option<::prost::alloc::string::String>,
14933    #[prost(int32, optional, tag = "3")]
14934    pub rc: ::core::option::Option<i32>,
14935    #[prost(uint64, optional, tag = "4")]
14936    pub skbaddr: ::core::option::Option<u64>,
14937}
14938#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14939pub struct NapiGroReceiveEntryFtraceEvent {
14940    #[prost(uint32, optional, tag = "1")]
14941    pub data_len: ::core::option::Option<u32>,
14942    #[prost(uint32, optional, tag = "2")]
14943    pub gso_size: ::core::option::Option<u32>,
14944    #[prost(uint32, optional, tag = "3")]
14945    pub gso_type: ::core::option::Option<u32>,
14946    #[prost(uint32, optional, tag = "4")]
14947    pub hash: ::core::option::Option<u32>,
14948    #[prost(uint32, optional, tag = "5")]
14949    pub ip_summed: ::core::option::Option<u32>,
14950    #[prost(uint32, optional, tag = "6")]
14951    pub l4_hash: ::core::option::Option<u32>,
14952    #[prost(uint32, optional, tag = "7")]
14953    pub len: ::core::option::Option<u32>,
14954    #[prost(int32, optional, tag = "8")]
14955    pub mac_header: ::core::option::Option<i32>,
14956    #[prost(uint32, optional, tag = "9")]
14957    pub mac_header_valid: ::core::option::Option<u32>,
14958    #[prost(string, optional, tag = "10")]
14959    pub name: ::core::option::Option<::prost::alloc::string::String>,
14960    #[prost(uint32, optional, tag = "11")]
14961    pub napi_id: ::core::option::Option<u32>,
14962    #[prost(uint32, optional, tag = "12")]
14963    pub nr_frags: ::core::option::Option<u32>,
14964    #[prost(uint32, optional, tag = "13")]
14965    pub protocol: ::core::option::Option<u32>,
14966    #[prost(uint32, optional, tag = "14")]
14967    pub queue_mapping: ::core::option::Option<u32>,
14968    #[prost(uint64, optional, tag = "15")]
14969    pub skbaddr: ::core::option::Option<u64>,
14970    #[prost(uint32, optional, tag = "16")]
14971    pub truesize: ::core::option::Option<u32>,
14972    #[prost(uint32, optional, tag = "17")]
14973    pub vlan_proto: ::core::option::Option<u32>,
14974    #[prost(uint32, optional, tag = "18")]
14975    pub vlan_tagged: ::core::option::Option<u32>,
14976    #[prost(uint32, optional, tag = "19")]
14977    pub vlan_tci: ::core::option::Option<u32>,
14978}
14979#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14980pub struct NapiGroReceiveExitFtraceEvent {
14981    #[prost(int32, optional, tag = "1")]
14982    pub ret: ::core::option::Option<i32>,
14983}
14984#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14985pub struct OomScoreAdjUpdateFtraceEvent {
14986    #[prost(string, optional, tag = "1")]
14987    pub comm: ::core::option::Option<::prost::alloc::string::String>,
14988    #[prost(int32, optional, tag = "2")]
14989    pub oom_score_adj: ::core::option::Option<i32>,
14990    #[prost(int32, optional, tag = "3")]
14991    pub pid: ::core::option::Option<i32>,
14992}
14993#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14994pub struct MarkVictimFtraceEvent {
14995    #[prost(int32, optional, tag = "1")]
14996    pub pid: ::core::option::Option<i32>,
14997}
14998#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14999pub struct DsiCmdFifoStatusFtraceEvent {
15000    #[prost(uint32, optional, tag = "1")]
15001    pub header: ::core::option::Option<u32>,
15002    #[prost(uint32, optional, tag = "2")]
15003    pub payload: ::core::option::Option<u32>,
15004}
15005#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15006pub struct DsiRxFtraceEvent {
15007    #[prost(uint32, optional, tag = "1")]
15008    pub cmd: ::core::option::Option<u32>,
15009    #[prost(bytes = "vec", optional, tag = "3")]
15010    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15011}
15012#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15013pub struct DsiTxFtraceEvent {
15014    #[prost(uint32, optional, tag = "1")]
15015    pub last: ::core::option::Option<u32>,
15016    #[prost(uint32, optional, tag = "3")]
15017    pub r#type: ::core::option::Option<u32>,
15018    #[prost(bytes = "vec", optional, tag = "4")]
15019    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15020}
15021#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15022pub struct PanelWriteGenericFtraceEvent {
15023    #[prost(int32, optional, tag = "1")]
15024    pub pid: ::core::option::Option<i32>,
15025    #[prost(string, optional, tag = "2")]
15026    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15027    #[prost(uint32, optional, tag = "3")]
15028    pub trace_begin: ::core::option::Option<u32>,
15029    #[prost(string, optional, tag = "4")]
15030    pub name: ::core::option::Option<::prost::alloc::string::String>,
15031    #[prost(uint32, optional, tag = "5")]
15032    pub r#type: ::core::option::Option<u32>,
15033    #[prost(int32, optional, tag = "6")]
15034    pub value: ::core::option::Option<i32>,
15035}
15036#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15037pub struct GramCollisionFtraceEvent {
15038    #[prost(int32, optional, tag = "1")]
15039    pub panel_index: ::core::option::Option<i32>,
15040    #[prost(uint32, optional, tag = "2")]
15041    pub collision_cnt: ::core::option::Option<u32>,
15042}
15043#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15044pub struct PanelSettingsFullFtraceEvent {
15045    #[prost(int32, optional, tag = "1")]
15046    pub panel_index: ::core::option::Option<i32>,
15047    #[prost(uint32, optional, tag = "2")]
15048    pub hbm: ::core::option::Option<u32>,
15049    #[prost(uint32, optional, tag = "3")]
15050    pub irc: ::core::option::Option<u32>,
15051    #[prost(uint32, optional, tag = "4")]
15052    pub h_pwm: ::core::option::Option<u32>,
15053    #[prost(uint32, optional, tag = "5")]
15054    pub fi_auto: ::core::option::Option<u32>,
15055    #[prost(uint32, optional, tag = "6")]
15056    pub fi_manual: ::core::option::Option<u32>,
15057    #[prost(uint32, optional, tag = "7")]
15058    pub early_exit: ::core::option::Option<u32>,
15059    #[prost(uint32, optional, tag = "8")]
15060    pub min_rr: ::core::option::Option<u32>,
15061    #[prost(uint32, optional, tag = "9")]
15062    pub max_rr: ::core::option::Option<u32>,
15063    #[prost(uint32, optional, tag = "10")]
15064    pub te_freq: ::core::option::Option<u32>,
15065}
15066#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15067pub struct PanelSettingsLiteFtraceEvent {
15068    #[prost(int32, optional, tag = "1")]
15069    pub panel_index: ::core::option::Option<i32>,
15070    #[prost(uint32, optional, tag = "2")]
15071    pub vrr: ::core::option::Option<u32>,
15072    #[prost(uint32, optional, tag = "3")]
15073    pub min_rr: ::core::option::Option<u32>,
15074    #[prost(uint32, optional, tag = "4")]
15075    pub max_rr: ::core::option::Option<u32>,
15076    #[prost(uint32, optional, tag = "5")]
15077    pub te_freq: ::core::option::Option<u32>,
15078}
15079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15080pub struct SchedSwitchWithCtrsFtraceEvent {
15081    #[prost(int32, optional, tag = "1")]
15082    pub old_pid: ::core::option::Option<i32>,
15083    #[prost(int32, optional, tag = "2")]
15084    pub new_pid: ::core::option::Option<i32>,
15085    #[prost(uint64, optional, tag = "3")]
15086    pub cctr: ::core::option::Option<u64>,
15087    #[prost(uint64, optional, tag = "4")]
15088    pub ctr0: ::core::option::Option<u64>,
15089    #[prost(uint64, optional, tag = "5")]
15090    pub ctr1: ::core::option::Option<u64>,
15091    #[prost(uint64, optional, tag = "6")]
15092    pub ctr2: ::core::option::Option<u64>,
15093    #[prost(uint64, optional, tag = "7")]
15094    pub ctr3: ::core::option::Option<u64>,
15095    #[prost(uint32, optional, tag = "8")]
15096    pub lctr0: ::core::option::Option<u32>,
15097    #[prost(uint32, optional, tag = "9")]
15098    pub lctr1: ::core::option::Option<u32>,
15099    #[prost(uint64, optional, tag = "10")]
15100    pub ctr4: ::core::option::Option<u64>,
15101    #[prost(uint64, optional, tag = "11")]
15102    pub ctr5: ::core::option::Option<u64>,
15103    #[prost(string, optional, tag = "12")]
15104    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15105    #[prost(int32, optional, tag = "13")]
15106    pub prev_pid: ::core::option::Option<i32>,
15107    #[prost(uint32, optional, tag = "14")]
15108    pub cyc: ::core::option::Option<u32>,
15109    #[prost(uint32, optional, tag = "15")]
15110    pub inst: ::core::option::Option<u32>,
15111    #[prost(uint32, optional, tag = "16")]
15112    pub stallbm: ::core::option::Option<u32>,
15113    #[prost(uint32, optional, tag = "17")]
15114    pub l3dm: ::core::option::Option<u32>,
15115    #[prost(int32, optional, tag = "18")]
15116    pub next_pid: ::core::option::Option<i32>,
15117    #[prost(string, optional, tag = "19")]
15118    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15119    #[prost(int64, optional, tag = "20")]
15120    pub prev_state: ::core::option::Option<i64>,
15121    #[prost(uint64, optional, tag = "21")]
15122    pub amu0: ::core::option::Option<u64>,
15123    #[prost(uint64, optional, tag = "22")]
15124    pub amu1: ::core::option::Option<u64>,
15125    #[prost(uint64, optional, tag = "23")]
15126    pub amu2: ::core::option::Option<u64>,
15127}
15128#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15129pub struct PixelMmKswapdWakeFtraceEvent {
15130    #[prost(int32, optional, tag = "1")]
15131    pub whatever: ::core::option::Option<i32>,
15132}
15133#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15134pub struct PixelMmKswapdDoneFtraceEvent {
15135    #[prost(uint64, optional, tag = "1")]
15136    pub delta_nr_scanned: ::core::option::Option<u64>,
15137    #[prost(uint64, optional, tag = "2")]
15138    pub delta_nr_reclaimed: ::core::option::Option<u64>,
15139    #[prost(uint64, optional, tag = "3")]
15140    pub delta_nr_allocated: ::core::option::Option<u64>,
15141    #[prost(uint64, optional, tag = "4")]
15142    pub duration_ns: ::core::option::Option<u64>,
15143}
15144#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15145pub struct CpuFrequencyFtraceEvent {
15146    #[prost(uint32, optional, tag = "1")]
15147    pub state: ::core::option::Option<u32>,
15148    #[prost(uint32, optional, tag = "2")]
15149    pub cpu_id: ::core::option::Option<u32>,
15150}
15151#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15152pub struct CpuFrequencyLimitsFtraceEvent {
15153    #[prost(uint32, optional, tag = "1")]
15154    pub min_freq: ::core::option::Option<u32>,
15155    #[prost(uint32, optional, tag = "2")]
15156    pub max_freq: ::core::option::Option<u32>,
15157    #[prost(uint32, optional, tag = "3")]
15158    pub cpu_id: ::core::option::Option<u32>,
15159}
15160#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15161pub struct CpuIdleFtraceEvent {
15162    #[prost(uint32, optional, tag = "1")]
15163    pub state: ::core::option::Option<u32>,
15164    #[prost(uint32, optional, tag = "2")]
15165    pub cpu_id: ::core::option::Option<u32>,
15166}
15167#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15168pub struct ClockEnableFtraceEvent {
15169    #[prost(string, optional, tag = "1")]
15170    pub name: ::core::option::Option<::prost::alloc::string::String>,
15171    #[prost(uint64, optional, tag = "2")]
15172    pub state: ::core::option::Option<u64>,
15173    #[prost(uint64, optional, tag = "3")]
15174    pub cpu_id: ::core::option::Option<u64>,
15175}
15176#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15177pub struct ClockDisableFtraceEvent {
15178    #[prost(string, optional, tag = "1")]
15179    pub name: ::core::option::Option<::prost::alloc::string::String>,
15180    #[prost(uint64, optional, tag = "2")]
15181    pub state: ::core::option::Option<u64>,
15182    #[prost(uint64, optional, tag = "3")]
15183    pub cpu_id: ::core::option::Option<u64>,
15184}
15185#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15186pub struct ClockSetRateFtraceEvent {
15187    #[prost(string, optional, tag = "1")]
15188    pub name: ::core::option::Option<::prost::alloc::string::String>,
15189    #[prost(uint64, optional, tag = "2")]
15190    pub state: ::core::option::Option<u64>,
15191    #[prost(uint64, optional, tag = "3")]
15192    pub cpu_id: ::core::option::Option<u64>,
15193}
15194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15195pub struct SuspendResumeFtraceEvent {
15196    #[prost(string, optional, tag = "1")]
15197    pub action: ::core::option::Option<::prost::alloc::string::String>,
15198    #[prost(int32, optional, tag = "2")]
15199    pub val: ::core::option::Option<i32>,
15200    #[prost(uint32, optional, tag = "3")]
15201    pub start: ::core::option::Option<u32>,
15202}
15203#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15204pub struct GpuFrequencyFtraceEvent {
15205    #[prost(uint32, optional, tag = "1")]
15206    pub gpu_id: ::core::option::Option<u32>,
15207    #[prost(uint32, optional, tag = "2")]
15208    pub state: ::core::option::Option<u32>,
15209}
15210#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15211pub struct WakeupSourceActivateFtraceEvent {
15212    #[prost(string, optional, tag = "1")]
15213    pub name: ::core::option::Option<::prost::alloc::string::String>,
15214    #[prost(uint64, optional, tag = "2")]
15215    pub state: ::core::option::Option<u64>,
15216}
15217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15218pub struct WakeupSourceDeactivateFtraceEvent {
15219    #[prost(string, optional, tag = "1")]
15220    pub name: ::core::option::Option<::prost::alloc::string::String>,
15221    #[prost(uint64, optional, tag = "2")]
15222    pub state: ::core::option::Option<u64>,
15223}
15224#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15225pub struct GpuWorkPeriodFtraceEvent {
15226    #[prost(uint32, optional, tag = "1")]
15227    pub gpu_id: ::core::option::Option<u32>,
15228    #[prost(uint32, optional, tag = "2")]
15229    pub uid: ::core::option::Option<u32>,
15230    #[prost(uint64, optional, tag = "3")]
15231    pub start_time_ns: ::core::option::Option<u64>,
15232    #[prost(uint64, optional, tag = "4")]
15233    pub end_time_ns: ::core::option::Option<u64>,
15234    #[prost(uint64, optional, tag = "5")]
15235    pub total_active_duration_ns: ::core::option::Option<u64>,
15236}
15237#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15238pub struct DevicePmCallbackStartFtraceEvent {
15239    #[prost(string, optional, tag = "1")]
15240    pub device: ::core::option::Option<::prost::alloc::string::String>,
15241    #[prost(string, optional, tag = "2")]
15242    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15243    #[prost(string, optional, tag = "3")]
15244    pub parent: ::core::option::Option<::prost::alloc::string::String>,
15245    #[prost(string, optional, tag = "4")]
15246    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
15247    #[prost(int32, optional, tag = "5")]
15248    pub event: ::core::option::Option<i32>,
15249}
15250#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15251pub struct DevicePmCallbackEndFtraceEvent {
15252    #[prost(string, optional, tag = "1")]
15253    pub device: ::core::option::Option<::prost::alloc::string::String>,
15254    #[prost(string, optional, tag = "2")]
15255    pub driver: ::core::option::Option<::prost::alloc::string::String>,
15256    #[prost(int32, optional, tag = "3")]
15257    pub error: ::core::option::Option<i32>,
15258}
15259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15260pub struct GpuPowerStateFtraceEvent {
15261    #[prost(int32, optional, tag = "1")]
15262    pub old_state: ::core::option::Option<i32>,
15263    #[prost(int32, optional, tag = "2")]
15264    pub new_state: ::core::option::Option<i32>,
15265}
15266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15267pub struct PsciDomainIdleExitFtraceEvent {
15268    #[prost(uint32, optional, tag = "1")]
15269    pub cpu_id: ::core::option::Option<u32>,
15270    #[prost(uint32, optional, tag = "2")]
15271    pub state: ::core::option::Option<u32>,
15272    #[prost(uint32, optional, tag = "3")]
15273    pub s2idle: ::core::option::Option<u32>,
15274}
15275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15276pub struct PsciDomainIdleEnterFtraceEvent {
15277    #[prost(uint32, optional, tag = "1")]
15278    pub cpu_id: ::core::option::Option<u32>,
15279    #[prost(uint32, optional, tag = "2")]
15280    pub state: ::core::option::Option<u32>,
15281    #[prost(uint32, optional, tag = "3")]
15282    pub s2idle: ::core::option::Option<u32>,
15283}
15284#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15285pub struct ConsoleFtraceEvent {
15286    #[prost(string, optional, tag = "1")]
15287    pub msg: ::core::option::Option<::prost::alloc::string::String>,
15288}
15289#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15290pub struct SysEnterFtraceEvent {
15291    #[prost(int64, optional, tag = "1")]
15292    pub id: ::core::option::Option<i64>,
15293    #[prost(uint64, repeated, packed = "false", tag = "2")]
15294    pub args: ::prost::alloc::vec::Vec<u64>,
15295}
15296#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15297pub struct SysExitFtraceEvent {
15298    #[prost(int64, optional, tag = "1")]
15299    pub id: ::core::option::Option<i64>,
15300    #[prost(int64, optional, tag = "2")]
15301    pub ret: ::core::option::Option<i64>,
15302}
15303#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15304pub struct RegulatorDisableFtraceEvent {
15305    #[prost(string, optional, tag = "1")]
15306    pub name: ::core::option::Option<::prost::alloc::string::String>,
15307}
15308#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15309pub struct RegulatorDisableCompleteFtraceEvent {
15310    #[prost(string, optional, tag = "1")]
15311    pub name: ::core::option::Option<::prost::alloc::string::String>,
15312}
15313#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15314pub struct RegulatorEnableFtraceEvent {
15315    #[prost(string, optional, tag = "1")]
15316    pub name: ::core::option::Option<::prost::alloc::string::String>,
15317}
15318#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15319pub struct RegulatorEnableCompleteFtraceEvent {
15320    #[prost(string, optional, tag = "1")]
15321    pub name: ::core::option::Option<::prost::alloc::string::String>,
15322}
15323#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15324pub struct RegulatorEnableDelayFtraceEvent {
15325    #[prost(string, optional, tag = "1")]
15326    pub name: ::core::option::Option<::prost::alloc::string::String>,
15327}
15328#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15329pub struct RegulatorSetVoltageFtraceEvent {
15330    #[prost(string, optional, tag = "1")]
15331    pub name: ::core::option::Option<::prost::alloc::string::String>,
15332    #[prost(int32, optional, tag = "2")]
15333    pub min: ::core::option::Option<i32>,
15334    #[prost(int32, optional, tag = "3")]
15335    pub max: ::core::option::Option<i32>,
15336}
15337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15338pub struct RegulatorSetVoltageCompleteFtraceEvent {
15339    #[prost(string, optional, tag = "1")]
15340    pub name: ::core::option::Option<::prost::alloc::string::String>,
15341    #[prost(uint32, optional, tag = "2")]
15342    pub val: ::core::option::Option<u32>,
15343}
15344#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15345pub struct RpmStatusFtraceEvent {
15346    #[prost(string, optional, tag = "1")]
15347    pub name: ::core::option::Option<::prost::alloc::string::String>,
15348    #[prost(int32, optional, tag = "2")]
15349    pub status: ::core::option::Option<i32>,
15350}
15351#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15352pub struct SamsungTracingMarkWriteFtraceEvent {
15353    #[prost(int32, optional, tag = "1")]
15354    pub pid: ::core::option::Option<i32>,
15355    #[prost(string, optional, tag = "2")]
15356    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15357    #[prost(uint32, optional, tag = "3")]
15358    pub trace_begin: ::core::option::Option<u32>,
15359    #[prost(uint32, optional, tag = "4")]
15360    pub trace_type: ::core::option::Option<u32>,
15361    #[prost(int32, optional, tag = "5")]
15362    pub value: ::core::option::Option<i32>,
15363}
15364#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15365pub struct SchedSwitchFtraceEvent {
15366    #[prost(string, optional, tag = "1")]
15367    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
15368    #[prost(int32, optional, tag = "2")]
15369    pub prev_pid: ::core::option::Option<i32>,
15370    #[prost(int32, optional, tag = "3")]
15371    pub prev_prio: ::core::option::Option<i32>,
15372    #[prost(int64, optional, tag = "4")]
15373    pub prev_state: ::core::option::Option<i64>,
15374    #[prost(string, optional, tag = "5")]
15375    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
15376    #[prost(int32, optional, tag = "6")]
15377    pub next_pid: ::core::option::Option<i32>,
15378    #[prost(int32, optional, tag = "7")]
15379    pub next_prio: ::core::option::Option<i32>,
15380}
15381#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15382pub struct SchedWakeupFtraceEvent {
15383    #[prost(string, optional, tag = "1")]
15384    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15385    #[prost(int32, optional, tag = "2")]
15386    pub pid: ::core::option::Option<i32>,
15387    #[prost(int32, optional, tag = "3")]
15388    pub prio: ::core::option::Option<i32>,
15389    #[prost(int32, optional, tag = "4")]
15390    pub success: ::core::option::Option<i32>,
15391    #[prost(int32, optional, tag = "5")]
15392    pub target_cpu: ::core::option::Option<i32>,
15393}
15394#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15395pub struct SchedBlockedReasonFtraceEvent {
15396    #[prost(int32, optional, tag = "1")]
15397    pub pid: ::core::option::Option<i32>,
15398    #[prost(uint64, optional, tag = "2")]
15399    pub caller: ::core::option::Option<u64>,
15400    #[prost(uint32, optional, tag = "3")]
15401    pub io_wait: ::core::option::Option<u32>,
15402}
15403#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15404pub struct SchedCpuHotplugFtraceEvent {
15405    #[prost(int32, optional, tag = "1")]
15406    pub affected_cpu: ::core::option::Option<i32>,
15407    #[prost(int32, optional, tag = "2")]
15408    pub error: ::core::option::Option<i32>,
15409    #[prost(int32, optional, tag = "3")]
15410    pub status: ::core::option::Option<i32>,
15411}
15412#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15413pub struct SchedWakingFtraceEvent {
15414    #[prost(string, optional, tag = "1")]
15415    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15416    #[prost(int32, optional, tag = "2")]
15417    pub pid: ::core::option::Option<i32>,
15418    #[prost(int32, optional, tag = "3")]
15419    pub prio: ::core::option::Option<i32>,
15420    #[prost(int32, optional, tag = "4")]
15421    pub success: ::core::option::Option<i32>,
15422    #[prost(int32, optional, tag = "5")]
15423    pub target_cpu: ::core::option::Option<i32>,
15424}
15425#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15426pub struct SchedWakeupNewFtraceEvent {
15427    #[prost(string, optional, tag = "1")]
15428    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15429    #[prost(int32, optional, tag = "2")]
15430    pub pid: ::core::option::Option<i32>,
15431    #[prost(int32, optional, tag = "3")]
15432    pub prio: ::core::option::Option<i32>,
15433    #[prost(int32, optional, tag = "4")]
15434    pub success: ::core::option::Option<i32>,
15435    #[prost(int32, optional, tag = "5")]
15436    pub target_cpu: ::core::option::Option<i32>,
15437}
15438#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15439pub struct SchedProcessExecFtraceEvent {
15440    #[prost(string, optional, tag = "1")]
15441    pub filename: ::core::option::Option<::prost::alloc::string::String>,
15442    #[prost(int32, optional, tag = "2")]
15443    pub pid: ::core::option::Option<i32>,
15444    #[prost(int32, optional, tag = "3")]
15445    pub old_pid: ::core::option::Option<i32>,
15446}
15447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15448pub struct SchedProcessExitFtraceEvent {
15449    #[prost(string, optional, tag = "1")]
15450    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15451    #[prost(int32, optional, tag = "2")]
15452    pub pid: ::core::option::Option<i32>,
15453    #[prost(int32, optional, tag = "3")]
15454    pub tgid: ::core::option::Option<i32>,
15455    #[prost(int32, optional, tag = "4")]
15456    pub prio: ::core::option::Option<i32>,
15457}
15458#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15459pub struct SchedProcessForkFtraceEvent {
15460    #[prost(string, optional, tag = "1")]
15461    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
15462    #[prost(int32, optional, tag = "2")]
15463    pub parent_pid: ::core::option::Option<i32>,
15464    #[prost(string, optional, tag = "3")]
15465    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
15466    #[prost(int32, optional, tag = "4")]
15467    pub child_pid: ::core::option::Option<i32>,
15468}
15469#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15470pub struct SchedProcessFreeFtraceEvent {
15471    #[prost(string, optional, tag = "1")]
15472    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15473    #[prost(int32, optional, tag = "2")]
15474    pub pid: ::core::option::Option<i32>,
15475    #[prost(int32, optional, tag = "3")]
15476    pub prio: ::core::option::Option<i32>,
15477}
15478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15479pub struct SchedProcessHangFtraceEvent {
15480    #[prost(string, optional, tag = "1")]
15481    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15482    #[prost(int32, optional, tag = "2")]
15483    pub pid: ::core::option::Option<i32>,
15484}
15485#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15486pub struct SchedProcessWaitFtraceEvent {
15487    #[prost(string, optional, tag = "1")]
15488    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15489    #[prost(int32, optional, tag = "2")]
15490    pub pid: ::core::option::Option<i32>,
15491    #[prost(int32, optional, tag = "3")]
15492    pub prio: ::core::option::Option<i32>,
15493}
15494#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15495pub struct SchedPiSetprioFtraceEvent {
15496    #[prost(string, optional, tag = "1")]
15497    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15498    #[prost(int32, optional, tag = "2")]
15499    pub newprio: ::core::option::Option<i32>,
15500    #[prost(int32, optional, tag = "3")]
15501    pub oldprio: ::core::option::Option<i32>,
15502    #[prost(int32, optional, tag = "4")]
15503    pub pid: ::core::option::Option<i32>,
15504}
15505#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15506pub struct SchedCpuUtilCfsFtraceEvent {
15507    #[prost(int32, optional, tag = "1")]
15508    pub active: ::core::option::Option<i32>,
15509    #[prost(uint64, optional, tag = "2")]
15510    pub capacity: ::core::option::Option<u64>,
15511    #[prost(uint64, optional, tag = "3")]
15512    pub capacity_orig: ::core::option::Option<u64>,
15513    #[prost(uint32, optional, tag = "4")]
15514    pub cpu: ::core::option::Option<u32>,
15515    #[prost(uint64, optional, tag = "5")]
15516    pub cpu_importance: ::core::option::Option<u64>,
15517    #[prost(uint64, optional, tag = "6")]
15518    pub cpu_util: ::core::option::Option<u64>,
15519    #[prost(uint32, optional, tag = "7")]
15520    pub exit_lat: ::core::option::Option<u32>,
15521    #[prost(uint64, optional, tag = "8")]
15522    pub group_capacity: ::core::option::Option<u64>,
15523    #[prost(uint32, optional, tag = "9")]
15524    pub grp_overutilized: ::core::option::Option<u32>,
15525    #[prost(uint32, optional, tag = "10")]
15526    pub idle_cpu: ::core::option::Option<u32>,
15527    #[prost(uint32, optional, tag = "11")]
15528    pub nr_running: ::core::option::Option<u32>,
15529    #[prost(int64, optional, tag = "12")]
15530    pub spare_cap: ::core::option::Option<i64>,
15531    #[prost(uint32, optional, tag = "13")]
15532    pub task_fits: ::core::option::Option<u32>,
15533    #[prost(uint64, optional, tag = "14")]
15534    pub wake_group_util: ::core::option::Option<u64>,
15535    #[prost(uint64, optional, tag = "15")]
15536    pub wake_util: ::core::option::Option<u64>,
15537}
15538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15539pub struct SchedMigrateTaskFtraceEvent {
15540    #[prost(string, optional, tag = "1")]
15541    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15542    #[prost(int32, optional, tag = "2")]
15543    pub pid: ::core::option::Option<i32>,
15544    #[prost(int32, optional, tag = "3")]
15545    pub prio: ::core::option::Option<i32>,
15546    #[prost(int32, optional, tag = "4")]
15547    pub orig_cpu: ::core::option::Option<i32>,
15548    #[prost(int32, optional, tag = "5")]
15549    pub dest_cpu: ::core::option::Option<i32>,
15550    #[prost(int32, optional, tag = "6")]
15551    pub running: ::core::option::Option<i32>,
15552    #[prost(uint32, optional, tag = "7")]
15553    pub load: ::core::option::Option<u32>,
15554}
15555#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15556pub struct SchedWakeupTaskAttrFtraceEvent {
15557    #[prost(int32, optional, tag = "1")]
15558    pub pid: ::core::option::Option<i32>,
15559    #[prost(uint64, optional, tag = "2")]
15560    pub cpu_affinity: ::core::option::Option<u64>,
15561    #[prost(uint64, optional, tag = "3")]
15562    pub task_util: ::core::option::Option<u64>,
15563    #[prost(uint64, optional, tag = "4")]
15564    pub uclamp_min: ::core::option::Option<u64>,
15565    #[prost(uint64, optional, tag = "5")]
15566    pub vruntime: ::core::option::Option<u64>,
15567}
15568#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15569pub struct SchedGroupTrackerFtraceEvent {
15570    #[prost(string, optional, tag = "1")]
15571    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15572    #[prost(int32, optional, tag = "2")]
15573    pub pid: ::core::option::Option<i32>,
15574    #[prost(string, optional, tag = "3")]
15575    pub group: ::core::option::Option<::prost::alloc::string::String>,
15576    #[prost(int32, optional, tag = "4")]
15577    pub group_num: ::core::option::Option<i32>,
15578}
15579#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15580pub struct ScmCallStartFtraceEvent {
15581    #[prost(uint32, optional, tag = "1")]
15582    pub arginfo: ::core::option::Option<u32>,
15583    #[prost(uint64, optional, tag = "2")]
15584    pub x0: ::core::option::Option<u64>,
15585    #[prost(uint64, optional, tag = "3")]
15586    pub x5: ::core::option::Option<u64>,
15587}
15588#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15589pub struct ScmCallEndFtraceEvent {}
15590#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15591pub struct ScsiDispatchCmdErrorFtraceEvent {
15592    #[prost(uint32, optional, tag = "1")]
15593    pub host_no: ::core::option::Option<u32>,
15594    #[prost(uint32, optional, tag = "2")]
15595    pub channel: ::core::option::Option<u32>,
15596    #[prost(uint32, optional, tag = "3")]
15597    pub id: ::core::option::Option<u32>,
15598    #[prost(uint32, optional, tag = "4")]
15599    pub lun: ::core::option::Option<u32>,
15600    #[prost(int32, optional, tag = "5")]
15601    pub rtn: ::core::option::Option<i32>,
15602    #[prost(uint32, optional, tag = "6")]
15603    pub opcode: ::core::option::Option<u32>,
15604    #[prost(uint32, optional, tag = "7")]
15605    pub cmd_len: ::core::option::Option<u32>,
15606    #[prost(uint32, optional, tag = "8")]
15607    pub data_sglen: ::core::option::Option<u32>,
15608    #[prost(uint32, optional, tag = "9")]
15609    pub prot_sglen: ::core::option::Option<u32>,
15610    #[prost(uint32, optional, tag = "10")]
15611    pub prot_op: ::core::option::Option<u32>,
15612    #[prost(int32, optional, tag = "12")]
15613    pub driver_tag: ::core::option::Option<i32>,
15614    #[prost(int32, optional, tag = "13")]
15615    pub scheduler_tag: ::core::option::Option<i32>,
15616    #[prost(bytes = "vec", optional, tag = "14")]
15617    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15618}
15619#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15620pub struct ScsiDispatchCmdTimeoutFtraceEvent {
15621    #[prost(uint32, optional, tag = "1")]
15622    pub host_no: ::core::option::Option<u32>,
15623    #[prost(uint32, optional, tag = "2")]
15624    pub channel: ::core::option::Option<u32>,
15625    #[prost(uint32, optional, tag = "3")]
15626    pub id: ::core::option::Option<u32>,
15627    #[prost(uint32, optional, tag = "4")]
15628    pub lun: ::core::option::Option<u32>,
15629    #[prost(int32, optional, tag = "5")]
15630    pub result: ::core::option::Option<i32>,
15631    #[prost(uint32, optional, tag = "6")]
15632    pub opcode: ::core::option::Option<u32>,
15633    #[prost(uint32, optional, tag = "7")]
15634    pub cmd_len: ::core::option::Option<u32>,
15635    #[prost(uint32, optional, tag = "8")]
15636    pub data_sglen: ::core::option::Option<u32>,
15637    #[prost(uint32, optional, tag = "9")]
15638    pub prot_sglen: ::core::option::Option<u32>,
15639    #[prost(uint32, optional, tag = "10")]
15640    pub prot_op: ::core::option::Option<u32>,
15641    #[prost(int32, optional, tag = "12")]
15642    pub driver_tag: ::core::option::Option<i32>,
15643    #[prost(int32, optional, tag = "13")]
15644    pub scheduler_tag: ::core::option::Option<i32>,
15645    #[prost(uint32, optional, tag = "14")]
15646    pub sense_key: ::core::option::Option<u32>,
15647    #[prost(uint32, optional, tag = "15")]
15648    pub asc: ::core::option::Option<u32>,
15649    #[prost(uint32, optional, tag = "16")]
15650    pub ascq: ::core::option::Option<u32>,
15651    #[prost(bytes = "vec", optional, tag = "17")]
15652    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
15653}
15654#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15655pub struct ScsiEhWakeupFtraceEvent {
15656    #[prost(uint32, optional, tag = "1")]
15657    pub host_no: ::core::option::Option<u32>,
15658}
15659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15660pub struct SdeTracingMarkWriteFtraceEvent {
15661    #[prost(int32, optional, tag = "1")]
15662    pub pid: ::core::option::Option<i32>,
15663    #[prost(string, optional, tag = "2")]
15664    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15665    #[prost(uint32, optional, tag = "3")]
15666    pub trace_type: ::core::option::Option<u32>,
15667    #[prost(int32, optional, tag = "4")]
15668    pub value: ::core::option::Option<i32>,
15669    #[prost(uint32, optional, tag = "5")]
15670    pub trace_begin: ::core::option::Option<u32>,
15671}
15672#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15673pub struct SdeSdeEvtlogFtraceEvent {
15674    #[prost(string, optional, tag = "1")]
15675    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
15676    #[prost(int32, optional, tag = "2")]
15677    pub pid: ::core::option::Option<i32>,
15678    #[prost(uint32, optional, tag = "3")]
15679    pub tag_id: ::core::option::Option<u32>,
15680    #[prost(uint32, optional, tag = "4")]
15681    pub d00: ::core::option::Option<u32>,
15682    #[prost(uint32, optional, tag = "5")]
15683    pub d01: ::core::option::Option<u32>,
15684    #[prost(uint32, optional, tag = "6")]
15685    pub d02: ::core::option::Option<u32>,
15686    #[prost(uint32, optional, tag = "7")]
15687    pub d03: ::core::option::Option<u32>,
15688    #[prost(uint32, optional, tag = "8")]
15689    pub d04: ::core::option::Option<u32>,
15690    #[prost(uint32, optional, tag = "9")]
15691    pub d05: ::core::option::Option<u32>,
15692    #[prost(uint32, optional, tag = "10")]
15693    pub d06: ::core::option::Option<u32>,
15694    #[prost(uint32, optional, tag = "11")]
15695    pub d07: ::core::option::Option<u32>,
15696    #[prost(uint32, optional, tag = "12")]
15697    pub d08: ::core::option::Option<u32>,
15698    #[prost(uint32, optional, tag = "13")]
15699    pub d09: ::core::option::Option<u32>,
15700    #[prost(uint32, optional, tag = "14")]
15701    pub d10: ::core::option::Option<u32>,
15702    #[prost(uint32, optional, tag = "15")]
15703    pub d11: ::core::option::Option<u32>,
15704    #[prost(uint32, optional, tag = "16")]
15705    pub d12: ::core::option::Option<u32>,
15706    #[prost(uint32, optional, tag = "17")]
15707    pub d13: ::core::option::Option<u32>,
15708    #[prost(uint32, optional, tag = "18")]
15709    pub d14: ::core::option::Option<u32>,
15710}
15711#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15712pub struct SdeSdePerfCalcCrtcFtraceEvent {
15713    #[prost(uint64, optional, tag = "1")]
15714    pub bw_ctl_ebi: ::core::option::Option<u64>,
15715    #[prost(uint64, optional, tag = "2")]
15716    pub bw_ctl_llcc: ::core::option::Option<u64>,
15717    #[prost(uint64, optional, tag = "3")]
15718    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15719    #[prost(uint32, optional, tag = "4")]
15720    pub core_clk_rate: ::core::option::Option<u32>,
15721    #[prost(uint32, optional, tag = "5")]
15722    pub crtc: ::core::option::Option<u32>,
15723    #[prost(uint64, optional, tag = "6")]
15724    pub ib_ebi: ::core::option::Option<u64>,
15725    #[prost(uint64, optional, tag = "7")]
15726    pub ib_llcc: ::core::option::Option<u64>,
15727    #[prost(uint64, optional, tag = "8")]
15728    pub ib_mnoc: ::core::option::Option<u64>,
15729}
15730#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15731pub struct SdeSdePerfCrtcUpdateFtraceEvent {
15732    #[prost(uint64, optional, tag = "1")]
15733    pub bw_ctl_ebi: ::core::option::Option<u64>,
15734    #[prost(uint64, optional, tag = "2")]
15735    pub bw_ctl_llcc: ::core::option::Option<u64>,
15736    #[prost(uint64, optional, tag = "3")]
15737    pub bw_ctl_mnoc: ::core::option::Option<u64>,
15738    #[prost(uint32, optional, tag = "4")]
15739    pub core_clk_rate: ::core::option::Option<u32>,
15740    #[prost(uint32, optional, tag = "5")]
15741    pub crtc: ::core::option::Option<u32>,
15742    #[prost(int32, optional, tag = "6")]
15743    pub params: ::core::option::Option<i32>,
15744    #[prost(uint64, optional, tag = "7")]
15745    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
15746    #[prost(uint64, optional, tag = "8")]
15747    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
15748    #[prost(uint64, optional, tag = "9")]
15749    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
15750    #[prost(uint32, optional, tag = "10")]
15751    pub stop_req: ::core::option::Option<u32>,
15752    #[prost(uint32, optional, tag = "11")]
15753    pub update_bus: ::core::option::Option<u32>,
15754    #[prost(uint32, optional, tag = "12")]
15755    pub update_clk: ::core::option::Option<u32>,
15756}
15757#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15758pub struct SdeSdePerfSetQosLutsFtraceEvent {
15759    #[prost(uint32, optional, tag = "1")]
15760    pub fl: ::core::option::Option<u32>,
15761    #[prost(uint32, optional, tag = "2")]
15762    pub fmt: ::core::option::Option<u32>,
15763    #[prost(uint64, optional, tag = "3")]
15764    pub lut: ::core::option::Option<u64>,
15765    #[prost(uint32, optional, tag = "4")]
15766    pub lut_usage: ::core::option::Option<u32>,
15767    #[prost(uint32, optional, tag = "5")]
15768    pub pnum: ::core::option::Option<u32>,
15769    #[prost(uint32, optional, tag = "6")]
15770    pub rt: ::core::option::Option<u32>,
15771}
15772#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15773pub struct SdeSdePerfUpdateBusFtraceEvent {
15774    #[prost(uint64, optional, tag = "1")]
15775    pub ab_quota: ::core::option::Option<u64>,
15776    #[prost(uint32, optional, tag = "2")]
15777    pub bus_id: ::core::option::Option<u32>,
15778    #[prost(int32, optional, tag = "3")]
15779    pub client: ::core::option::Option<i32>,
15780    #[prost(uint64, optional, tag = "4")]
15781    pub ib_quota: ::core::option::Option<u64>,
15782}
15783#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15784pub struct SignalDeliverFtraceEvent {
15785    #[prost(int32, optional, tag = "1")]
15786    pub code: ::core::option::Option<i32>,
15787    #[prost(uint64, optional, tag = "2")]
15788    pub sa_flags: ::core::option::Option<u64>,
15789    #[prost(int32, optional, tag = "3")]
15790    pub sig: ::core::option::Option<i32>,
15791}
15792#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15793pub struct SignalGenerateFtraceEvent {
15794    #[prost(int32, optional, tag = "1")]
15795    pub code: ::core::option::Option<i32>,
15796    #[prost(string, optional, tag = "2")]
15797    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15798    #[prost(int32, optional, tag = "3")]
15799    pub group: ::core::option::Option<i32>,
15800    #[prost(int32, optional, tag = "4")]
15801    pub pid: ::core::option::Option<i32>,
15802    #[prost(int32, optional, tag = "5")]
15803    pub result: ::core::option::Option<i32>,
15804    #[prost(int32, optional, tag = "6")]
15805    pub sig: ::core::option::Option<i32>,
15806}
15807#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15808pub struct KfreeSkbFtraceEvent {
15809    #[prost(uint64, optional, tag = "1")]
15810    pub location: ::core::option::Option<u64>,
15811    #[prost(uint32, optional, tag = "2")]
15812    pub protocol: ::core::option::Option<u32>,
15813    #[prost(uint64, optional, tag = "3")]
15814    pub skbaddr: ::core::option::Option<u64>,
15815}
15816#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15817pub struct InetSockSetStateFtraceEvent {
15818    #[prost(uint32, optional, tag = "1")]
15819    pub daddr: ::core::option::Option<u32>,
15820    #[prost(uint32, optional, tag = "2")]
15821    pub dport: ::core::option::Option<u32>,
15822    #[prost(uint32, optional, tag = "3")]
15823    pub family: ::core::option::Option<u32>,
15824    #[prost(int32, optional, tag = "4")]
15825    pub newstate: ::core::option::Option<i32>,
15826    #[prost(int32, optional, tag = "5")]
15827    pub oldstate: ::core::option::Option<i32>,
15828    #[prost(uint32, optional, tag = "6")]
15829    pub protocol: ::core::option::Option<u32>,
15830    #[prost(uint32, optional, tag = "7")]
15831    pub saddr: ::core::option::Option<u32>,
15832    #[prost(uint64, optional, tag = "8")]
15833    pub skaddr: ::core::option::Option<u64>,
15834    #[prost(uint32, optional, tag = "9")]
15835    pub sport: ::core::option::Option<u32>,
15836}
15837#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15838pub struct SyncPtFtraceEvent {
15839    #[prost(string, optional, tag = "1")]
15840    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
15841    #[prost(string, optional, tag = "2")]
15842    pub value: ::core::option::Option<::prost::alloc::string::String>,
15843}
15844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15845pub struct SyncTimelineFtraceEvent {
15846    #[prost(string, optional, tag = "1")]
15847    pub name: ::core::option::Option<::prost::alloc::string::String>,
15848    #[prost(string, optional, tag = "2")]
15849    pub value: ::core::option::Option<::prost::alloc::string::String>,
15850}
15851#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15852pub struct SyncWaitFtraceEvent {
15853    #[prost(string, optional, tag = "1")]
15854    pub name: ::core::option::Option<::prost::alloc::string::String>,
15855    #[prost(int32, optional, tag = "2")]
15856    pub status: ::core::option::Option<i32>,
15857    #[prost(uint32, optional, tag = "3")]
15858    pub begin: ::core::option::Option<u32>,
15859}
15860#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15861pub struct RssStatThrottledFtraceEvent {
15862    #[prost(uint32, optional, tag = "1")]
15863    pub curr: ::core::option::Option<u32>,
15864    #[prost(int32, optional, tag = "2")]
15865    pub member: ::core::option::Option<i32>,
15866    #[prost(uint32, optional, tag = "3")]
15867    pub mm_id: ::core::option::Option<u32>,
15868    #[prost(int64, optional, tag = "4")]
15869    pub size: ::core::option::Option<i64>,
15870}
15871#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15872pub struct SuspendResumeMinimalFtraceEvent {
15873    #[prost(uint32, optional, tag = "1")]
15874    pub start: ::core::option::Option<u32>,
15875}
15876#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15877pub struct ZeroFtraceEvent {
15878    #[prost(int32, optional, tag = "1")]
15879    pub flag: ::core::option::Option<i32>,
15880    #[prost(string, optional, tag = "2")]
15881    pub name: ::core::option::Option<::prost::alloc::string::String>,
15882    #[prost(int32, optional, tag = "3")]
15883    pub pid: ::core::option::Option<i32>,
15884    #[prost(int64, optional, tag = "4")]
15885    pub value: ::core::option::Option<i64>,
15886}
15887#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15888pub struct TaskNewtaskFtraceEvent {
15889    #[prost(int32, optional, tag = "1")]
15890    pub pid: ::core::option::Option<i32>,
15891    #[prost(string, optional, tag = "2")]
15892    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15893    #[prost(uint64, optional, tag = "3")]
15894    pub clone_flags: ::core::option::Option<u64>,
15895    #[prost(int32, optional, tag = "4")]
15896    pub oom_score_adj: ::core::option::Option<i32>,
15897}
15898#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15899pub struct TaskRenameFtraceEvent {
15900    #[prost(int32, optional, tag = "1")]
15901    pub pid: ::core::option::Option<i32>,
15902    #[prost(string, optional, tag = "2")]
15903    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
15904    #[prost(string, optional, tag = "3")]
15905    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
15906    #[prost(int32, optional, tag = "4")]
15907    pub oom_score_adj: ::core::option::Option<i32>,
15908}
15909#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15910pub struct TcpRetransmitSkbFtraceEvent {
15911    #[prost(uint32, optional, tag = "1")]
15912    pub daddr: ::core::option::Option<u32>,
15913    #[prost(uint32, optional, tag = "2")]
15914    pub dport: ::core::option::Option<u32>,
15915    #[prost(uint32, optional, tag = "3")]
15916    pub saddr: ::core::option::Option<u32>,
15917    #[prost(uint64, optional, tag = "4")]
15918    pub skaddr: ::core::option::Option<u64>,
15919    #[prost(uint64, optional, tag = "5")]
15920    pub skbaddr: ::core::option::Option<u64>,
15921    #[prost(uint32, optional, tag = "6")]
15922    pub sport: ::core::option::Option<u32>,
15923    #[prost(int32, optional, tag = "7")]
15924    pub state: ::core::option::Option<i32>,
15925}
15926#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15927pub struct ThermalTemperatureFtraceEvent {
15928    #[prost(int32, optional, tag = "1")]
15929    pub id: ::core::option::Option<i32>,
15930    #[prost(int32, optional, tag = "2")]
15931    pub temp: ::core::option::Option<i32>,
15932    #[prost(int32, optional, tag = "3")]
15933    pub temp_prev: ::core::option::Option<i32>,
15934    #[prost(string, optional, tag = "4")]
15935    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
15936}
15937#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15938pub struct CdevUpdateFtraceEvent {
15939    #[prost(uint64, optional, tag = "1")]
15940    pub target: ::core::option::Option<u64>,
15941    #[prost(string, optional, tag = "2")]
15942    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
15943}
15944#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15945pub struct ThermalExynosAcpmBulkFtraceEvent {
15946    #[prost(uint32, optional, tag = "1")]
15947    pub tz_id: ::core::option::Option<u32>,
15948    #[prost(uint32, optional, tag = "2")]
15949    pub current_temp: ::core::option::Option<u32>,
15950    #[prost(uint32, optional, tag = "3")]
15951    pub ctrl_temp: ::core::option::Option<u32>,
15952    #[prost(uint32, optional, tag = "4")]
15953    pub cdev_state: ::core::option::Option<u32>,
15954    #[prost(int32, optional, tag = "5")]
15955    pub pid_et_p: ::core::option::Option<i32>,
15956    #[prost(int32, optional, tag = "6")]
15957    pub pid_power_range: ::core::option::Option<i32>,
15958    #[prost(int32, optional, tag = "7")]
15959    pub pid_p: ::core::option::Option<i32>,
15960    #[prost(int32, optional, tag = "8")]
15961    pub pid_i: ::core::option::Option<i32>,
15962    #[prost(int32, optional, tag = "9")]
15963    pub k_p: ::core::option::Option<i32>,
15964    #[prost(int32, optional, tag = "10")]
15965    pub k_i: ::core::option::Option<i32>,
15966    #[prost(uint64, optional, tag = "11")]
15967    pub timestamp: ::core::option::Option<u64>,
15968}
15969#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15970pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
15971    #[prost(int32, optional, tag = "1")]
15972    pub tz_id: ::core::option::Option<i32>,
15973    #[prost(uint32, optional, tag = "2")]
15974    pub current_temp: ::core::option::Option<u32>,
15975    #[prost(uint32, optional, tag = "3")]
15976    pub ctrl_temp: ::core::option::Option<u32>,
15977    #[prost(uint32, optional, tag = "4")]
15978    pub cdev_state: ::core::option::Option<u32>,
15979    #[prost(int32, optional, tag = "5")]
15980    pub pid_et_p: ::core::option::Option<i32>,
15981    #[prost(int32, optional, tag = "6")]
15982    pub k_p: ::core::option::Option<i32>,
15983    #[prost(int32, optional, tag = "7")]
15984    pub k_i: ::core::option::Option<i32>,
15985}
15986#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15987pub struct HrtimerStartFtraceEvent {
15988    #[prost(uint64, optional, tag = "1")]
15989    pub hrtimer: ::core::option::Option<u64>,
15990    #[prost(uint64, optional, tag = "2")]
15991    pub function: ::core::option::Option<u64>,
15992    #[prost(int64, optional, tag = "3")]
15993    pub expires: ::core::option::Option<i64>,
15994    #[prost(int64, optional, tag = "4")]
15995    pub softexpires: ::core::option::Option<i64>,
15996    #[prost(uint32, optional, tag = "5")]
15997    pub mode: ::core::option::Option<u32>,
15998}
15999#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16000pub struct HrtimerCancelFtraceEvent {
16001    #[prost(uint64, optional, tag = "1")]
16002    pub hrtimer: ::core::option::Option<u64>,
16003}
16004#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16005pub struct HrtimerExpireEntryFtraceEvent {
16006    #[prost(uint64, optional, tag = "1")]
16007    pub hrtimer: ::core::option::Option<u64>,
16008    #[prost(int64, optional, tag = "2")]
16009    pub now: ::core::option::Option<i64>,
16010    #[prost(uint64, optional, tag = "3")]
16011    pub function: ::core::option::Option<u64>,
16012}
16013#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16014pub struct HrtimerExpireExitFtraceEvent {
16015    #[prost(uint64, optional, tag = "1")]
16016    pub hrtimer: ::core::option::Option<u64>,
16017}
16018#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16019pub struct TimerStartFtraceEvent {
16020    #[prost(uint64, optional, tag = "1")]
16021    pub timer: ::core::option::Option<u64>,
16022    #[prost(uint64, optional, tag = "2")]
16023    pub function: ::core::option::Option<u64>,
16024    #[prost(uint64, optional, tag = "3")]
16025    pub expires: ::core::option::Option<u64>,
16026    #[prost(uint64, optional, tag = "4")]
16027    pub now: ::core::option::Option<u64>,
16028    #[prost(uint32, optional, tag = "5")]
16029    pub deferrable: ::core::option::Option<u32>,
16030    #[prost(uint32, optional, tag = "6")]
16031    pub flags: ::core::option::Option<u32>,
16032    #[prost(uint64, optional, tag = "7")]
16033    pub bucket_expiry: ::core::option::Option<u64>,
16034}
16035#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16036pub struct TimerCancelFtraceEvent {
16037    #[prost(uint64, optional, tag = "1")]
16038    pub timer: ::core::option::Option<u64>,
16039}
16040#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16041pub struct TimerExpireEntryFtraceEvent {
16042    #[prost(uint64, optional, tag = "1")]
16043    pub timer: ::core::option::Option<u64>,
16044    #[prost(uint64, optional, tag = "2")]
16045    pub now: ::core::option::Option<u64>,
16046    #[prost(uint64, optional, tag = "3")]
16047    pub function: ::core::option::Option<u64>,
16048    #[prost(uint64, optional, tag = "4")]
16049    pub baseclk: ::core::option::Option<u64>,
16050}
16051#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16052pub struct TimerExpireExitFtraceEvent {
16053    #[prost(uint64, optional, tag = "1")]
16054    pub timer: ::core::option::Option<u64>,
16055}
16056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16057pub struct TrustySmcFtraceEvent {
16058    #[prost(uint64, optional, tag = "1")]
16059    pub r0: ::core::option::Option<u64>,
16060    #[prost(uint64, optional, tag = "2")]
16061    pub r1: ::core::option::Option<u64>,
16062    #[prost(uint64, optional, tag = "3")]
16063    pub r2: ::core::option::Option<u64>,
16064    #[prost(uint64, optional, tag = "4")]
16065    pub r3: ::core::option::Option<u64>,
16066}
16067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16068pub struct TrustySmcDoneFtraceEvent {
16069    #[prost(uint64, optional, tag = "1")]
16070    pub ret: ::core::option::Option<u64>,
16071}
16072#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16073pub struct TrustyStdCall32FtraceEvent {
16074    #[prost(uint64, optional, tag = "1")]
16075    pub r0: ::core::option::Option<u64>,
16076    #[prost(uint64, optional, tag = "2")]
16077    pub r1: ::core::option::Option<u64>,
16078    #[prost(uint64, optional, tag = "3")]
16079    pub r2: ::core::option::Option<u64>,
16080    #[prost(uint64, optional, tag = "4")]
16081    pub r3: ::core::option::Option<u64>,
16082}
16083#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16084pub struct TrustyStdCall32DoneFtraceEvent {
16085    #[prost(int64, optional, tag = "1")]
16086    pub ret: ::core::option::Option<i64>,
16087}
16088#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16089pub struct TrustyShareMemoryFtraceEvent {
16090    #[prost(uint64, optional, tag = "1")]
16091    pub len: ::core::option::Option<u64>,
16092    #[prost(uint32, optional, tag = "2")]
16093    pub lend: ::core::option::Option<u32>,
16094    #[prost(uint32, optional, tag = "3")]
16095    pub nents: ::core::option::Option<u32>,
16096}
16097#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16098pub struct TrustyShareMemoryDoneFtraceEvent {
16099    #[prost(uint64, optional, tag = "1")]
16100    pub handle: ::core::option::Option<u64>,
16101    #[prost(uint64, optional, tag = "2")]
16102    pub len: ::core::option::Option<u64>,
16103    #[prost(uint32, optional, tag = "3")]
16104    pub lend: ::core::option::Option<u32>,
16105    #[prost(uint32, optional, tag = "4")]
16106    pub nents: ::core::option::Option<u32>,
16107    #[prost(int32, optional, tag = "5")]
16108    pub ret: ::core::option::Option<i32>,
16109}
16110#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16111pub struct TrustyReclaimMemoryFtraceEvent {
16112    #[prost(uint64, optional, tag = "1")]
16113    pub id: ::core::option::Option<u64>,
16114}
16115#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16116pub struct TrustyReclaimMemoryDoneFtraceEvent {
16117    #[prost(uint64, optional, tag = "1")]
16118    pub id: ::core::option::Option<u64>,
16119    #[prost(int32, optional, tag = "2")]
16120    pub ret: ::core::option::Option<i32>,
16121}
16122#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16123pub struct TrustyIrqFtraceEvent {
16124    #[prost(int32, optional, tag = "1")]
16125    pub irq: ::core::option::Option<i32>,
16126}
16127#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16128pub struct TrustyIpcHandleEventFtraceEvent {
16129    #[prost(uint32, optional, tag = "1")]
16130    pub chan: ::core::option::Option<u32>,
16131    #[prost(uint32, optional, tag = "2")]
16132    pub event_id: ::core::option::Option<u32>,
16133    #[prost(string, optional, tag = "3")]
16134    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16135}
16136#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16137pub struct TrustyIpcConnectFtraceEvent {
16138    #[prost(uint32, optional, tag = "1")]
16139    pub chan: ::core::option::Option<u32>,
16140    #[prost(string, optional, tag = "2")]
16141    pub port: ::core::option::Option<::prost::alloc::string::String>,
16142    #[prost(int32, optional, tag = "3")]
16143    pub state: ::core::option::Option<i32>,
16144}
16145#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16146pub struct TrustyIpcConnectEndFtraceEvent {
16147    #[prost(uint32, optional, tag = "1")]
16148    pub chan: ::core::option::Option<u32>,
16149    #[prost(int32, optional, tag = "2")]
16150    pub err: ::core::option::Option<i32>,
16151    #[prost(int32, optional, tag = "3")]
16152    pub state: ::core::option::Option<i32>,
16153}
16154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16155pub struct TrustyIpcWriteFtraceEvent {
16156    #[prost(uint64, optional, tag = "1")]
16157    pub buf_id: ::core::option::Option<u64>,
16158    #[prost(uint32, optional, tag = "2")]
16159    pub chan: ::core::option::Option<u32>,
16160    #[prost(int32, optional, tag = "3")]
16161    pub kind_shm: ::core::option::Option<i32>,
16162    #[prost(int32, optional, tag = "4")]
16163    pub len_or_err: ::core::option::Option<i32>,
16164    #[prost(uint64, optional, tag = "5")]
16165    pub shm_cnt: ::core::option::Option<u64>,
16166    #[prost(string, optional, tag = "6")]
16167    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16168}
16169#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16170pub struct TrustyIpcPollFtraceEvent {
16171    #[prost(uint32, optional, tag = "1")]
16172    pub chan: ::core::option::Option<u32>,
16173    #[prost(uint32, optional, tag = "2")]
16174    pub poll_mask: ::core::option::Option<u32>,
16175    #[prost(string, optional, tag = "3")]
16176    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16177}
16178#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16179pub struct TrustyIpcReadFtraceEvent {
16180    #[prost(uint32, optional, tag = "1")]
16181    pub chan: ::core::option::Option<u32>,
16182    #[prost(string, optional, tag = "2")]
16183    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16184}
16185#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16186pub struct TrustyIpcReadEndFtraceEvent {
16187    #[prost(uint64, optional, tag = "1")]
16188    pub buf_id: ::core::option::Option<u64>,
16189    #[prost(uint32, optional, tag = "2")]
16190    pub chan: ::core::option::Option<u32>,
16191    #[prost(int32, optional, tag = "3")]
16192    pub len_or_err: ::core::option::Option<i32>,
16193    #[prost(uint64, optional, tag = "4")]
16194    pub shm_cnt: ::core::option::Option<u64>,
16195    #[prost(string, optional, tag = "5")]
16196    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16197}
16198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16199pub struct TrustyIpcRxFtraceEvent {
16200    #[prost(uint64, optional, tag = "1")]
16201    pub buf_id: ::core::option::Option<u64>,
16202    #[prost(uint32, optional, tag = "2")]
16203    pub chan: ::core::option::Option<u32>,
16204    #[prost(string, optional, tag = "3")]
16205    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
16206}
16207#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16208pub struct TrustyEnqueueNopFtraceEvent {
16209    #[prost(uint32, optional, tag = "1")]
16210    pub arg1: ::core::option::Option<u32>,
16211    #[prost(uint32, optional, tag = "2")]
16212    pub arg2: ::core::option::Option<u32>,
16213    #[prost(uint32, optional, tag = "3")]
16214    pub arg3: ::core::option::Option<u32>,
16215}
16216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16217pub struct UfshcdCommandFtraceEvent {
16218    #[prost(string, optional, tag = "1")]
16219    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16220    #[prost(uint32, optional, tag = "2")]
16221    pub doorbell: ::core::option::Option<u32>,
16222    #[prost(uint32, optional, tag = "3")]
16223    pub intr: ::core::option::Option<u32>,
16224    #[prost(uint64, optional, tag = "4")]
16225    pub lba: ::core::option::Option<u64>,
16226    #[prost(uint32, optional, tag = "5")]
16227    pub opcode: ::core::option::Option<u32>,
16228    #[prost(string, optional, tag = "6")]
16229    pub str: ::core::option::Option<::prost::alloc::string::String>,
16230    #[prost(uint32, optional, tag = "7")]
16231    pub tag: ::core::option::Option<u32>,
16232    #[prost(int32, optional, tag = "8")]
16233    pub transfer_len: ::core::option::Option<i32>,
16234    #[prost(uint32, optional, tag = "9")]
16235    pub group_id: ::core::option::Option<u32>,
16236    #[prost(uint32, optional, tag = "10")]
16237    pub str_t: ::core::option::Option<u32>,
16238}
16239#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16240pub struct UfshcdClkGatingFtraceEvent {
16241    #[prost(string, optional, tag = "1")]
16242    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
16243    #[prost(int32, optional, tag = "2")]
16244    pub state: ::core::option::Option<i32>,
16245}
16246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16247pub struct V4l2QbufFtraceEvent {
16248    #[prost(uint32, optional, tag = "1")]
16249    pub bytesused: ::core::option::Option<u32>,
16250    #[prost(uint32, optional, tag = "2")]
16251    pub field: ::core::option::Option<u32>,
16252    #[prost(uint32, optional, tag = "3")]
16253    pub flags: ::core::option::Option<u32>,
16254    #[prost(uint32, optional, tag = "4")]
16255    pub index: ::core::option::Option<u32>,
16256    #[prost(int32, optional, tag = "5")]
16257    pub minor: ::core::option::Option<i32>,
16258    #[prost(uint32, optional, tag = "6")]
16259    pub sequence: ::core::option::Option<u32>,
16260    #[prost(uint32, optional, tag = "7")]
16261    pub timecode_flags: ::core::option::Option<u32>,
16262    #[prost(uint32, optional, tag = "8")]
16263    pub timecode_frames: ::core::option::Option<u32>,
16264    #[prost(uint32, optional, tag = "9")]
16265    pub timecode_hours: ::core::option::Option<u32>,
16266    #[prost(uint32, optional, tag = "10")]
16267    pub timecode_minutes: ::core::option::Option<u32>,
16268    #[prost(uint32, optional, tag = "11")]
16269    pub timecode_seconds: ::core::option::Option<u32>,
16270    #[prost(uint32, optional, tag = "12")]
16271    pub timecode_type: ::core::option::Option<u32>,
16272    #[prost(uint32, optional, tag = "13")]
16273    pub timecode_userbits0: ::core::option::Option<u32>,
16274    #[prost(uint32, optional, tag = "14")]
16275    pub timecode_userbits1: ::core::option::Option<u32>,
16276    #[prost(uint32, optional, tag = "15")]
16277    pub timecode_userbits2: ::core::option::Option<u32>,
16278    #[prost(uint32, optional, tag = "16")]
16279    pub timecode_userbits3: ::core::option::Option<u32>,
16280    #[prost(int64, optional, tag = "17")]
16281    pub timestamp: ::core::option::Option<i64>,
16282    #[prost(uint32, optional, tag = "18")]
16283    pub r#type: ::core::option::Option<u32>,
16284}
16285#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16286pub struct V4l2DqbufFtraceEvent {
16287    #[prost(uint32, optional, tag = "1")]
16288    pub bytesused: ::core::option::Option<u32>,
16289    #[prost(uint32, optional, tag = "2")]
16290    pub field: ::core::option::Option<u32>,
16291    #[prost(uint32, optional, tag = "3")]
16292    pub flags: ::core::option::Option<u32>,
16293    #[prost(uint32, optional, tag = "4")]
16294    pub index: ::core::option::Option<u32>,
16295    #[prost(int32, optional, tag = "5")]
16296    pub minor: ::core::option::Option<i32>,
16297    #[prost(uint32, optional, tag = "6")]
16298    pub sequence: ::core::option::Option<u32>,
16299    #[prost(uint32, optional, tag = "7")]
16300    pub timecode_flags: ::core::option::Option<u32>,
16301    #[prost(uint32, optional, tag = "8")]
16302    pub timecode_frames: ::core::option::Option<u32>,
16303    #[prost(uint32, optional, tag = "9")]
16304    pub timecode_hours: ::core::option::Option<u32>,
16305    #[prost(uint32, optional, tag = "10")]
16306    pub timecode_minutes: ::core::option::Option<u32>,
16307    #[prost(uint32, optional, tag = "11")]
16308    pub timecode_seconds: ::core::option::Option<u32>,
16309    #[prost(uint32, optional, tag = "12")]
16310    pub timecode_type: ::core::option::Option<u32>,
16311    #[prost(uint32, optional, tag = "13")]
16312    pub timecode_userbits0: ::core::option::Option<u32>,
16313    #[prost(uint32, optional, tag = "14")]
16314    pub timecode_userbits1: ::core::option::Option<u32>,
16315    #[prost(uint32, optional, tag = "15")]
16316    pub timecode_userbits2: ::core::option::Option<u32>,
16317    #[prost(uint32, optional, tag = "16")]
16318    pub timecode_userbits3: ::core::option::Option<u32>,
16319    #[prost(int64, optional, tag = "17")]
16320    pub timestamp: ::core::option::Option<i64>,
16321    #[prost(uint32, optional, tag = "18")]
16322    pub r#type: ::core::option::Option<u32>,
16323}
16324#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16325pub struct Vb2V4l2BufQueueFtraceEvent {
16326    #[prost(uint32, optional, tag = "1")]
16327    pub field: ::core::option::Option<u32>,
16328    #[prost(uint32, optional, tag = "2")]
16329    pub flags: ::core::option::Option<u32>,
16330    #[prost(int32, optional, tag = "3")]
16331    pub minor: ::core::option::Option<i32>,
16332    #[prost(uint32, optional, tag = "4")]
16333    pub sequence: ::core::option::Option<u32>,
16334    #[prost(uint32, optional, tag = "5")]
16335    pub timecode_flags: ::core::option::Option<u32>,
16336    #[prost(uint32, optional, tag = "6")]
16337    pub timecode_frames: ::core::option::Option<u32>,
16338    #[prost(uint32, optional, tag = "7")]
16339    pub timecode_hours: ::core::option::Option<u32>,
16340    #[prost(uint32, optional, tag = "8")]
16341    pub timecode_minutes: ::core::option::Option<u32>,
16342    #[prost(uint32, optional, tag = "9")]
16343    pub timecode_seconds: ::core::option::Option<u32>,
16344    #[prost(uint32, optional, tag = "10")]
16345    pub timecode_type: ::core::option::Option<u32>,
16346    #[prost(uint32, optional, tag = "11")]
16347    pub timecode_userbits0: ::core::option::Option<u32>,
16348    #[prost(uint32, optional, tag = "12")]
16349    pub timecode_userbits1: ::core::option::Option<u32>,
16350    #[prost(uint32, optional, tag = "13")]
16351    pub timecode_userbits2: ::core::option::Option<u32>,
16352    #[prost(uint32, optional, tag = "14")]
16353    pub timecode_userbits3: ::core::option::Option<u32>,
16354    #[prost(int64, optional, tag = "15")]
16355    pub timestamp: ::core::option::Option<i64>,
16356}
16357#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16358pub struct Vb2V4l2BufDoneFtraceEvent {
16359    #[prost(uint32, optional, tag = "1")]
16360    pub field: ::core::option::Option<u32>,
16361    #[prost(uint32, optional, tag = "2")]
16362    pub flags: ::core::option::Option<u32>,
16363    #[prost(int32, optional, tag = "3")]
16364    pub minor: ::core::option::Option<i32>,
16365    #[prost(uint32, optional, tag = "4")]
16366    pub sequence: ::core::option::Option<u32>,
16367    #[prost(uint32, optional, tag = "5")]
16368    pub timecode_flags: ::core::option::Option<u32>,
16369    #[prost(uint32, optional, tag = "6")]
16370    pub timecode_frames: ::core::option::Option<u32>,
16371    #[prost(uint32, optional, tag = "7")]
16372    pub timecode_hours: ::core::option::Option<u32>,
16373    #[prost(uint32, optional, tag = "8")]
16374    pub timecode_minutes: ::core::option::Option<u32>,
16375    #[prost(uint32, optional, tag = "9")]
16376    pub timecode_seconds: ::core::option::Option<u32>,
16377    #[prost(uint32, optional, tag = "10")]
16378    pub timecode_type: ::core::option::Option<u32>,
16379    #[prost(uint32, optional, tag = "11")]
16380    pub timecode_userbits0: ::core::option::Option<u32>,
16381    #[prost(uint32, optional, tag = "12")]
16382    pub timecode_userbits1: ::core::option::Option<u32>,
16383    #[prost(uint32, optional, tag = "13")]
16384    pub timecode_userbits2: ::core::option::Option<u32>,
16385    #[prost(uint32, optional, tag = "14")]
16386    pub timecode_userbits3: ::core::option::Option<u32>,
16387    #[prost(int64, optional, tag = "15")]
16388    pub timestamp: ::core::option::Option<i64>,
16389}
16390#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16391pub struct Vb2V4l2QbufFtraceEvent {
16392    #[prost(uint32, optional, tag = "1")]
16393    pub field: ::core::option::Option<u32>,
16394    #[prost(uint32, optional, tag = "2")]
16395    pub flags: ::core::option::Option<u32>,
16396    #[prost(int32, optional, tag = "3")]
16397    pub minor: ::core::option::Option<i32>,
16398    #[prost(uint32, optional, tag = "4")]
16399    pub sequence: ::core::option::Option<u32>,
16400    #[prost(uint32, optional, tag = "5")]
16401    pub timecode_flags: ::core::option::Option<u32>,
16402    #[prost(uint32, optional, tag = "6")]
16403    pub timecode_frames: ::core::option::Option<u32>,
16404    #[prost(uint32, optional, tag = "7")]
16405    pub timecode_hours: ::core::option::Option<u32>,
16406    #[prost(uint32, optional, tag = "8")]
16407    pub timecode_minutes: ::core::option::Option<u32>,
16408    #[prost(uint32, optional, tag = "9")]
16409    pub timecode_seconds: ::core::option::Option<u32>,
16410    #[prost(uint32, optional, tag = "10")]
16411    pub timecode_type: ::core::option::Option<u32>,
16412    #[prost(uint32, optional, tag = "11")]
16413    pub timecode_userbits0: ::core::option::Option<u32>,
16414    #[prost(uint32, optional, tag = "12")]
16415    pub timecode_userbits1: ::core::option::Option<u32>,
16416    #[prost(uint32, optional, tag = "13")]
16417    pub timecode_userbits2: ::core::option::Option<u32>,
16418    #[prost(uint32, optional, tag = "14")]
16419    pub timecode_userbits3: ::core::option::Option<u32>,
16420    #[prost(int64, optional, tag = "15")]
16421    pub timestamp: ::core::option::Option<i64>,
16422}
16423#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16424pub struct Vb2V4l2DqbufFtraceEvent {
16425    #[prost(uint32, optional, tag = "1")]
16426    pub field: ::core::option::Option<u32>,
16427    #[prost(uint32, optional, tag = "2")]
16428    pub flags: ::core::option::Option<u32>,
16429    #[prost(int32, optional, tag = "3")]
16430    pub minor: ::core::option::Option<i32>,
16431    #[prost(uint32, optional, tag = "4")]
16432    pub sequence: ::core::option::Option<u32>,
16433    #[prost(uint32, optional, tag = "5")]
16434    pub timecode_flags: ::core::option::Option<u32>,
16435    #[prost(uint32, optional, tag = "6")]
16436    pub timecode_frames: ::core::option::Option<u32>,
16437    #[prost(uint32, optional, tag = "7")]
16438    pub timecode_hours: ::core::option::Option<u32>,
16439    #[prost(uint32, optional, tag = "8")]
16440    pub timecode_minutes: ::core::option::Option<u32>,
16441    #[prost(uint32, optional, tag = "9")]
16442    pub timecode_seconds: ::core::option::Option<u32>,
16443    #[prost(uint32, optional, tag = "10")]
16444    pub timecode_type: ::core::option::Option<u32>,
16445    #[prost(uint32, optional, tag = "11")]
16446    pub timecode_userbits0: ::core::option::Option<u32>,
16447    #[prost(uint32, optional, tag = "12")]
16448    pub timecode_userbits1: ::core::option::Option<u32>,
16449    #[prost(uint32, optional, tag = "13")]
16450    pub timecode_userbits2: ::core::option::Option<u32>,
16451    #[prost(uint32, optional, tag = "14")]
16452    pub timecode_userbits3: ::core::option::Option<u32>,
16453    #[prost(int64, optional, tag = "15")]
16454    pub timestamp: ::core::option::Option<i64>,
16455}
16456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16457pub struct VirtioGpuCmdQueueFtraceEvent {
16458    #[prost(uint32, optional, tag = "1")]
16459    pub ctx_id: ::core::option::Option<u32>,
16460    #[prost(int32, optional, tag = "2")]
16461    pub dev: ::core::option::Option<i32>,
16462    #[prost(uint64, optional, tag = "3")]
16463    pub fence_id: ::core::option::Option<u64>,
16464    #[prost(uint32, optional, tag = "4")]
16465    pub flags: ::core::option::Option<u32>,
16466    #[prost(string, optional, tag = "5")]
16467    pub name: ::core::option::Option<::prost::alloc::string::String>,
16468    #[prost(uint32, optional, tag = "6")]
16469    pub num_free: ::core::option::Option<u32>,
16470    #[prost(uint32, optional, tag = "7")]
16471    pub seqno: ::core::option::Option<u32>,
16472    #[prost(uint32, optional, tag = "8")]
16473    pub r#type: ::core::option::Option<u32>,
16474    #[prost(uint32, optional, tag = "9")]
16475    pub vq: ::core::option::Option<u32>,
16476}
16477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16478pub struct VirtioGpuCmdResponseFtraceEvent {
16479    #[prost(uint32, optional, tag = "1")]
16480    pub ctx_id: ::core::option::Option<u32>,
16481    #[prost(int32, optional, tag = "2")]
16482    pub dev: ::core::option::Option<i32>,
16483    #[prost(uint64, optional, tag = "3")]
16484    pub fence_id: ::core::option::Option<u64>,
16485    #[prost(uint32, optional, tag = "4")]
16486    pub flags: ::core::option::Option<u32>,
16487    #[prost(string, optional, tag = "5")]
16488    pub name: ::core::option::Option<::prost::alloc::string::String>,
16489    #[prost(uint32, optional, tag = "6")]
16490    pub num_free: ::core::option::Option<u32>,
16491    #[prost(uint32, optional, tag = "7")]
16492    pub seqno: ::core::option::Option<u32>,
16493    #[prost(uint32, optional, tag = "8")]
16494    pub r#type: ::core::option::Option<u32>,
16495    #[prost(uint32, optional, tag = "9")]
16496    pub vq: ::core::option::Option<u32>,
16497}
16498#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16499pub struct VirtioVideoCmdFtraceEvent {
16500    #[prost(uint32, optional, tag = "1")]
16501    pub stream_id: ::core::option::Option<u32>,
16502    #[prost(uint32, optional, tag = "2")]
16503    pub r#type: ::core::option::Option<u32>,
16504}
16505#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16506pub struct VirtioVideoCmdDoneFtraceEvent {
16507    #[prost(uint32, optional, tag = "1")]
16508    pub stream_id: ::core::option::Option<u32>,
16509    #[prost(uint32, optional, tag = "2")]
16510    pub r#type: ::core::option::Option<u32>,
16511}
16512#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16513pub struct VirtioVideoResourceQueueFtraceEvent {
16514    #[prost(uint32, optional, tag = "1")]
16515    pub data_size0: ::core::option::Option<u32>,
16516    #[prost(uint32, optional, tag = "2")]
16517    pub data_size1: ::core::option::Option<u32>,
16518    #[prost(uint32, optional, tag = "3")]
16519    pub data_size2: ::core::option::Option<u32>,
16520    #[prost(uint32, optional, tag = "4")]
16521    pub data_size3: ::core::option::Option<u32>,
16522    #[prost(uint32, optional, tag = "5")]
16523    pub queue_type: ::core::option::Option<u32>,
16524    #[prost(int32, optional, tag = "6")]
16525    pub resource_id: ::core::option::Option<i32>,
16526    #[prost(int32, optional, tag = "7")]
16527    pub stream_id: ::core::option::Option<i32>,
16528    #[prost(uint64, optional, tag = "8")]
16529    pub timestamp: ::core::option::Option<u64>,
16530}
16531#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16532pub struct VirtioVideoResourceQueueDoneFtraceEvent {
16533    #[prost(uint32, optional, tag = "1")]
16534    pub data_size0: ::core::option::Option<u32>,
16535    #[prost(uint32, optional, tag = "2")]
16536    pub data_size1: ::core::option::Option<u32>,
16537    #[prost(uint32, optional, tag = "3")]
16538    pub data_size2: ::core::option::Option<u32>,
16539    #[prost(uint32, optional, tag = "4")]
16540    pub data_size3: ::core::option::Option<u32>,
16541    #[prost(uint32, optional, tag = "5")]
16542    pub queue_type: ::core::option::Option<u32>,
16543    #[prost(int32, optional, tag = "6")]
16544    pub resource_id: ::core::option::Option<i32>,
16545    #[prost(int32, optional, tag = "7")]
16546    pub stream_id: ::core::option::Option<i32>,
16547    #[prost(uint64, optional, tag = "8")]
16548    pub timestamp: ::core::option::Option<u64>,
16549}
16550#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16551pub struct MmVmscanDirectReclaimBeginFtraceEvent {
16552    #[prost(int32, optional, tag = "1")]
16553    pub order: ::core::option::Option<i32>,
16554    #[prost(int32, optional, tag = "2")]
16555    pub may_writepage: ::core::option::Option<i32>,
16556    #[prost(uint32, optional, tag = "3")]
16557    pub gfp_flags: ::core::option::Option<u32>,
16558}
16559#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16560pub struct MmVmscanDirectReclaimEndFtraceEvent {
16561    #[prost(uint64, optional, tag = "1")]
16562    pub nr_reclaimed: ::core::option::Option<u64>,
16563}
16564#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16565pub struct MmVmscanKswapdWakeFtraceEvent {
16566    #[prost(int32, optional, tag = "1")]
16567    pub nid: ::core::option::Option<i32>,
16568    #[prost(int32, optional, tag = "2")]
16569    pub order: ::core::option::Option<i32>,
16570    #[prost(int32, optional, tag = "3")]
16571    pub zid: ::core::option::Option<i32>,
16572}
16573#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16574pub struct MmVmscanKswapdSleepFtraceEvent {
16575    #[prost(int32, optional, tag = "1")]
16576    pub nid: ::core::option::Option<i32>,
16577}
16578#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16579pub struct MmShrinkSlabStartFtraceEvent {
16580    #[prost(uint64, optional, tag = "1")]
16581    pub cache_items: ::core::option::Option<u64>,
16582    #[prost(uint64, optional, tag = "2")]
16583    pub delta: ::core::option::Option<u64>,
16584    #[prost(uint32, optional, tag = "3")]
16585    pub gfp_flags: ::core::option::Option<u32>,
16586    #[prost(uint64, optional, tag = "4")]
16587    pub lru_pgs: ::core::option::Option<u64>,
16588    #[prost(int64, optional, tag = "5")]
16589    pub nr_objects_to_shrink: ::core::option::Option<i64>,
16590    #[prost(uint64, optional, tag = "6")]
16591    pub pgs_scanned: ::core::option::Option<u64>,
16592    #[prost(uint64, optional, tag = "7")]
16593    pub shr: ::core::option::Option<u64>,
16594    #[prost(uint64, optional, tag = "8")]
16595    pub shrink: ::core::option::Option<u64>,
16596    #[prost(uint64, optional, tag = "9")]
16597    pub total_scan: ::core::option::Option<u64>,
16598    #[prost(int32, optional, tag = "10")]
16599    pub nid: ::core::option::Option<i32>,
16600    #[prost(int32, optional, tag = "11")]
16601    pub priority: ::core::option::Option<i32>,
16602}
16603#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16604pub struct MmShrinkSlabEndFtraceEvent {
16605    #[prost(int64, optional, tag = "1")]
16606    pub new_scan: ::core::option::Option<i64>,
16607    #[prost(int32, optional, tag = "2")]
16608    pub retval: ::core::option::Option<i32>,
16609    #[prost(uint64, optional, tag = "3")]
16610    pub shr: ::core::option::Option<u64>,
16611    #[prost(uint64, optional, tag = "4")]
16612    pub shrink: ::core::option::Option<u64>,
16613    #[prost(int64, optional, tag = "5")]
16614    pub total_scan: ::core::option::Option<i64>,
16615    #[prost(int64, optional, tag = "6")]
16616    pub unused_scan: ::core::option::Option<i64>,
16617    #[prost(int32, optional, tag = "7")]
16618    pub nid: ::core::option::Option<i32>,
16619}
16620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16621pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
16622    #[prost(int32, optional, tag = "1")]
16623    pub order: ::core::option::Option<i32>,
16624    #[prost(int32, optional, tag = "2")]
16625    pub may_writepage: ::core::option::Option<i32>,
16626    #[prost(uint64, optional, tag = "3")]
16627    pub gfp_flags: ::core::option::Option<u64>,
16628}
16629#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16630pub struct MmVmscanMemcgReclaimEndFtraceEvent {
16631    #[prost(uint64, optional, tag = "1")]
16632    pub nr_reclaimed: ::core::option::Option<u64>,
16633}
16634#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16635pub struct WorkqueueActivateWorkFtraceEvent {
16636    #[prost(uint64, optional, tag = "1")]
16637    pub work: ::core::option::Option<u64>,
16638    #[prost(uint64, optional, tag = "2")]
16639    pub function: ::core::option::Option<u64>,
16640}
16641#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16642pub struct WorkqueueExecuteEndFtraceEvent {
16643    #[prost(uint64, optional, tag = "1")]
16644    pub work: ::core::option::Option<u64>,
16645    #[prost(uint64, optional, tag = "2")]
16646    pub function: ::core::option::Option<u64>,
16647}
16648#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16649pub struct WorkqueueExecuteStartFtraceEvent {
16650    #[prost(uint64, optional, tag = "1")]
16651    pub work: ::core::option::Option<u64>,
16652    #[prost(uint64, optional, tag = "2")]
16653    pub function: ::core::option::Option<u64>,
16654}
16655#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16656pub struct WorkqueueQueueWorkFtraceEvent {
16657    #[prost(uint64, optional, tag = "1")]
16658    pub work: ::core::option::Option<u64>,
16659    #[prost(uint64, optional, tag = "2")]
16660    pub function: ::core::option::Option<u64>,
16661    #[prost(int32, optional, tag = "4")]
16662    pub req_cpu: ::core::option::Option<i32>,
16663    #[prost(int32, optional, tag = "5")]
16664    pub cpu: ::core::option::Option<i32>,
16665    #[prost(string, optional, tag = "6")]
16666    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
16667}
16668#[derive(Clone, PartialEq, ::prost::Message)]
16669pub struct FtraceEvent {
16670    /// Timestamp in nanoseconds using .../tracing/trace_clock.
16671    #[prost(uint64, optional, tag = "1")]
16672    pub timestamp: ::core::option::Option<u64>,
16673    /// Kernel pid (do not confuse with userspace pid aka tgid).
16674    #[prost(uint32, optional, tag = "2")]
16675    pub pid: ::core::option::Option<u32>,
16676    /// Not populated in actual traces. Wire format might change.
16677    /// Placeholder declaration so that the ftrace parsing code accepts the
16678    /// existence of this common field. If this becomes needed for all events:
16679    /// consider merging with common_preempt_count to avoid extra proto tags.
16680    #[prost(uint32, optional, tag = "5")]
16681    pub common_flags: ::core::option::Option<u32>,
16682    #[prost(
16683        oneof = "ftrace_event::Event",
16684        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"
16685    )]
16686    pub event: ::core::option::Option<ftrace_event::Event>,
16687}
16688/// Nested message and enum types in `FtraceEvent`.
16689pub mod ftrace_event {
16690    #[derive(Clone, PartialEq, ::prost::Oneof)]
16691    pub enum Event {
16692        #[prost(message, tag = "3")]
16693        Print(super::PrintFtraceEvent),
16694        #[prost(message, tag = "4")]
16695        SchedSwitch(super::SchedSwitchFtraceEvent),
16696        /// removed field with id 5;
16697        /// removed field with id 6;
16698        /// removed field with id 7;
16699        /// removed field with id 8;
16700        /// removed field with id 9;
16701        /// removed field with id 10;
16702        #[prost(message, tag = "11")]
16703        CpuFrequency(super::CpuFrequencyFtraceEvent),
16704        #[prost(message, tag = "12")]
16705        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
16706        #[prost(message, tag = "13")]
16707        CpuIdle(super::CpuIdleFtraceEvent),
16708        #[prost(message, tag = "14")]
16709        ClockEnable(super::ClockEnableFtraceEvent),
16710        #[prost(message, tag = "15")]
16711        ClockDisable(super::ClockDisableFtraceEvent),
16712        #[prost(message, tag = "16")]
16713        ClockSetRate(super::ClockSetRateFtraceEvent),
16714        #[prost(message, tag = "17")]
16715        SchedWakeup(super::SchedWakeupFtraceEvent),
16716        #[prost(message, tag = "18")]
16717        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
16718        #[prost(message, tag = "19")]
16719        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
16720        #[prost(message, tag = "20")]
16721        SchedWaking(super::SchedWakingFtraceEvent),
16722        #[prost(message, tag = "21")]
16723        IpiEntry(super::IpiEntryFtraceEvent),
16724        #[prost(message, tag = "22")]
16725        IpiExit(super::IpiExitFtraceEvent),
16726        #[prost(message, tag = "23")]
16727        IpiRaise(super::IpiRaiseFtraceEvent),
16728        #[prost(message, tag = "24")]
16729        SoftirqEntry(super::SoftirqEntryFtraceEvent),
16730        #[prost(message, tag = "25")]
16731        SoftirqExit(super::SoftirqExitFtraceEvent),
16732        #[prost(message, tag = "26")]
16733        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
16734        #[prost(message, tag = "27")]
16735        I2cRead(super::I2cReadFtraceEvent),
16736        #[prost(message, tag = "28")]
16737        I2cWrite(super::I2cWriteFtraceEvent),
16738        #[prost(message, tag = "29")]
16739        I2cResult(super::I2cResultFtraceEvent),
16740        #[prost(message, tag = "30")]
16741        I2cReply(super::I2cReplyFtraceEvent),
16742        #[prost(message, tag = "31")]
16743        SmbusRead(super::SmbusReadFtraceEvent),
16744        #[prost(message, tag = "32")]
16745        SmbusWrite(super::SmbusWriteFtraceEvent),
16746        #[prost(message, tag = "33")]
16747        SmbusResult(super::SmbusResultFtraceEvent),
16748        #[prost(message, tag = "34")]
16749        SmbusReply(super::SmbusReplyFtraceEvent),
16750        #[prost(message, tag = "35")]
16751        LowmemoryKill(super::LowmemoryKillFtraceEvent),
16752        #[prost(message, tag = "36")]
16753        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
16754        #[prost(message, tag = "37")]
16755        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
16756        #[prost(message, tag = "38")]
16757        SyncPt(super::SyncPtFtraceEvent),
16758        #[prost(message, tag = "39")]
16759        SyncTimeline(super::SyncTimelineFtraceEvent),
16760        #[prost(message, tag = "40")]
16761        SyncWait(super::SyncWaitFtraceEvent),
16762        #[prost(message, tag = "41")]
16763        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
16764        #[prost(message, tag = "42")]
16765        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
16766        #[prost(message, tag = "43")]
16767        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
16768        #[prost(message, tag = "44")]
16769        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
16770        #[prost(message, tag = "45")]
16771        BlockRqIssue(super::BlockRqIssueFtraceEvent),
16772        #[prost(message, tag = "46")]
16773        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
16774        #[prost(message, tag = "47")]
16775        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
16776        #[prost(message, tag = "48")]
16777        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
16778        #[prost(message, tag = "49")]
16779        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
16780        #[prost(message, tag = "50")]
16781        BinderTransaction(super::BinderTransactionFtraceEvent),
16782        #[prost(message, tag = "51")]
16783        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
16784        #[prost(message, tag = "52")]
16785        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
16786        #[prost(message, tag = "53")]
16787        BinderLock(super::BinderLockFtraceEvent),
16788        #[prost(message, tag = "54")]
16789        BinderLocked(super::BinderLockedFtraceEvent),
16790        #[prost(message, tag = "55")]
16791        BinderUnlock(super::BinderUnlockFtraceEvent),
16792        #[prost(message, tag = "56")]
16793        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
16794        #[prost(message, tag = "57")]
16795        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
16796        #[prost(message, tag = "58")]
16797        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
16798        #[prost(message, tag = "59")]
16799        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
16800        #[prost(message, tag = "60")]
16801        RegulatorDisable(super::RegulatorDisableFtraceEvent),
16802        #[prost(message, tag = "61")]
16803        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
16804        #[prost(message, tag = "62")]
16805        RegulatorEnable(super::RegulatorEnableFtraceEvent),
16806        #[prost(message, tag = "63")]
16807        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
16808        #[prost(message, tag = "64")]
16809        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
16810        #[prost(message, tag = "65")]
16811        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
16812        #[prost(message, tag = "66")]
16813        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
16814        #[prost(message, tag = "67")]
16815        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
16816        #[prost(message, tag = "68")]
16817        CgroupMkdir(super::CgroupMkdirFtraceEvent),
16818        #[prost(message, tag = "69")]
16819        CgroupRemount(super::CgroupRemountFtraceEvent),
16820        #[prost(message, tag = "70")]
16821        CgroupRmdir(super::CgroupRmdirFtraceEvent),
16822        #[prost(message, tag = "71")]
16823        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
16824        #[prost(message, tag = "72")]
16825        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
16826        #[prost(message, tag = "73")]
16827        CgroupRelease(super::CgroupReleaseFtraceEvent),
16828        #[prost(message, tag = "74")]
16829        CgroupRename(super::CgroupRenameFtraceEvent),
16830        #[prost(message, tag = "75")]
16831        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
16832        #[prost(message, tag = "76")]
16833        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
16834        #[prost(message, tag = "77")]
16835        MdpCommit(super::MdpCommitFtraceEvent),
16836        #[prost(message, tag = "78")]
16837        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
16838        #[prost(message, tag = "79")]
16839        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
16840        #[prost(message, tag = "80")]
16841        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
16842        #[prost(message, tag = "81")]
16843        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
16844        #[prost(message, tag = "82")]
16845        MdpCompareBw(super::MdpCompareBwFtraceEvent),
16846        #[prost(message, tag = "83")]
16847        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
16848        #[prost(message, tag = "84")]
16849        MdpSsppSet(super::MdpSsppSetFtraceEvent),
16850        #[prost(message, tag = "85")]
16851        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
16852        #[prost(message, tag = "86")]
16853        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
16854        #[prost(message, tag = "87")]
16855        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
16856        #[prost(message, tag = "88")]
16857        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
16858        #[prost(message, tag = "89")]
16859        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
16860        #[prost(message, tag = "90")]
16861        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
16862        #[prost(message, tag = "91")]
16863        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
16864        #[prost(message, tag = "92")]
16865        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
16866        #[prost(message, tag = "93")]
16867        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
16868        #[prost(message, tag = "94")]
16869        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
16870        #[prost(message, tag = "95")]
16871        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
16872        #[prost(message, tag = "96")]
16873        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
16874        #[prost(message, tag = "97")]
16875        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
16876        #[prost(message, tag = "98")]
16877        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
16878        #[prost(message, tag = "99")]
16879        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
16880        #[prost(message, tag = "100")]
16881        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
16882        #[prost(message, tag = "101")]
16883        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
16884        #[prost(message, tag = "102")]
16885        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
16886        #[prost(message, tag = "103")]
16887        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
16888        #[prost(message, tag = "104")]
16889        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
16890        #[prost(message, tag = "105")]
16891        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
16892        #[prost(message, tag = "106")]
16893        MmCompactionIsolateMigratepages(
16894            super::MmCompactionIsolateMigratepagesFtraceEvent,
16895        ),
16896        #[prost(message, tag = "107")]
16897        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
16898        #[prost(message, tag = "108")]
16899        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
16900        #[prost(message, tag = "109")]
16901        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
16902        #[prost(message, tag = "110")]
16903        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
16904        #[prost(message, tag = "111")]
16905        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
16906        #[prost(message, tag = "112")]
16907        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
16908        #[prost(message, tag = "113")]
16909        SuspendResume(super::SuspendResumeFtraceEvent),
16910        #[prost(message, tag = "114")]
16911        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
16912        #[prost(message, tag = "115")]
16913        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
16914        #[prost(message, tag = "116")]
16915        BlockBioBounce(super::BlockBioBounceFtraceEvent),
16916        #[prost(message, tag = "117")]
16917        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
16918        #[prost(message, tag = "118")]
16919        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
16920        #[prost(message, tag = "119")]
16921        BlockBioQueue(super::BlockBioQueueFtraceEvent),
16922        #[prost(message, tag = "120")]
16923        BlockBioRemap(super::BlockBioRemapFtraceEvent),
16924        #[prost(message, tag = "121")]
16925        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
16926        #[prost(message, tag = "122")]
16927        BlockGetrq(super::BlockGetrqFtraceEvent),
16928        #[prost(message, tag = "123")]
16929        BlockPlug(super::BlockPlugFtraceEvent),
16930        #[prost(message, tag = "124")]
16931        BlockRqAbort(super::BlockRqAbortFtraceEvent),
16932        #[prost(message, tag = "125")]
16933        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
16934        #[prost(message, tag = "126")]
16935        BlockRqInsert(super::BlockRqInsertFtraceEvent),
16936        /// removed field with id 127;
16937        #[prost(message, tag = "128")]
16938        BlockRqRemap(super::BlockRqRemapFtraceEvent),
16939        #[prost(message, tag = "129")]
16940        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
16941        #[prost(message, tag = "130")]
16942        BlockSleeprq(super::BlockSleeprqFtraceEvent),
16943        #[prost(message, tag = "131")]
16944        BlockSplit(super::BlockSplitFtraceEvent),
16945        #[prost(message, tag = "132")]
16946        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
16947        #[prost(message, tag = "133")]
16948        BlockUnplug(super::BlockUnplugFtraceEvent),
16949        #[prost(message, tag = "134")]
16950        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
16951        #[prost(message, tag = "135")]
16952        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
16953        #[prost(message, tag = "136")]
16954        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
16955        #[prost(message, tag = "137")]
16956        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
16957        #[prost(message, tag = "138")]
16958        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
16959        #[prost(message, tag = "139")]
16960        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
16961        #[prost(message, tag = "140")]
16962        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
16963        #[prost(message, tag = "141")]
16964        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
16965        #[prost(message, tag = "142")]
16966        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
16967        #[prost(message, tag = "143")]
16968        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
16969        #[prost(message, tag = "144")]
16970        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
16971        #[prost(message, tag = "145")]
16972        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
16973        #[prost(message, tag = "146")]
16974        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
16975        #[prost(message, tag = "147")]
16976        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
16977        #[prost(message, tag = "148")]
16978        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
16979        #[prost(message, tag = "149")]
16980        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
16981        #[prost(message, tag = "150")]
16982        Ext4EsFindDelayedExtentRangeEnter(
16983            super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent,
16984        ),
16985        #[prost(message, tag = "151")]
16986        Ext4EsFindDelayedExtentRangeExit(
16987            super::Ext4EsFindDelayedExtentRangeExitFtraceEvent,
16988        ),
16989        #[prost(message, tag = "152")]
16990        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
16991        #[prost(message, tag = "153")]
16992        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
16993        #[prost(message, tag = "154")]
16994        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
16995        #[prost(message, tag = "155")]
16996        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
16997        #[prost(message, tag = "156")]
16998        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
16999        #[prost(message, tag = "157")]
17000        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
17001        #[prost(message, tag = "158")]
17002        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
17003        #[prost(message, tag = "159")]
17004        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
17005        #[prost(message, tag = "160")]
17006        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
17007        #[prost(message, tag = "161")]
17008        Ext4ExtConvertToInitializedEnter(
17009            super::Ext4ExtConvertToInitializedEnterFtraceEvent,
17010        ),
17011        #[prost(message, tag = "162")]
17012        Ext4ExtConvertToInitializedFastpath(
17013            super::Ext4ExtConvertToInitializedFastpathFtraceEvent,
17014        ),
17015        #[prost(message, tag = "163")]
17016        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
17017        #[prost(message, tag = "164")]
17018        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
17019        #[prost(message, tag = "165")]
17020        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
17021        #[prost(message, tag = "166")]
17022        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
17023        #[prost(message, tag = "167")]
17024        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
17025        #[prost(message, tag = "168")]
17026        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
17027        #[prost(message, tag = "169")]
17028        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
17029        #[prost(message, tag = "170")]
17030        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
17031        #[prost(message, tag = "171")]
17032        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
17033        #[prost(message, tag = "172")]
17034        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
17035        #[prost(message, tag = "173")]
17036        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
17037        #[prost(message, tag = "174")]
17038        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
17039        #[prost(message, tag = "175")]
17040        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
17041        #[prost(message, tag = "176")]
17042        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
17043        #[prost(message, tag = "177")]
17044        Ext4Forget(super::Ext4ForgetFtraceEvent),
17045        #[prost(message, tag = "178")]
17046        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
17047        #[prost(message, tag = "179")]
17048        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
17049        #[prost(message, tag = "180")]
17050        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
17051        #[prost(message, tag = "181")]
17052        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
17053        #[prost(message, tag = "182")]
17054        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
17055        #[prost(message, tag = "183")]
17056        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
17057        #[prost(message, tag = "184")]
17058        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
17059        #[prost(message, tag = "185")]
17060        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
17061        #[prost(message, tag = "186")]
17062        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
17063        #[prost(message, tag = "187")]
17064        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
17065        #[prost(message, tag = "188")]
17066        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
17067        #[prost(message, tag = "189")]
17068        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
17069        #[prost(message, tag = "190")]
17070        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
17071        #[prost(message, tag = "191")]
17072        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
17073        #[prost(message, tag = "192")]
17074        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
17075        #[prost(message, tag = "193")]
17076        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
17077        #[prost(message, tag = "194")]
17078        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
17079        #[prost(message, tag = "195")]
17080        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
17081        #[prost(message, tag = "196")]
17082        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
17083        #[prost(message, tag = "197")]
17084        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
17085        #[prost(message, tag = "198")]
17086        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
17087        #[prost(message, tag = "199")]
17088        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
17089        #[prost(message, tag = "200")]
17090        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
17091        #[prost(message, tag = "201")]
17092        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
17093        #[prost(message, tag = "202")]
17094        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
17095        #[prost(message, tag = "203")]
17096        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
17097        #[prost(message, tag = "204")]
17098        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
17099        #[prost(message, tag = "205")]
17100        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
17101        #[prost(message, tag = "206")]
17102        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
17103        #[prost(message, tag = "207")]
17104        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
17105        #[prost(message, tag = "208")]
17106        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
17107        #[prost(message, tag = "209")]
17108        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
17109        #[prost(message, tag = "210")]
17110        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
17111        #[prost(message, tag = "211")]
17112        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
17113        #[prost(message, tag = "212")]
17114        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
17115        #[prost(message, tag = "213")]
17116        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
17117        #[prost(message, tag = "214")]
17118        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
17119        #[prost(message, tag = "215")]
17120        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
17121        #[prost(message, tag = "216")]
17122        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
17123        #[prost(message, tag = "217")]
17124        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
17125        #[prost(message, tag = "218")]
17126        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
17127        #[prost(message, tag = "219")]
17128        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
17129        /// removed field with id 220;
17130        /// removed field with id 221;
17131        /// removed field with id 222;
17132        /// removed field with id 223;
17133        /// removed field with id 224;
17134        /// removed field with id 225;
17135        /// removed field with id 226;
17136        /// removed field with id 227;
17137        /// removed field with id 228;
17138        /// removed field with id 229;
17139        #[prost(message, tag = "230")]
17140        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
17141        #[prost(message, tag = "231")]
17142        Ext4Writepage(super::Ext4WritepageFtraceEvent),
17143        #[prost(message, tag = "232")]
17144        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
17145        #[prost(message, tag = "233")]
17146        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
17147        #[prost(message, tag = "234")]
17148        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
17149        #[prost(message, tag = "235")]
17150        TaskNewtask(super::TaskNewtaskFtraceEvent),
17151        #[prost(message, tag = "236")]
17152        TaskRename(super::TaskRenameFtraceEvent),
17153        #[prost(message, tag = "237")]
17154        SchedProcessExec(super::SchedProcessExecFtraceEvent),
17155        #[prost(message, tag = "238")]
17156        SchedProcessExit(super::SchedProcessExitFtraceEvent),
17157        #[prost(message, tag = "239")]
17158        SchedProcessFork(super::SchedProcessForkFtraceEvent),
17159        #[prost(message, tag = "240")]
17160        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
17161        #[prost(message, tag = "241")]
17162        SchedProcessHang(super::SchedProcessHangFtraceEvent),
17163        #[prost(message, tag = "242")]
17164        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
17165        #[prost(message, tag = "243")]
17166        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
17167        #[prost(message, tag = "244")]
17168        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
17169        #[prost(message, tag = "245")]
17170        F2fsFallocate(super::F2fsFallocateFtraceEvent),
17171        #[prost(message, tag = "246")]
17172        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
17173        #[prost(message, tag = "247")]
17174        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
17175        #[prost(message, tag = "248")]
17176        F2fsIget(super::F2fsIgetFtraceEvent),
17177        #[prost(message, tag = "249")]
17178        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
17179        #[prost(message, tag = "250")]
17180        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
17181        #[prost(message, tag = "251")]
17182        F2fsReadpage(super::F2fsReadpageFtraceEvent),
17183        #[prost(message, tag = "252")]
17184        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
17185        #[prost(message, tag = "253")]
17186        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
17187        #[prost(message, tag = "254")]
17188        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
17189        #[prost(message, tag = "255")]
17190        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
17191        #[prost(message, tag = "256")]
17192        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
17193        #[prost(message, tag = "257")]
17194        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
17195        #[prost(message, tag = "258")]
17196        F2fsTruncate(super::F2fsTruncateFtraceEvent),
17197        #[prost(message, tag = "259")]
17198        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
17199        #[prost(message, tag = "260")]
17200        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
17201        #[prost(message, tag = "261")]
17202        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
17203        #[prost(message, tag = "262")]
17204        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
17205        #[prost(message, tag = "263")]
17206        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
17207        #[prost(message, tag = "264")]
17208        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
17209        #[prost(message, tag = "265")]
17210        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
17211        #[prost(message, tag = "266")]
17212        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
17213        #[prost(message, tag = "267")]
17214        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
17215        #[prost(message, tag = "268")]
17216        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
17217        #[prost(message, tag = "269")]
17218        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
17219        #[prost(message, tag = "270")]
17220        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
17221        #[prost(message, tag = "271")]
17222        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
17223        #[prost(message, tag = "272")]
17224        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
17225        #[prost(message, tag = "273")]
17226        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
17227        #[prost(message, tag = "274")]
17228        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
17229        #[prost(message, tag = "275")]
17230        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
17231        #[prost(message, tag = "276")]
17232        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
17233        #[prost(message, tag = "277")]
17234        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
17235        #[prost(message, tag = "278")]
17236        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
17237        #[prost(message, tag = "279")]
17238        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
17239        #[prost(message, tag = "280")]
17240        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
17241        #[prost(message, tag = "281")]
17242        IommuMapRange(super::IommuMapRangeFtraceEvent),
17243        #[prost(message, tag = "282")]
17244        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
17245        #[prost(message, tag = "283")]
17246        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
17247        #[prost(message, tag = "284")]
17248        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
17249        #[prost(message, tag = "285")]
17250        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
17251        #[prost(message, tag = "286")]
17252        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
17253        #[prost(message, tag = "287")]
17254        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
17255        #[prost(message, tag = "288")]
17256        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
17257        #[prost(message, tag = "289")]
17258        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
17259        #[prost(message, tag = "290")]
17260        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
17261        #[prost(message, tag = "291")]
17262        IonPrefetching(super::IonPrefetchingFtraceEvent),
17263        #[prost(message, tag = "292")]
17264        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
17265        #[prost(message, tag = "293")]
17266        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
17267        #[prost(message, tag = "294")]
17268        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
17269        #[prost(message, tag = "295")]
17270        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
17271        #[prost(message, tag = "296")]
17272        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
17273        #[prost(message, tag = "297")]
17274        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
17275        #[prost(message, tag = "298")]
17276        Kfree(super::KfreeFtraceEvent),
17277        #[prost(message, tag = "299")]
17278        Kmalloc(super::KmallocFtraceEvent),
17279        #[prost(message, tag = "300")]
17280        KmallocNode(super::KmallocNodeFtraceEvent),
17281        #[prost(message, tag = "301")]
17282        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
17283        #[prost(message, tag = "302")]
17284        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
17285        #[prost(message, tag = "303")]
17286        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
17287        #[prost(message, tag = "304")]
17288        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
17289        #[prost(message, tag = "305")]
17290        MigratePagesStart(super::MigratePagesStartFtraceEvent),
17291        #[prost(message, tag = "306")]
17292        MigrateRetry(super::MigrateRetryFtraceEvent),
17293        #[prost(message, tag = "307")]
17294        MmPageAlloc(super::MmPageAllocFtraceEvent),
17295        #[prost(message, tag = "308")]
17296        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
17297        #[prost(message, tag = "309")]
17298        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
17299        #[prost(message, tag = "310")]
17300        MmPageFree(super::MmPageFreeFtraceEvent),
17301        #[prost(message, tag = "311")]
17302        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
17303        #[prost(message, tag = "312")]
17304        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
17305        #[prost(message, tag = "313")]
17306        RssStat(super::RssStatFtraceEvent),
17307        #[prost(message, tag = "314")]
17308        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
17309        #[prost(message, tag = "315")]
17310        IonHeapGrow(super::IonHeapGrowFtraceEvent),
17311        #[prost(message, tag = "316")]
17312        FenceInit(super::FenceInitFtraceEvent),
17313        #[prost(message, tag = "317")]
17314        FenceDestroy(super::FenceDestroyFtraceEvent),
17315        #[prost(message, tag = "318")]
17316        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
17317        #[prost(message, tag = "319")]
17318        FenceSignaled(super::FenceSignaledFtraceEvent),
17319        #[prost(message, tag = "320")]
17320        ClkEnable(super::ClkEnableFtraceEvent),
17321        #[prost(message, tag = "321")]
17322        ClkDisable(super::ClkDisableFtraceEvent),
17323        #[prost(message, tag = "322")]
17324        ClkSetRate(super::ClkSetRateFtraceEvent),
17325        #[prost(message, tag = "323")]
17326        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
17327        #[prost(message, tag = "324")]
17328        SignalDeliver(super::SignalDeliverFtraceEvent),
17329        #[prost(message, tag = "325")]
17330        SignalGenerate(super::SignalGenerateFtraceEvent),
17331        #[prost(message, tag = "326")]
17332        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
17333        #[prost(message, tag = "327")]
17334        Generic(super::GenericFtraceEvent),
17335        #[prost(message, tag = "328")]
17336        MmEventRecord(super::MmEventRecordFtraceEvent),
17337        #[prost(message, tag = "329")]
17338        SysEnter(super::SysEnterFtraceEvent),
17339        #[prost(message, tag = "330")]
17340        SysExit(super::SysExitFtraceEvent),
17341        #[prost(message, tag = "331")]
17342        Zero(super::ZeroFtraceEvent),
17343        #[prost(message, tag = "332")]
17344        GpuFrequency(super::GpuFrequencyFtraceEvent),
17345        #[prost(message, tag = "333")]
17346        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
17347        #[prost(message, tag = "334")]
17348        MarkVictim(super::MarkVictimFtraceEvent),
17349        #[prost(message, tag = "335")]
17350        IonStat(super::IonStatFtraceEvent),
17351        #[prost(message, tag = "336")]
17352        IonBufferCreate(super::IonBufferCreateFtraceEvent),
17353        #[prost(message, tag = "337")]
17354        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
17355        #[prost(message, tag = "338")]
17356        ScmCallStart(super::ScmCallStartFtraceEvent),
17357        #[prost(message, tag = "339")]
17358        ScmCallEnd(super::ScmCallEndFtraceEvent),
17359        #[prost(message, tag = "340")]
17360        GpuMemTotal(super::GpuMemTotalFtraceEvent),
17361        #[prost(message, tag = "341")]
17362        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
17363        #[prost(message, tag = "342")]
17364        CdevUpdate(super::CdevUpdateFtraceEvent),
17365        #[prost(message, tag = "343")]
17366        CpuhpExit(super::CpuhpExitFtraceEvent),
17367        #[prost(message, tag = "344")]
17368        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
17369        #[prost(message, tag = "345")]
17370        CpuhpEnter(super::CpuhpEnterFtraceEvent),
17371        #[prost(message, tag = "346")]
17372        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
17373        #[prost(message, tag = "347")]
17374        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
17375        #[prost(message, tag = "348")]
17376        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
17377        #[prost(message, tag = "349")]
17378        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
17379        #[prost(message, tag = "350")]
17380        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
17381        #[prost(message, tag = "351")]
17382        DmaHeapStat(super::DmaHeapStatFtraceEvent),
17383        #[prost(message, tag = "352")]
17384        CpuhpPause(super::CpuhpPauseFtraceEvent),
17385        #[prost(message, tag = "353")]
17386        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
17387        #[prost(message, tag = "354")]
17388        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
17389        #[prost(message, tag = "355")]
17390        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
17391        #[prost(message, tag = "356")]
17392        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
17393        #[prost(message, tag = "357")]
17394        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
17395        #[prost(message, tag = "358")]
17396        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
17397        #[prost(message, tag = "359")]
17398        RssStatThrottled(super::RssStatThrottledFtraceEvent),
17399        #[prost(message, tag = "360")]
17400        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
17401        #[prost(message, tag = "361")]
17402        NetDevXmit(super::NetDevXmitFtraceEvent),
17403        #[prost(message, tag = "362")]
17404        InetSockSetState(super::InetSockSetStateFtraceEvent),
17405        #[prost(message, tag = "363")]
17406        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
17407        #[prost(message, tag = "364")]
17408        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
17409        #[prost(message, tag = "365")]
17410        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
17411        #[prost(message, tag = "366")]
17412        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
17413        #[prost(message, tag = "367")]
17414        KfreeSkb(super::KfreeSkbFtraceEvent),
17415        #[prost(message, tag = "368")]
17416        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
17417        #[prost(message, tag = "369")]
17418        KvmAckIrq(super::KvmAckIrqFtraceEvent),
17419        #[prost(message, tag = "370")]
17420        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
17421        #[prost(message, tag = "371")]
17422        KvmAgePage(super::KvmAgePageFtraceEvent),
17423        #[prost(message, tag = "372")]
17424        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
17425        #[prost(message, tag = "373")]
17426        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
17427        #[prost(message, tag = "374")]
17428        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
17429        #[prost(message, tag = "375")]
17430        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
17431        #[prost(message, tag = "376")]
17432        KvmEntry(super::KvmEntryFtraceEvent),
17433        #[prost(message, tag = "377")]
17434        KvmExit(super::KvmExitFtraceEvent),
17435        #[prost(message, tag = "378")]
17436        KvmFpu(super::KvmFpuFtraceEvent),
17437        #[prost(message, tag = "379")]
17438        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
17439        #[prost(message, tag = "380")]
17440        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
17441        #[prost(message, tag = "381")]
17442        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
17443        #[prost(message, tag = "382")]
17444        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
17445        #[prost(message, tag = "383")]
17446        KvmIrqLine(super::KvmIrqLineFtraceEvent),
17447        #[prost(message, tag = "384")]
17448        KvmMmio(super::KvmMmioFtraceEvent),
17449        #[prost(message, tag = "385")]
17450        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
17451        #[prost(message, tag = "386")]
17452        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
17453        #[prost(message, tag = "387")]
17454        KvmSetIrq(super::KvmSetIrqFtraceEvent),
17455        #[prost(message, tag = "388")]
17456        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
17457        #[prost(message, tag = "389")]
17458        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
17459        #[prost(message, tag = "390")]
17460        KvmSysAccess(super::KvmSysAccessFtraceEvent),
17461        #[prost(message, tag = "391")]
17462        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
17463        #[prost(message, tag = "392")]
17464        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
17465        #[prost(message, tag = "393")]
17466        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
17467        #[prost(message, tag = "394")]
17468        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
17469        #[prost(message, tag = "395")]
17470        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
17471        #[prost(message, tag = "396")]
17472        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
17473        #[prost(message, tag = "397")]
17474        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
17475        #[prost(message, tag = "398")]
17476        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
17477        #[prost(message, tag = "399")]
17478        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
17479        #[prost(message, tag = "400")]
17480        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
17481        #[prost(message, tag = "401")]
17482        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
17483        #[prost(message, tag = "402")]
17484        TrapReg(super::TrapRegFtraceEvent),
17485        #[prost(message, tag = "403")]
17486        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
17487        #[prost(message, tag = "404")]
17488        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
17489        #[prost(message, tag = "405")]
17490        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
17491        #[prost(message, tag = "406")]
17492        UfshcdCommand(super::UfshcdCommandFtraceEvent),
17493        #[prost(message, tag = "407")]
17494        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
17495        #[prost(message, tag = "408")]
17496        Console(super::ConsoleFtraceEvent),
17497        #[prost(message, tag = "409")]
17498        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
17499        #[prost(message, tag = "410")]
17500        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
17501        #[prost(message, tag = "411")]
17502        DrmSchedJob(super::DrmSchedJobFtraceEvent),
17503        #[prost(message, tag = "412")]
17504        DrmRunJob(super::DrmRunJobFtraceEvent),
17505        #[prost(message, tag = "413")]
17506        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
17507        #[prost(message, tag = "414")]
17508        DmaFenceInit(super::DmaFenceInitFtraceEvent),
17509        #[prost(message, tag = "415")]
17510        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
17511        #[prost(message, tag = "416")]
17512        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
17513        #[prost(message, tag = "417")]
17514        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
17515        #[prost(message, tag = "418")]
17516        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
17517        #[prost(message, tag = "419")]
17518        F2fsIostat(super::F2fsIostatFtraceEvent),
17519        #[prost(message, tag = "420")]
17520        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
17521        #[prost(message, tag = "421")]
17522        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
17523        #[prost(message, tag = "422")]
17524        V4l2Qbuf(super::V4l2QbufFtraceEvent),
17525        #[prost(message, tag = "423")]
17526        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
17527        #[prost(message, tag = "424")]
17528        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
17529        #[prost(message, tag = "425")]
17530        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
17531        #[prost(message, tag = "426")]
17532        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
17533        #[prost(message, tag = "427")]
17534        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
17535        #[prost(message, tag = "428")]
17536        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
17537        #[prost(message, tag = "429")]
17538        DsiRx(super::DsiRxFtraceEvent),
17539        #[prost(message, tag = "430")]
17540        DsiTx(super::DsiTxFtraceEvent),
17541        #[prost(message, tag = "431")]
17542        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
17543        #[prost(message, tag = "432")]
17544        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
17545        #[prost(message, tag = "433")]
17546        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
17547        #[prost(message, tag = "434")]
17548        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
17549        #[prost(message, tag = "435")]
17550        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
17551        #[prost(message, tag = "436")]
17552        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
17553        #[prost(message, tag = "437")]
17554        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
17555        #[prost(message, tag = "438")]
17556        FuncgraphExit(super::FuncgraphExitFtraceEvent),
17557        #[prost(message, tag = "439")]
17558        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
17559        #[prost(message, tag = "440")]
17560        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
17561        #[prost(message, tag = "441")]
17562        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
17563        #[prost(message, tag = "442")]
17564        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
17565        #[prost(message, tag = "443")]
17566        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
17567        #[prost(message, tag = "444")]
17568        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
17569        #[prost(message, tag = "445")]
17570        TrustySmc(super::TrustySmcFtraceEvent),
17571        #[prost(message, tag = "446")]
17572        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
17573        #[prost(message, tag = "447")]
17574        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
17575        #[prost(message, tag = "448")]
17576        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
17577        #[prost(message, tag = "449")]
17578        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
17579        #[prost(message, tag = "450")]
17580        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
17581        #[prost(message, tag = "451")]
17582        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
17583        #[prost(message, tag = "452")]
17584        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
17585        #[prost(message, tag = "453")]
17586        TrustyIrq(super::TrustyIrqFtraceEvent),
17587        #[prost(message, tag = "454")]
17588        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
17589        #[prost(message, tag = "455")]
17590        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
17591        #[prost(message, tag = "456")]
17592        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
17593        #[prost(message, tag = "457")]
17594        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
17595        #[prost(message, tag = "458")]
17596        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
17597        /// removed field with id 459;
17598        #[prost(message, tag = "460")]
17599        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
17600        #[prost(message, tag = "461")]
17601        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
17602        #[prost(message, tag = "462")]
17603        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
17604        /// removed field with id 463;
17605        #[prost(message, tag = "464")]
17606        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
17607        #[prost(message, tag = "465")]
17608        CmaAllocStart(super::CmaAllocStartFtraceEvent),
17609        #[prost(message, tag = "466")]
17610        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
17611        #[prost(message, tag = "467")]
17612        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
17613        #[prost(message, tag = "468")]
17614        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
17615        #[prost(message, tag = "469")]
17616        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
17617        #[prost(message, tag = "470")]
17618        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
17619        #[prost(message, tag = "471")]
17620        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
17621        #[prost(message, tag = "472")]
17622        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
17623        #[prost(message, tag = "473")]
17624        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
17625        #[prost(message, tag = "474")]
17626        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
17627        #[prost(message, tag = "475")]
17628        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
17629        #[prost(message, tag = "476")]
17630        HypEnter(super::HypEnterFtraceEvent),
17631        #[prost(message, tag = "477")]
17632        HypExit(super::HypExitFtraceEvent),
17633        #[prost(message, tag = "478")]
17634        HostHcall(super::HostHcallFtraceEvent),
17635        #[prost(message, tag = "479")]
17636        HostSmc(super::HostSmcFtraceEvent),
17637        #[prost(message, tag = "480")]
17638        HostMemAbort(super::HostMemAbortFtraceEvent),
17639        #[prost(message, tag = "481")]
17640        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
17641        #[prost(message, tag = "482")]
17642        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
17643        #[prost(message, tag = "483")]
17644        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
17645        #[prost(message, tag = "484")]
17646        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
17647        #[prost(message, tag = "485")]
17648        BinderCommand(super::BinderCommandFtraceEvent),
17649        #[prost(message, tag = "486")]
17650        BinderReturn(super::BinderReturnFtraceEvent),
17651        #[prost(message, tag = "487")]
17652        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
17653        #[prost(message, tag = "488")]
17654        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
17655        #[prost(message, tag = "489")]
17656        RpmStatus(super::RpmStatusFtraceEvent),
17657        #[prost(message, tag = "490")]
17658        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
17659        #[prost(message, tag = "491")]
17660        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
17661        #[prost(message, tag = "492")]
17662        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
17663        #[prost(message, tag = "493")]
17664        DpuDsiRx(super::DpuDsiRxFtraceEvent),
17665        #[prost(message, tag = "494")]
17666        DpuDsiTx(super::DpuDsiTxFtraceEvent),
17667        #[prost(message, tag = "495")]
17668        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
17669        #[prost(message, tag = "496")]
17670        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
17671        #[prost(message, tag = "497")]
17672        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
17673        #[prost(message, tag = "498")]
17674        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
17675        #[prost(message, tag = "499")]
17676        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
17677        #[prost(message, tag = "500")]
17678        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
17679        #[prost(message, tag = "501")]
17680        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
17681        #[prost(message, tag = "502")]
17682        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
17683        #[prost(message, tag = "503")]
17684        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
17685        #[prost(message, tag = "504")]
17686        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
17687        #[prost(message, tag = "505")]
17688        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
17689        #[prost(message, tag = "506")]
17690        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
17691        #[prost(message, tag = "507")]
17692        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
17693        #[prost(message, tag = "508")]
17694        DcvshFreq(super::DcvshFreqFtraceEvent),
17695        #[prost(message, tag = "509")]
17696        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
17697        #[prost(message, tag = "510")]
17698        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(
17699            super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent,
17700        ),
17701        #[prost(message, tag = "511")]
17702        MaliMaliPmMcuHctlCoresNotifyPend(
17703            super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent,
17704        ),
17705        #[prost(message, tag = "512")]
17706        MaliMaliPmMcuHctlCoreInactivePend(
17707            super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent,
17708        ),
17709        #[prost(message, tag = "513")]
17710        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
17711        #[prost(message, tag = "514")]
17712        MaliMaliPmMcuHctlShadersCoreOffPend(
17713            super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent,
17714        ),
17715        #[prost(message, tag = "515")]
17716        MaliMaliPmMcuHctlShadersPendOff(
17717            super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent,
17718        ),
17719        #[prost(message, tag = "516")]
17720        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
17721        #[prost(message, tag = "517")]
17722        MaliMaliPmMcuHctlShadersReadyOff(
17723            super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent,
17724        ),
17725        #[prost(message, tag = "518")]
17726        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
17727        #[prost(message, tag = "519")]
17728        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
17729        #[prost(message, tag = "520")]
17730        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
17731        #[prost(message, tag = "521")]
17732        MaliMaliPmMcuOnCoreAttrUpdatePend(
17733            super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent,
17734        ),
17735        #[prost(message, tag = "522")]
17736        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
17737        #[prost(message, tag = "523")]
17738        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
17739        #[prost(message, tag = "524")]
17740        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
17741        #[prost(message, tag = "525")]
17742        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
17743        #[prost(message, tag = "526")]
17744        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
17745        #[prost(message, tag = "527")]
17746        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
17747        #[prost(message, tag = "528")]
17748        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
17749        #[prost(message, tag = "529")]
17750        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
17751        #[prost(message, tag = "530")]
17752        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
17753        #[prost(message, tag = "531")]
17754        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
17755        #[prost(message, tag = "532")]
17756        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
17757        #[prost(message, tag = "533")]
17758        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
17759        #[prost(message, tag = "534")]
17760        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
17761        #[prost(message, tag = "535")]
17762        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
17763        #[prost(message, tag = "536")]
17764        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
17765        #[prost(message, tag = "537")]
17766        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
17767        #[prost(message, tag = "538")]
17768        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
17769        #[prost(message, tag = "539")]
17770        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
17771        #[prost(message, tag = "540")]
17772        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
17773        #[prost(message, tag = "541")]
17774        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
17775        #[prost(message, tag = "542")]
17776        KprobeEvent(super::KprobeEvent),
17777        #[prost(message, tag = "543")]
17778        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
17779        #[prost(message, tag = "544")]
17780        DoSysOpen(super::DoSysOpenFtraceEvent),
17781        #[prost(message, tag = "545")]
17782        OpenExec(super::OpenExecFtraceEvent),
17783        #[prost(message, tag = "546")]
17784        BlockIoStart(super::BlockIoStartFtraceEvent),
17785        #[prost(message, tag = "547")]
17786        BlockIoDone(super::BlockIoDoneFtraceEvent),
17787        #[prost(message, tag = "548")]
17788        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
17789        #[prost(message, tag = "549")]
17790        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
17791        #[prost(message, tag = "550")]
17792        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
17793        #[prost(message, tag = "551")]
17794        HrtimerStart(super::HrtimerStartFtraceEvent),
17795        #[prost(message, tag = "552")]
17796        HrtimerCancel(super::HrtimerCancelFtraceEvent),
17797        #[prost(message, tag = "553")]
17798        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
17799        #[prost(message, tag = "554")]
17800        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
17801        #[prost(message, tag = "555")]
17802        TimerStart(super::TimerStartFtraceEvent),
17803        #[prost(message, tag = "556")]
17804        TimerCancel(super::TimerCancelFtraceEvent),
17805        #[prost(message, tag = "557")]
17806        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
17807        #[prost(message, tag = "558")]
17808        TimerExpireExit(super::TimerExpireExitFtraceEvent),
17809        #[prost(message, tag = "559")]
17810        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
17811        #[prost(message, tag = "560")]
17812        LocalTimerExit(super::LocalTimerExitFtraceEvent),
17813        #[prost(message, tag = "561")]
17814        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
17815        #[prost(message, tag = "562")]
17816        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
17817        #[prost(message, tag = "563")]
17818        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
17819        #[prost(message, tag = "564")]
17820        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
17821        #[prost(message, tag = "565")]
17822        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
17823        #[prost(message, tag = "566")]
17824        Dwc3Event(super::Dwc3EventFtraceEvent),
17825        #[prost(message, tag = "567")]
17826        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
17827        #[prost(message, tag = "568")]
17828        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
17829        #[prost(message, tag = "569")]
17830        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
17831        #[prost(message, tag = "570")]
17832        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
17833        #[prost(message, tag = "571")]
17834        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
17835        #[prost(message, tag = "572")]
17836        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
17837        #[prost(message, tag = "573")]
17838        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
17839        #[prost(message, tag = "574")]
17840        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
17841        #[prost(message, tag = "575")]
17842        Dwc3Writel(super::Dwc3WritelFtraceEvent),
17843        #[prost(message, tag = "576")]
17844        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
17845        #[prost(message, tag = "577")]
17846        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
17847        #[prost(message, tag = "578")]
17848        HostFfaCall(super::HostFfaCallFtraceEvent),
17849        #[prost(message, tag = "579")]
17850        DmabufRssStat(super::DmabufRssStatFtraceEvent),
17851        #[prost(message, tag = "580")]
17852        IommuIdmap(super::IommuIdmapFtraceEvent),
17853        #[prost(message, tag = "581")]
17854        PsciMemProtect(super::PsciMemProtectFtraceEvent),
17855        #[prost(message, tag = "582")]
17856        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
17857        #[prost(message, tag = "583")]
17858        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
17859        #[prost(message, tag = "584")]
17860        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
17861        #[prost(message, tag = "585")]
17862        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
17863        #[prost(message, tag = "586")]
17864        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
17865        #[prost(message, tag = "587")]
17866        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
17867        #[prost(message, tag = "588")]
17868        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
17869        #[prost(message, tag = "589")]
17870        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
17871        #[prost(message, tag = "590")]
17872        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
17873        #[prost(message, tag = "591")]
17874        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
17875        #[prost(message, tag = "592")]
17876        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
17877        #[prost(message, tag = "593")]
17878        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
17879        #[prost(message, tag = "594")]
17880        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
17881        #[prost(message, tag = "595")]
17882        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
17883        #[prost(message, tag = "596")]
17884        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
17885        #[prost(message, tag = "597")]
17886        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
17887        #[prost(message, tag = "598")]
17888        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
17889        #[prost(message, tag = "599")]
17890        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
17891        #[prost(message, tag = "600")]
17892        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
17893        #[prost(message, tag = "601")]
17894        GpuPowerState(super::GpuPowerStateFtraceEvent),
17895        #[prost(message, tag = "602")]
17896        GramCollision(super::GramCollisionFtraceEvent),
17897        #[prost(message, tag = "603")]
17898        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
17899        #[prost(message, tag = "604")]
17900        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
17901        #[prost(message, tag = "605")]
17902        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
17903        #[prost(message, tag = "606")]
17904        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
17905        #[prost(message, tag = "607")]
17906        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
17907        #[prost(message, tag = "608")]
17908        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
17909        #[prost(message, tag = "609")]
17910        DpuDispFrameDoneMissing(super::DpuDispFrameDoneMissingFtraceEvent),
17911        #[prost(message, tag = "610")]
17912        DpuDispFrameStartMissing(super::DpuDispFrameStartMissingFtraceEvent),
17913        #[prost(message, tag = "611")]
17914        PanelSettingsFull(super::PanelSettingsFullFtraceEvent),
17915        #[prost(message, tag = "612")]
17916        PanelSettingsLite(super::PanelSettingsLiteFtraceEvent),
17917        #[prost(message, tag = "613")]
17918        DpuDispDpuLineUnderrun(super::DpuDispDpuLineUnderrunFtraceEvent),
17919        #[prost(message, tag = "614")]
17920        PsciDomainIdleExit(super::PsciDomainIdleExitFtraceEvent),
17921        #[prost(message, tag = "615")]
17922        PsciDomainIdleEnter(super::PsciDomainIdleEnterFtraceEvent),
17923    }
17924}
17925/// Per-CPU kernel buffer stats for the ftrace data source gathered from
17926/// /sys/kernel/tracing/per_cpu/cpuX/stats.
17927#[derive(Clone, Copy, PartialEq, ::prost::Message)]
17928pub struct FtraceCpuStats {
17929    /// CPU index.
17930    #[prost(uint64, optional, tag = "1")]
17931    pub cpu: ::core::option::Option<u64>,
17932    /// Number of entries currently in the kernel buffer.
17933    #[prost(uint64, optional, tag = "2")]
17934    pub entries: ::core::option::Option<u64>,
17935    /// Number of events lost in kernel buffers due to overwriting of old events
17936    /// before userspace had a chance to drain them. Valid if the buffer is in
17937    /// "overwrite" mode, otherwise see |dropped_events|.
17938    #[prost(uint64, optional, tag = "3")]
17939    pub overrun: ::core::option::Option<u64>,
17940    /// This should always be zero. If not the buffer size is way too small or
17941    /// something went wrong with the tracer. Quoting the kernel: "number of
17942    /// commits failing due to the buffer wrapping around while there are
17943    /// uncommitted events, such as during an interrupt storm".
17944    #[prost(uint64, optional, tag = "4")]
17945    pub commit_overrun: ::core::option::Option<u64>,
17946    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
17947    /// The field should be named "bytes", but is misnamed for historical reasons.
17948    /// This value has known inaccuracies before Linux v6.6:
17949    /// <https://github.com/torvalds/linux/commit/45d99ea>
17950    #[prost(uint64, optional, tag = "5")]
17951    pub bytes_read: ::core::option::Option<u64>,
17952    /// The timestamp for the oldest event still in the ring buffer.
17953    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17954    #[prost(double, optional, tag = "6")]
17955    pub oldest_event_ts: ::core::option::Option<f64>,
17956    /// The current timestamp.
17957    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
17958    #[prost(double, optional, tag = "7")]
17959    pub now_ts: ::core::option::Option<f64>,
17960    /// If the kernel buffer has overwrite mode disabled, this will show the number
17961    /// of new events that were lost because the buffer was full. This is similar
17962    /// to |overrun| but only for the overwrite=false case.
17963    #[prost(uint64, optional, tag = "8")]
17964    pub dropped_events: ::core::option::Option<u64>,
17965    /// The number of events read (consumed) from the buffer by userspace.
17966    #[prost(uint64, optional, tag = "9")]
17967    pub read_events: ::core::option::Option<u64>,
17968}
17969/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
17970#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17971pub struct FtraceKprobeStats {
17972    /// Cumulative number of kprobe events generated for this function
17973    #[prost(int64, optional, tag = "1")]
17974    pub hits: ::core::option::Option<i64>,
17975    /// Cumulative number of kprobe events that could not be generated for this
17976    /// function and were missed.  This happens when too much nesting
17977    /// happens between a kprobe and its kretprobe, overflowing the
17978    /// maxactives buffer.
17979    #[prost(int64, optional, tag = "2")]
17980    pub misses: ::core::option::Option<i64>,
17981}
17982/// Errors and kernel buffer stats for the ftrace data source.
17983#[derive(Clone, PartialEq, ::prost::Message)]
17984pub struct FtraceStats {
17985    /// A pair of FtraceStats is written on every trace flush:
17986    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
17987    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
17988    ///                   before this packet was written. For simple traces this
17989    ///                   will be once at the end of the trace.
17990    #[prost(enumeration = "ftrace_stats::Phase", optional, tag = "1")]
17991    pub phase: ::core::option::Option<i32>,
17992    /// Per-CPU stats (one entry for each CPU).
17993    #[prost(message, repeated, tag = "2")]
17994    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
17995    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
17996    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
17997    /// trace or not. It can be used to debug kptr_restrict or security-related
17998    /// errors.
17999    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
18000    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
18001    #[prost(uint32, optional, tag = "3")]
18002    pub kernel_symbols_parsed: ::core::option::Option<u32>,
18003    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
18004    #[prost(uint32, optional, tag = "4")]
18005    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
18006    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
18007    /// one or more atrace categories not available on the device.
18008    #[prost(string, optional, tag = "5")]
18009    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
18010    /// Error message due to exclusivity violation of a single-tenant feature.
18011    #[prost(string, optional, tag = "13")]
18012    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
18013    /// Ftrace events requested by the config but not present on device.
18014    #[prost(string, repeated, tag = "6")]
18015    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18016    /// Ftrace events requested by the config and present on device, but which we
18017    /// failed to enable due to permissions, or due to a conflicting option
18018    /// (currently FtraceConfig.disable_generic_events).
18019    #[prost(string, repeated, tag = "7")]
18020    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18021    /// The data source was configured to preserve existing events in the ftrace
18022    /// buffer before the start of the trace.
18023    #[prost(bool, optional, tag = "8")]
18024    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
18025    /// Unique errors encountered during reading and parsing of the raw ftrace
18026    /// data. Ring buffer ABI related errors will also be recorded in the
18027    /// affected FtraceEventBundles with a timestamp.
18028    /// Any traces with entries in this field should be investigated, as they
18029    /// indicate a bug in perfetto or the kernel.
18030    #[prost(enumeration = "FtraceParseStatus", repeated, packed = "false", tag = "9")]
18031    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
18032    /// Kprobe profile stats for functions hits and misses
18033    #[prost(message, optional, tag = "10")]
18034    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
18035    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
18036    /// Added in: perfetto v52.
18037    #[prost(uint32, optional, tag = "11")]
18038    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
18039    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
18040    /// on the value we're writing into the tracefs control file. Might not be
18041    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
18042    /// scratch pages (and/or other factors). Added in: perfetto v52.
18043    #[prost(uint32, optional, tag = "12")]
18044    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
18045}
18046/// Nested message and enum types in `FtraceStats`.
18047pub mod ftrace_stats {
18048    #[derive(
18049        Clone,
18050        Copy,
18051        Debug,
18052        PartialEq,
18053        Eq,
18054        Hash,
18055        PartialOrd,
18056        Ord,
18057        ::prost::Enumeration
18058    )]
18059    #[repr(i32)]
18060    pub enum Phase {
18061        Unspecified = 0,
18062        StartOfTrace = 1,
18063        EndOfTrace = 2,
18064    }
18065    impl Phase {
18066        /// String value of the enum field names used in the ProtoBuf definition.
18067        ///
18068        /// The values are not transformed in any way and thus are considered stable
18069        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18070        pub fn as_str_name(&self) -> &'static str {
18071            match self {
18072                Self::Unspecified => "UNSPECIFIED",
18073                Self::StartOfTrace => "START_OF_TRACE",
18074                Self::EndOfTrace => "END_OF_TRACE",
18075            }
18076        }
18077        /// Creates an enum from field names used in the ProtoBuf definition.
18078        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18079            match value {
18080                "UNSPECIFIED" => Some(Self::Unspecified),
18081                "START_OF_TRACE" => Some(Self::StartOfTrace),
18082                "END_OF_TRACE" => Some(Self::EndOfTrace),
18083                _ => None,
18084            }
18085        }
18086    }
18087}
18088/// The result of tracing one or more ftrace data pages from a single per-cpu
18089/// kernel ring buffer. If collating multiple pages' worth of events, all of
18090/// them come from contiguous pages, with no kernel data loss in between.
18091#[derive(Clone, PartialEq, ::prost::Message)]
18092pub struct FtraceEventBundle {
18093    #[prost(uint32, optional, tag = "1")]
18094    pub cpu: ::core::option::Option<u32>,
18095    #[prost(message, repeated, tag = "2")]
18096    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
18097    /// Set to true if there was data loss between the last time we've read from
18098    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
18099    /// in this bundle.
18100    #[prost(bool, optional, tag = "3")]
18101    pub lost_events: ::core::option::Option<bool>,
18102    #[prost(message, optional, tag = "4")]
18103    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
18104    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
18105    /// timestamps as that counts during suspend, is available to userspace, and
18106    /// is coherent across cpus.
18107    ///
18108    /// If this field is set, it means that a different clock was used during
18109    /// recording. Either because the boot clock is unavailable (e.g. old kernels
18110    /// before 3.x), or the trace config has set an incompatible option
18111    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
18112    /// trace_processor will do best-effort clock alignment using timestamp pairs
18113    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
18114    /// when the ftrace clock is "boot", as that is the default assumption.
18115    ///
18116    /// Some clocks (local/global) are technically per-cpu, but we make a
18117    /// simplifying assumption that they are global, as their inter-cpu skew
18118    /// should be reasonably bounded on modern systems.
18119    ///
18120    /// Added in: perfetto v19. Android T (13).
18121    #[prost(enumeration = "FtraceClock", optional, tag = "5")]
18122    pub ftrace_clock: ::core::option::Option<i32>,
18123    /// The timestamp according to the ftrace clock, taken at the same instant as
18124    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
18125    /// will be in the future relative to the data covered by this bundle.
18126    /// Implementation note: Populated by reading the 'now ts:' field in
18127    /// tracefs/per_cpu/cpu0/stat.
18128    ///
18129    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18130    #[prost(int64, optional, tag = "6")]
18131    pub ftrace_timestamp: ::core::option::Option<i64>,
18132    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
18133    /// |ftrace_timestamp|.
18134    ///
18135    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
18136    #[prost(int64, optional, tag = "7")]
18137    pub boot_timestamp: ::core::option::Option<i64>,
18138    #[prost(message, repeated, tag = "8")]
18139    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
18140    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
18141    /// primary difference is that this field tracked the last timestamp read from
18142    /// the per-cpu buffer, while the newer field tracks events that get
18143    /// serialised into the trace.
18144    /// Added in: perfetto v44.
18145    #[prost(uint64, optional, tag = "9")]
18146    pub last_read_event_timestamp: ::core::option::Option<u64>,
18147    /// The timestamp (using ftrace clock) of the last event written into this
18148    /// data source on this cpu. In other words: the last event in the previous
18149    /// bundle.
18150    /// Lets the trace processing find an initial timestamp after which ftrace
18151    /// data is known to be valid across all cpus. Of particular importance when
18152    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
18153    /// oldest bundles can skew the first valid timestamp per cpu significantly.
18154    /// Added in: perfetto v47.
18155    #[prost(uint64, optional, tag = "10")]
18156    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
18157    #[prost(message, repeated, tag = "11")]
18158    pub generic_event_descriptors: ::prost::alloc::vec::Vec<
18159        ftrace_event_bundle::GenericEventDescriptor,
18160    >,
18161    /// Written only on android builds if the config sets |debug_ftrace_abi|.
18162    /// Contains the raw ring buffer tracing page that the implementation could
18163    /// not parse.
18164    /// Addded in: perfetto v50.
18165    #[prost(bytes = "vec", optional, tag = "512")]
18166    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18167}
18168/// Nested message and enum types in `FtraceEventBundle`.
18169pub mod ftrace_event_bundle {
18170    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
18171    /// a subset of events & their fields is recorded.
18172    /// All fields (except comms) are stored in a structure-of-arrays form, one
18173    /// entry in each repeated field per event.
18174    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18175    pub struct CompactSched {
18176        /// Interned table of unique strings for this bundle.
18177        #[prost(string, repeated, tag = "5")]
18178        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
18179        /// Delta-encoded timestamps across all sched_switch events within this
18180        /// bundle. The first is absolute, each next one is relative to its
18181        /// predecessor.
18182        #[prost(uint64, repeated, tag = "1")]
18183        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
18184        #[prost(int64, repeated, tag = "2")]
18185        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
18186        #[prost(int32, repeated, tag = "3")]
18187        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
18188        #[prost(int32, repeated, tag = "4")]
18189        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
18190        /// One per event, index into |intern_table| corresponding to the
18191        /// next_comm field of the event.
18192        #[prost(uint32, repeated, tag = "6")]
18193        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
18194        /// Delta-encoded timestamps across all sched_waking events within this
18195        /// bundle. The first is absolute, each next one is relative to its
18196        /// predecessor.
18197        #[prost(uint64, repeated, tag = "7")]
18198        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
18199        #[prost(int32, repeated, tag = "8")]
18200        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
18201        #[prost(int32, repeated, tag = "9")]
18202        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
18203        #[prost(int32, repeated, tag = "10")]
18204        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
18205        /// One per event, index into |intern_table| corresponding to the
18206        /// comm field of the event.
18207        #[prost(uint32, repeated, tag = "11")]
18208        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
18209        #[prost(uint32, repeated, tag = "12")]
18210        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
18211    }
18212    /// Errors encountered during parsing of the raw ftrace data. In case of ring
18213    /// buffer layout errors, the parser skips the rest of the offending kernel
18214    /// buffer page and continues from the next page.
18215    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
18216    /// seen within the duration of the trace (even if the affected bundles get
18217    /// overwritten in ring buffer mode).
18218    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18219    pub struct FtraceError {
18220        /// Timestamp of the data that we're unable to parse, in the ftrace clock
18221        /// domain. Currently, we use the base timestamp of the tracing page
18222        /// containing the bad record rather than the time of the record itself.
18223        #[prost(uint64, optional, tag = "1")]
18224        pub timestamp: ::core::option::Option<u64>,
18225        #[prost(enumeration = "super::FtraceParseStatus", optional, tag = "2")]
18226        pub status: ::core::option::Option<i32>,
18227    }
18228    /// Describes the serialised |FtraceEvent| protos for events not known at
18229    /// compile time, when using the |denser_generic_event_encoding| option.
18230    /// Addded in: perfetto v50.
18231    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18232    pub struct GenericEventDescriptor {
18233        /// submessage id within FtraceEvent described by |event_descriptor|.
18234        #[prost(int32, optional, tag = "1")]
18235        pub field_id: ::core::option::Option<i32>,
18236        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
18237        /// The event name itself is in |event_descriptor.name|.
18238        #[prost(string, optional, tag = "3")]
18239        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
18240        /// serialised DescriptorProto.
18241        #[prost(bytes = "vec", optional, tag = "2")]
18242        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18243    }
18244}
18245/// GenericGpuFrequencyEvent is the standard proto to capture GPU
18246/// frequency change events in a generic kernel implementation.
18247#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18248pub struct GenericGpuFrequencyEvent {
18249    /// GPU on which the frequency change occurred.
18250    #[prost(uint32, optional, tag = "1")]
18251    pub gpu_id: ::core::option::Option<u32>,
18252    /// Frequency (kHz) of the GPU.
18253    #[prost(uint32, optional, tag = "2")]
18254    pub frequency_khz: ::core::option::Option<u32>,
18255}
18256/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
18257/// frequency change events in a generic kernel implementation.
18258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18259pub struct GenericKernelCpuFrequencyEvent {
18260    /// CPU in which the event occurred.
18261    #[prost(int32, optional, tag = "1")]
18262    pub cpu: ::core::option::Option<i32>,
18263    /// Frequency (Hz) of the CPU.
18264    #[prost(int64, optional, tag = "2")]
18265    pub freq_hz: ::core::option::Option<i64>,
18266}
18267/// GenericKernelTaskStateEvent is the standard proto to capture thread state
18268/// change events in a generic kernel implementation. This is mainly for the
18269/// case where scheduler events are not directly supported in the kernel's
18270/// tracing mechanism.
18271///
18272/// By capturing these task state events Perfetto is able to infer higher-level
18273/// events such as context switches and task waking events, providing as much
18274/// parity as possible with established tracing frameworks such as
18275/// Linux's ftrace.
18276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18277pub struct GenericKernelTaskStateEvent {
18278    /// CPU in which the event occurred.
18279    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
18280    /// no specific meaning to the cpu field in a non-running state event.
18281    #[prost(int32, optional, tag = "1")]
18282    pub cpu: ::core::option::Option<i32>,
18283    /// Command name for the thread.
18284    #[prost(string, optional, tag = "2")]
18285    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18286    /// Thread id.
18287    #[prost(int64, optional, tag = "3")]
18288    pub tid: ::core::option::Option<i64>,
18289    /// New state of the thread.
18290    #[prost(
18291        enumeration = "generic_kernel_task_state_event::TaskStateEnum",
18292        optional,
18293        tag = "4"
18294    )]
18295    pub state: ::core::option::Option<i32>,
18296    /// Priority of the thread.
18297    /// This value is OS agnostic and should only be interpreted based on the
18298    /// kernel who emitted the message.
18299    #[prost(int32, optional, tag = "5")]
18300    pub prio: ::core::option::Option<i32>,
18301}
18302/// Nested message and enum types in `GenericKernelTaskStateEvent`.
18303pub mod generic_kernel_task_state_event {
18304    /// TaskStateEnum represents the valid states of a thread.
18305    /// These states are a generic representation of the actual thread state and
18306    /// don't necessarily map one-to-one to the states the actual OS kernel
18307    /// tracks internally.
18308    ///
18309    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
18310    /// an error resulting in potential data loss.
18311    #[derive(
18312        Clone,
18313        Copy,
18314        Debug,
18315        PartialEq,
18316        Eq,
18317        Hash,
18318        PartialOrd,
18319        Ord,
18320        ::prost::Enumeration
18321    )]
18322    #[repr(i32)]
18323    pub enum TaskStateEnum {
18324        TaskStateUnknown = 0,
18325        TaskStateCreated = 1,
18326        TaskStateRunnable = 2,
18327        TaskStateRunning = 3,
18328        TaskStateInterruptibleSleep = 4,
18329        TaskStateUninterruptibleSleep = 5,
18330        TaskStateStopped = 6,
18331        TaskStateDead = 7,
18332        TaskStateDestroyed = 8,
18333    }
18334    impl TaskStateEnum {
18335        /// String value of the enum field names used in the ProtoBuf definition.
18336        ///
18337        /// The values are not transformed in any way and thus are considered stable
18338        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18339        pub fn as_str_name(&self) -> &'static str {
18340            match self {
18341                Self::TaskStateUnknown => "TASK_STATE_UNKNOWN",
18342                Self::TaskStateCreated => "TASK_STATE_CREATED",
18343                Self::TaskStateRunnable => "TASK_STATE_RUNNABLE",
18344                Self::TaskStateRunning => "TASK_STATE_RUNNING",
18345                Self::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
18346                Self::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
18347                Self::TaskStateStopped => "TASK_STATE_STOPPED",
18348                Self::TaskStateDead => "TASK_STATE_DEAD",
18349                Self::TaskStateDestroyed => "TASK_STATE_DESTROYED",
18350            }
18351        }
18352        /// Creates an enum from field names used in the ProtoBuf definition.
18353        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18354            match value {
18355                "TASK_STATE_UNKNOWN" => Some(Self::TaskStateUnknown),
18356                "TASK_STATE_CREATED" => Some(Self::TaskStateCreated),
18357                "TASK_STATE_RUNNABLE" => Some(Self::TaskStateRunnable),
18358                "TASK_STATE_RUNNING" => Some(Self::TaskStateRunning),
18359                "TASK_STATE_INTERRUPTIBLE_SLEEP" => {
18360                    Some(Self::TaskStateInterruptibleSleep)
18361                }
18362                "TASK_STATE_UNINTERRUPTIBLE_SLEEP" => {
18363                    Some(Self::TaskStateUninterruptibleSleep)
18364                }
18365                "TASK_STATE_STOPPED" => Some(Self::TaskStateStopped),
18366                "TASK_STATE_DEAD" => Some(Self::TaskStateDead),
18367                "TASK_STATE_DESTROYED" => Some(Self::TaskStateDestroyed),
18368                _ => None,
18369            }
18370        }
18371    }
18372}
18373/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
18374/// of a thread.
18375#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18376pub struct GenericKernelTaskRenameEvent {
18377    /// Thread id.
18378    #[prost(int64, optional, tag = "1")]
18379    pub tid: ::core::option::Option<i64>,
18380    /// New command name for the thread.
18381    #[prost(string, optional, tag = "2")]
18382    pub comm: ::core::option::Option<::prost::alloc::string::String>,
18383}
18384/// Metadata about the processes and threads in the trace.
18385/// The main goal of this proto is to provide a generic kernel
18386/// implementation a mechanism to outline its process structure.
18387#[derive(Clone, PartialEq, ::prost::Message)]
18388pub struct GenericKernelProcessTree {
18389    /// List of processes and threads in the kernel. These lists are incremental
18390    /// and not exhaustive. A process and its threads might show up separately in
18391    /// different ProcessTree messages. A thread might not show up at all, if
18392    /// no sched switch activity was detected, for instance:
18393    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{tid: 11, pid: 10}\] }
18394    /// #1 { threads: \[{tid: 12, pid: 10}\] }
18395    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{tid: 13, pid: 10}\] }
18396    #[prost(message, repeated, tag = "1")]
18397    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
18398    #[prost(message, repeated, tag = "2")]
18399    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
18400}
18401/// Nested message and enum types in `GenericKernelProcessTree`.
18402pub mod generic_kernel_process_tree {
18403    /// Representation of a thread.
18404    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18405    pub struct Thread {
18406        /// Thread id.
18407        #[prost(int64, optional, tag = "1")]
18408        pub tid: ::core::option::Option<i64>,
18409        /// Id of the parent process.
18410        #[prost(int64, optional, tag = "2")]
18411        pub pid: ::core::option::Option<i64>,
18412        /// The command name of the thread.
18413        #[prost(string, optional, tag = "3")]
18414        pub comm: ::core::option::Option<::prost::alloc::string::String>,
18415        /// True if thread is the main thread.
18416        #[prost(bool, optional, tag = "4")]
18417        pub is_main_thread: ::core::option::Option<bool>,
18418        /// True if thread is an idle thread.
18419        #[prost(bool, optional, tag = "5")]
18420        pub is_idle: ::core::option::Option<bool>,
18421    }
18422    /// Representation of a process.
18423    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18424    pub struct Process {
18425        /// Process id.
18426        #[prost(int64, optional, tag = "1")]
18427        pub pid: ::core::option::Option<i64>,
18428        /// Parent process id.
18429        #[prost(int64, optional, tag = "2")]
18430        pub ppid: ::core::option::Option<i64>,
18431        /// The command line of the process.
18432        /// If the cmdline has spaces in it, then we use the characters from
18433        /// position 0 to the first instance of the space char (' ') as the name
18434        /// of the process. If no spaces are present, then the entire cmdline is
18435        /// used as the name.
18436        #[prost(string, optional, tag = "3")]
18437        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
18438    }
18439}
18440/// Events for emitting information about GPU counters.
18441///
18442/// There are two "modes" to use these protos:
18443///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
18444///       but has the limitation that counter ids are*global* so must only be
18445///       emitted by a single producer or requires coordination between different
18446///       producers. This is the mechanism which *must* be used by Android OEMS
18447///       to be complaint with CDD/CTS tests.
18448///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
18449///       more complex use-cases involving multiple producers, multiple GPUs etc.
18450#[derive(Clone, PartialEq, ::prost::Message)]
18451pub struct GpuCounterEvent {
18452    #[prost(message, repeated, tag = "2")]
18453    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
18454    /// Identifier for GPU in a multi-gpu device.
18455    ///
18456    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
18457    /// `InternedGpuCounterDescriptor` takes precedence over this field.
18458    #[prost(int32, optional, tag = "3")]
18459    pub gpu_id: ::core::option::Option<i32>,
18460    /// The specification for the GPU counters. Gives them information like the
18461    /// name of the counter, unit etc.
18462    #[prost(oneof = "gpu_counter_event::Desc", tags = "1, 4")]
18463    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
18464}
18465/// Nested message and enum types in `GpuCounterEvent`.
18466pub mod gpu_counter_event {
18467    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
18468    pub struct GpuCounter {
18469        /// required. Identifier for counter.
18470        #[prost(uint32, optional, tag = "1")]
18471        pub counter_id: ::core::option::Option<u32>,
18472        /// required. Value of the counter.
18473        #[prost(oneof = "gpu_counter::Value", tags = "2, 3")]
18474        pub value: ::core::option::Option<gpu_counter::Value>,
18475    }
18476    /// Nested message and enum types in `GpuCounter`.
18477    pub mod gpu_counter {
18478        /// required. Value of the counter.
18479        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
18480        pub enum Value {
18481            #[prost(int64, tag = "2")]
18482            IntValue(i64),
18483            #[prost(double, tag = "3")]
18484            DoubleValue(f64),
18485        }
18486    }
18487    /// The specification for the GPU counters. Gives them information like the
18488    /// name of the counter, unit etc.
18489    #[derive(Clone, PartialEq, ::prost::Oneof)]
18490    pub enum Desc {
18491        /// Must be specified on first trace packet of each session if using mode 1.
18492        /// (e.g. if you're an Android GPU vendor).
18493        #[prost(message, tag = "1")]
18494        CounterDescriptor(super::GpuCounterDescriptor),
18495        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
18496        /// on first trace packet of the trusted sequence if using mode 2.
18497        #[prost(uint64, tag = "4")]
18498        CounterDescriptorIid(u64),
18499    }
18500}
18501/// Interned GPU counter descriptor for sequence-scoped counter specs.
18502#[derive(Clone, PartialEq, ::prost::Message)]
18503pub struct InternedGpuCounterDescriptor {
18504    #[prost(uint64, optional, tag = "1")]
18505    pub iid: ::core::option::Option<u64>,
18506    #[prost(message, optional, tag = "2")]
18507    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
18508    /// optional. Identifier for GPU in a multi-gpu device.
18509    #[prost(int32, optional, tag = "3")]
18510    pub gpu_id: ::core::option::Option<i32>,
18511}
18512/// Message for logging events GPU data producer.
18513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18514pub struct GpuLog {
18515    #[prost(enumeration = "gpu_log::Severity", optional, tag = "1")]
18516    pub severity: ::core::option::Option<i32>,
18517    #[prost(string, optional, tag = "2")]
18518    pub tag: ::core::option::Option<::prost::alloc::string::String>,
18519    #[prost(string, optional, tag = "3")]
18520    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
18521}
18522/// Nested message and enum types in `GpuLog`.
18523pub mod gpu_log {
18524    #[derive(
18525        Clone,
18526        Copy,
18527        Debug,
18528        PartialEq,
18529        Eq,
18530        Hash,
18531        PartialOrd,
18532        Ord,
18533        ::prost::Enumeration
18534    )]
18535    #[repr(i32)]
18536    pub enum Severity {
18537        LogSeverityUnspecified = 0,
18538        LogSeverityVerbose = 1,
18539        LogSeverityDebug = 2,
18540        LogSeverityInfo = 3,
18541        LogSeverityWarning = 4,
18542        LogSeverityError = 5,
18543    }
18544    impl Severity {
18545        /// String value of the enum field names used in the ProtoBuf definition.
18546        ///
18547        /// The values are not transformed in any way and thus are considered stable
18548        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18549        pub fn as_str_name(&self) -> &'static str {
18550            match self {
18551                Self::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
18552                Self::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
18553                Self::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
18554                Self::LogSeverityInfo => "LOG_SEVERITY_INFO",
18555                Self::LogSeverityWarning => "LOG_SEVERITY_WARNING",
18556                Self::LogSeverityError => "LOG_SEVERITY_ERROR",
18557            }
18558        }
18559        /// Creates an enum from field names used in the ProtoBuf definition.
18560        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18561            match value {
18562                "LOG_SEVERITY_UNSPECIFIED" => Some(Self::LogSeverityUnspecified),
18563                "LOG_SEVERITY_VERBOSE" => Some(Self::LogSeverityVerbose),
18564                "LOG_SEVERITY_DEBUG" => Some(Self::LogSeverityDebug),
18565                "LOG_SEVERITY_INFO" => Some(Self::LogSeverityInfo),
18566                "LOG_SEVERITY_WARNING" => Some(Self::LogSeverityWarning),
18567                "LOG_SEVERITY_ERROR" => Some(Self::LogSeverityError),
18568                _ => None,
18569            }
18570        }
18571    }
18572}
18573/// Generated by Android's GpuService.
18574#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18575pub struct GpuMemTotalEvent {
18576    #[prost(uint32, optional, tag = "1")]
18577    pub gpu_id: ::core::option::Option<u32>,
18578    #[prost(uint32, optional, tag = "2")]
18579    pub pid: ::core::option::Option<u32>,
18580    #[prost(uint64, optional, tag = "3")]
18581    pub size: ::core::option::Option<u64>,
18582}
18583/// next id: 22
18584#[derive(Clone, PartialEq, ::prost::Message)]
18585pub struct GpuRenderStageEvent {
18586    /// required. Unique ID for the event.
18587    #[prost(uint64, optional, tag = "1")]
18588    pub event_id: ::core::option::Option<u64>,
18589    /// optional. Duration of the event in nanoseconds. If unset, this is a
18590    /// single time point event.
18591    #[prost(uint64, optional, tag = "2")]
18592    pub duration: ::core::option::Option<u64>,
18593    /// required. ID to a hardware queue description in the specifications.
18594    /// InternedGpuRenderStageSpecification
18595    #[prost(uint64, optional, tag = "13")]
18596    pub hw_queue_iid: ::core::option::Option<u64>,
18597    /// required. ID to a render stage description in the specifications.
18598    /// InternedGpuRenderStageSpecification
18599    #[prost(uint64, optional, tag = "14")]
18600    pub stage_iid: ::core::option::Option<u64>,
18601    /// optional. Identifier for GPU in a multi-gpu device.
18602    #[prost(int32, optional, tag = "11")]
18603    pub gpu_id: ::core::option::Option<i32>,
18604    /// required. Graphics context for the event.
18605    /// For OpenGL, this is the GL context.
18606    /// For Vulkan, this is the VkDevice.
18607    #[prost(uint64, optional, tag = "5")]
18608    pub context: ::core::option::Option<u64>,
18609    /// optional. The render target for this event.
18610    /// For OpenGL, this is the GL frame buffer handle.
18611    /// For Vulkan, this is the VkFrameBuffer handle.
18612    #[prost(uint64, optional, tag = "8")]
18613    pub render_target_handle: ::core::option::Option<u64>,
18614    /// optional. Submission ID generated by the UMD.
18615    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
18616    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
18617    /// to a single API submission should share the same ID.
18618    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
18619    #[prost(uint32, optional, tag = "10")]
18620    pub submission_id: ::core::option::Option<u32>,
18621    #[prost(message, repeated, tag = "6")]
18622    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
18623    /// optional. The Vulkan render pass handle.
18624    #[prost(uint64, optional, tag = "9")]
18625    pub render_pass_handle: ::core::option::Option<u64>,
18626    /// optional. An ID for the render pass instance. This is used to correlate
18627    /// different events on different queues produced by the same Vulkan render
18628    /// pass instance.
18629    #[prost(uint64, optional, tag = "16")]
18630    pub render_pass_instance_id: ::core::option::Option<u64>,
18631    /// optional. A bit mask representing which render subpasses contributed to
18632    /// this render stage event.  Subpass index 0 is represented by setting the
18633    /// LSB of the mask.  Additional mask can be added for subpass index greater
18634    /// than 63.
18635    #[prost(uint64, repeated, packed = "false", tag = "15")]
18636    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
18637    /// optional. The Vulkan command buffer handle.
18638    #[prost(uint64, optional, tag = "12")]
18639    pub command_buffer_handle: ::core::option::Option<u64>,
18640    /// Event IDs of other GpuRenderStageEvents that this event
18641    /// had to wait on before it could run.
18642    #[prost(uint64, repeated, packed = "false", tag = "18")]
18643    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
18644    /// optional. ID to a compute kernel description in the interned data.
18645    /// InternedComputeKernel
18646    #[prost(uint64, optional, tag = "19")]
18647    pub kernel_iid: ::core::option::Option<u64>,
18648    /// optional. Compute kernel launch parameters for this event.
18649    #[prost(message, optional, tag = "21")]
18650    pub launch: ::core::option::Option<gpu_render_stage_event::ComputeKernelLaunch>,
18651    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
18652    /// InternedGpuRenderStageSpecification instead.
18653    #[deprecated]
18654    #[prost(message, optional, tag = "7")]
18655    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
18656    /// Deprecated. Use hw_queue_iid instead;
18657    #[deprecated]
18658    #[prost(int32, optional, tag = "3")]
18659    pub hw_queue_id: ::core::option::Option<i32>,
18660    /// Deprecated. Use stage_iid instead;
18661    #[deprecated]
18662    #[prost(int32, optional, tag = "4")]
18663    pub stage_id: ::core::option::Option<i32>,
18664    /// optional. Custom name for this render stage event. When set, this
18665    /// provides a name for the stage instead of using the name from the stage
18666    /// specification.
18667    #[prost(oneof = "gpu_render_stage_event::NameField", tags = "17, 20")]
18668    pub name_field: ::core::option::Option<gpu_render_stage_event::NameField>,
18669}
18670/// Nested message and enum types in `GpuRenderStageEvent`.
18671pub mod gpu_render_stage_event {
18672    /// optional. Additional data for the user. This may include attributes for
18673    /// the event like resource ids, shaders, etc.
18674    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18675    pub struct ExtraData {
18676        #[prost(string, optional, tag = "1")]
18677        pub name: ::core::option::Option<::prost::alloc::string::String>,
18678        #[prost(string, optional, tag = "2")]
18679        pub value: ::core::option::Option<::prost::alloc::string::String>,
18680    }
18681    /// 3D unsigned integer vector for grid and workgroup dimensions.
18682    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18683    pub struct Dim3 {
18684        #[prost(uint32, optional, tag = "1")]
18685        pub x: ::core::option::Option<u32>,
18686        #[prost(uint32, optional, tag = "2")]
18687        pub y: ::core::option::Option<u32>,
18688        #[prost(uint32, optional, tag = "3")]
18689        pub z: ::core::option::Option<u32>,
18690    }
18691    /// Typed key/value argument for extending compute kernel descriptions
18692    /// and launch parameters with custom data.
18693    #[derive(Clone, PartialEq, ::prost::Message)]
18694    pub struct ExtraComputeArg {
18695        #[prost(oneof = "extra_compute_arg::NameField", tags = "1, 2")]
18696        pub name_field: ::core::option::Option<extra_compute_arg::NameField>,
18697        #[prost(oneof = "extra_compute_arg::Value", tags = "3, 4, 5, 6, 7")]
18698        pub value: ::core::option::Option<extra_compute_arg::Value>,
18699    }
18700    /// Nested message and enum types in `ExtraComputeArg`.
18701    pub mod extra_compute_arg {
18702        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
18703        pub enum NameField {
18704            /// Interned InternedComputeArgName.
18705            #[prost(uint64, tag = "1")]
18706            NameIid(u64),
18707            /// Non-interned variant.
18708            #[prost(string, tag = "2")]
18709            Name(::prost::alloc::string::String),
18710        }
18711        #[derive(Clone, PartialEq, ::prost::Oneof)]
18712        pub enum Value {
18713            #[prost(int64, tag = "3")]
18714            IntValue(i64),
18715            #[prost(uint64, tag = "4")]
18716            UintValue(u64),
18717            #[prost(double, tag = "5")]
18718            DoubleValue(f64),
18719            #[prost(string, tag = "6")]
18720            StringValue(::prost::alloc::string::String),
18721            /// Interned InternedString via debug_annotation_string_values.
18722            #[prost(uint64, tag = "7")]
18723            StringValueIid(u64),
18724        }
18725    }
18726    /// Compute kernel launch parameters for a single dispatch.
18727    #[derive(Clone, PartialEq, ::prost::Message)]
18728    pub struct ComputeKernelLaunch {
18729        /// Grid dimensions (number of workgroups in each dimension).
18730        #[prost(message, optional, tag = "1")]
18731        pub grid_size: ::core::option::Option<Dim3>,
18732        /// Workgroup dimensions (number of threads per workgroup in each dimension).
18733        #[prost(message, optional, tag = "2")]
18734        pub workgroup_size: ::core::option::Option<Dim3>,
18735        /// Additional typed launch parameters (e.g. registers_per_thread,
18736        /// shared_mem_dynamic, shared_mem_static).
18737        #[prost(message, repeated, tag = "3")]
18738        pub args: ::prost::alloc::vec::Vec<ExtraComputeArg>,
18739    }
18740    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
18741    /// The first trace packet of each session should include a Specifications
18742    /// to enumerate *all* IDs that will be used. The timestamp of this packet
18743    /// must be earlier than all other packets. Only one packet with Specifications
18744    /// is expected.
18745    #[derive(Clone, PartialEq, ::prost::Message)]
18746    pub struct Specifications {
18747        #[prost(message, optional, tag = "1")]
18748        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
18749        /// Labels to categorize the hw Queue this event goes on.
18750        #[prost(message, repeated, tag = "2")]
18751        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
18752        /// Labels to categorize render stage(binning, render, compute etc).
18753        #[prost(message, repeated, tag = "3")]
18754        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
18755    }
18756    /// Nested message and enum types in `Specifications`.
18757    pub mod specifications {
18758        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18759        pub struct ContextSpec {
18760            #[prost(uint64, optional, tag = "1")]
18761            pub context: ::core::option::Option<u64>,
18762            #[prost(int32, optional, tag = "2")]
18763            pub pid: ::core::option::Option<i32>,
18764        }
18765        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18766        pub struct Description {
18767            #[prost(string, optional, tag = "1")]
18768            pub name: ::core::option::Option<::prost::alloc::string::String>,
18769            #[prost(string, optional, tag = "2")]
18770            pub description: ::core::option::Option<::prost::alloc::string::String>,
18771        }
18772    }
18773    /// optional. Custom name for this render stage event. When set, this
18774    /// provides a name for the stage instead of using the name from the stage
18775    /// specification.
18776    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
18777    pub enum NameField {
18778        #[prost(string, tag = "17")]
18779        Name(::prost::alloc::string::String),
18780        /// Interned event name. Refers to EventName in InternedData.
18781        #[prost(uint64, tag = "20")]
18782        NameIid(u64),
18783    }
18784}
18785/// The iid is the numeric value of either the GL Context or the VkDevice
18786/// handle.
18787#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18788pub struct InternedGraphicsContext {
18789    #[prost(uint64, optional, tag = "1")]
18790    pub iid: ::core::option::Option<u64>,
18791    #[prost(int32, optional, tag = "2")]
18792    pub pid: ::core::option::Option<i32>,
18793    #[prost(enumeration = "interned_graphics_context::Api", optional, tag = "3")]
18794    pub api: ::core::option::Option<i32>,
18795}
18796/// Nested message and enum types in `InternedGraphicsContext`.
18797pub mod interned_graphics_context {
18798    #[derive(
18799        Clone,
18800        Copy,
18801        Debug,
18802        PartialEq,
18803        Eq,
18804        Hash,
18805        PartialOrd,
18806        Ord,
18807        ::prost::Enumeration
18808    )]
18809    #[repr(i32)]
18810    pub enum Api {
18811        Undefined = 0,
18812        OpenGl = 1,
18813        Vulkan = 2,
18814        OpenCl = 3,
18815        Cuda = 4,
18816        Hip = 5,
18817    }
18818    impl Api {
18819        /// String value of the enum field names used in the ProtoBuf definition.
18820        ///
18821        /// The values are not transformed in any way and thus are considered stable
18822        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18823        pub fn as_str_name(&self) -> &'static str {
18824            match self {
18825                Self::Undefined => "UNDEFINED",
18826                Self::OpenGl => "OPEN_GL",
18827                Self::Vulkan => "VULKAN",
18828                Self::OpenCl => "OPEN_CL",
18829                Self::Cuda => "CUDA",
18830                Self::Hip => "HIP",
18831            }
18832        }
18833        /// Creates an enum from field names used in the ProtoBuf definition.
18834        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18835            match value {
18836                "UNDEFINED" => Some(Self::Undefined),
18837                "OPEN_GL" => Some(Self::OpenGl),
18838                "VULKAN" => Some(Self::Vulkan),
18839                "OPEN_CL" => Some(Self::OpenCl),
18840                "CUDA" => Some(Self::Cuda),
18841                "HIP" => Some(Self::Hip),
18842                _ => None,
18843            }
18844        }
18845    }
18846}
18847#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18848pub struct InternedGpuRenderStageSpecification {
18849    #[prost(uint64, optional, tag = "1")]
18850    pub iid: ::core::option::Option<u64>,
18851    #[prost(string, optional, tag = "2")]
18852    pub name: ::core::option::Option<::prost::alloc::string::String>,
18853    #[prost(string, optional, tag = "3")]
18854    pub description: ::core::option::Option<::prost::alloc::string::String>,
18855    #[prost(
18856        enumeration = "interned_gpu_render_stage_specification::RenderStageCategory",
18857        optional,
18858        tag = "4"
18859    )]
18860    pub category: ::core::option::Option<i32>,
18861}
18862/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
18863pub mod interned_gpu_render_stage_specification {
18864    #[derive(
18865        Clone,
18866        Copy,
18867        Debug,
18868        PartialEq,
18869        Eq,
18870        Hash,
18871        PartialOrd,
18872        Ord,
18873        ::prost::Enumeration
18874    )]
18875    #[repr(i32)]
18876    pub enum RenderStageCategory {
18877        Other = 0,
18878        Graphics = 1,
18879        Compute = 2,
18880    }
18881    impl RenderStageCategory {
18882        /// String value of the enum field names used in the ProtoBuf definition.
18883        ///
18884        /// The values are not transformed in any way and thus are considered stable
18885        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18886        pub fn as_str_name(&self) -> &'static str {
18887            match self {
18888                Self::Other => "OTHER",
18889                Self::Graphics => "GRAPHICS",
18890                Self::Compute => "COMPUTE",
18891            }
18892        }
18893        /// Creates an enum from field names used in the ProtoBuf definition.
18894        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18895            match value {
18896                "OTHER" => Some(Self::Other),
18897                "GRAPHICS" => Some(Self::Graphics),
18898                "COMPUTE" => Some(Self::Compute),
18899                _ => None,
18900            }
18901        }
18902    }
18903}
18904#[derive(Clone, PartialEq, ::prost::Message)]
18905pub struct InternedComputeKernel {
18906    #[prost(uint64, optional, tag = "1")]
18907    pub iid: ::core::option::Option<u64>,
18908    #[prost(string, optional, tag = "2")]
18909    pub name: ::core::option::Option<::prost::alloc::string::String>,
18910    #[prost(string, optional, tag = "3")]
18911    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
18912    #[prost(string, optional, tag = "4")]
18913    pub arch: ::core::option::Option<::prost::alloc::string::String>,
18914    /// Additional typed kernel attributes (e.g. static resource limits).
18915    #[prost(message, repeated, tag = "5")]
18916    pub args: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraComputeArg>,
18917}
18918#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18919pub struct InternedComputeArgName {
18920    #[prost(uint64, optional, tag = "1")]
18921    pub iid: ::core::option::Option<u64>,
18922    #[prost(string, optional, tag = "2")]
18923    pub name: ::core::option::Option<::prost::alloc::string::String>,
18924}
18925/// Message for recording the Vulkan call.
18926#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18927pub struct VulkanApiEvent {
18928    #[prost(oneof = "vulkan_api_event::Event", tags = "1, 2")]
18929    pub event: ::core::option::Option<vulkan_api_event::Event>,
18930}
18931/// Nested message and enum types in `VulkanApiEvent`.
18932pub mod vulkan_api_event {
18933    /// For recording vkSetDebugUtilsObjectNameEXT and
18934    /// vkDebugMarkerSetObjectNameEXT
18935    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18936    pub struct VkDebugUtilsObjectName {
18937        #[prost(uint32, optional, tag = "1")]
18938        pub pid: ::core::option::Option<u32>,
18939        #[prost(uint64, optional, tag = "2")]
18940        pub vk_device: ::core::option::Option<u64>,
18941        /// VkObjectType.  Value must match
18942        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
18943        #[prost(int32, optional, tag = "3")]
18944        pub object_type: ::core::option::Option<i32>,
18945        #[prost(uint64, optional, tag = "4")]
18946        pub object: ::core::option::Option<u64>,
18947        #[prost(string, optional, tag = "5")]
18948        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
18949    }
18950    /// For recording vkQueueSubmit call.
18951    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18952    pub struct VkQueueSubmit {
18953        #[prost(uint64, optional, tag = "1")]
18954        pub duration_ns: ::core::option::Option<u64>,
18955        #[prost(uint32, optional, tag = "2")]
18956        pub pid: ::core::option::Option<u32>,
18957        #[prost(uint32, optional, tag = "3")]
18958        pub tid: ::core::option::Option<u32>,
18959        #[prost(uint64, optional, tag = "4")]
18960        pub vk_queue: ::core::option::Option<u64>,
18961        #[prost(uint64, repeated, packed = "false", tag = "5")]
18962        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
18963        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
18964        /// submission_id must match GpuRenderStageEvent.submission_id if the
18965        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
18966        #[prost(uint32, optional, tag = "6")]
18967        pub submission_id: ::core::option::Option<u32>,
18968    }
18969    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
18970    pub enum Event {
18971        #[prost(message, tag = "1")]
18972        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
18973        #[prost(message, tag = "2")]
18974        VkQueueSubmit(VkQueueSubmit),
18975    }
18976}
18977/// All the information that cannot be sent within a VulkanMemoryEvent message,
18978/// are sent as annotations to the main memory event. One example is the
18979/// properties of the object that consumes the allocated memory, for example, a
18980/// buffer or an image.
18981/// key_iid and string_iid are both interned strings. Original string value is
18982/// stored in vulkan_memory_keys from
18983/// protos/perfetto/trace/interned_data/interned_data.proto.
18984#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18985pub struct VulkanMemoryEventAnnotation {
18986    #[prost(uint64, optional, tag = "1")]
18987    pub key_iid: ::core::option::Option<u64>,
18988    #[prost(oneof = "vulkan_memory_event_annotation::Value", tags = "2, 3, 4")]
18989    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
18990}
18991/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
18992pub mod vulkan_memory_event_annotation {
18993    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
18994    pub enum Value {
18995        #[prost(int64, tag = "2")]
18996        IntValue(i64),
18997        #[prost(double, tag = "3")]
18998        DoubleValue(f64),
18999        #[prost(uint64, tag = "4")]
19000        StringIid(u64),
19001    }
19002}
19003/// Each VulkanMemoryEvent encompasses information regarding one single function
19004/// call that results in reserving, binding or freeing host or GPU memory. There
19005/// is a special message type, ANNOTATIONS, which is used to communicate
19006/// information that are not directly related to a memory event, nonetheless are
19007/// essential to understand the memory usage. An example is the size and memory
19008/// types of the memory heaps.
19009///
19010/// Next reserved id: 10 (up to 15).
19011/// Next id: 21.
19012#[derive(Clone, PartialEq, ::prost::Message)]
19013pub struct VulkanMemoryEvent {
19014    #[prost(enumeration = "vulkan_memory_event::Source", optional, tag = "1")]
19015    pub source: ::core::option::Option<i32>,
19016    #[prost(enumeration = "vulkan_memory_event::Operation", optional, tag = "2")]
19017    pub operation: ::core::option::Option<i32>,
19018    #[prost(int64, optional, tag = "3")]
19019    pub timestamp: ::core::option::Option<i64>,
19020    #[prost(uint32, optional, tag = "4")]
19021    pub pid: ::core::option::Option<u32>,
19022    #[prost(fixed64, optional, tag = "5")]
19023    pub memory_address: ::core::option::Option<u64>,
19024    #[prost(uint64, optional, tag = "6")]
19025    pub memory_size: ::core::option::Option<u64>,
19026    /// Interned string. Original string value is stored in function_names from
19027    /// protos/perfetto/trace/interned_data/interned_data.proto.
19028    #[prost(uint64, optional, tag = "7")]
19029    pub caller_iid: ::core::option::Option<u64>,
19030    #[prost(enumeration = "vulkan_memory_event::AllocationScope", optional, tag = "8")]
19031    pub allocation_scope: ::core::option::Option<i32>,
19032    /// Extra related information, e.g., create configs, etc.
19033    #[prost(message, repeated, tag = "9")]
19034    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
19035    /// Field IDs used for device memory (low sampling rate)
19036    #[prost(fixed64, optional, tag = "16")]
19037    pub device: ::core::option::Option<u64>,
19038    #[prost(fixed64, optional, tag = "17")]
19039    pub device_memory: ::core::option::Option<u64>,
19040    #[prost(uint32, optional, tag = "18")]
19041    pub memory_type: ::core::option::Option<u32>,
19042    #[prost(uint32, optional, tag = "19")]
19043    pub heap: ::core::option::Option<u32>,
19044    #[prost(fixed64, optional, tag = "20")]
19045    pub object_handle: ::core::option::Option<u64>,
19046}
19047/// Nested message and enum types in `VulkanMemoryEvent`.
19048pub mod vulkan_memory_event {
19049    #[derive(
19050        Clone,
19051        Copy,
19052        Debug,
19053        PartialEq,
19054        Eq,
19055        Hash,
19056        PartialOrd,
19057        Ord,
19058        ::prost::Enumeration
19059    )]
19060    #[repr(i32)]
19061    pub enum Source {
19062        Unspecified = 0,
19063        Driver = 1,
19064        Device = 2,
19065        DeviceMemory = 3,
19066        Buffer = 4,
19067        Image = 5,
19068    }
19069    impl Source {
19070        /// String value of the enum field names used in the ProtoBuf definition.
19071        ///
19072        /// The values are not transformed in any way and thus are considered stable
19073        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19074        pub fn as_str_name(&self) -> &'static str {
19075            match self {
19076                Self::Unspecified => "SOURCE_UNSPECIFIED",
19077                Self::Driver => "SOURCE_DRIVER",
19078                Self::Device => "SOURCE_DEVICE",
19079                Self::DeviceMemory => "SOURCE_DEVICE_MEMORY",
19080                Self::Buffer => "SOURCE_BUFFER",
19081                Self::Image => "SOURCE_IMAGE",
19082            }
19083        }
19084        /// Creates an enum from field names used in the ProtoBuf definition.
19085        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19086            match value {
19087                "SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
19088                "SOURCE_DRIVER" => Some(Self::Driver),
19089                "SOURCE_DEVICE" => Some(Self::Device),
19090                "SOURCE_DEVICE_MEMORY" => Some(Self::DeviceMemory),
19091                "SOURCE_BUFFER" => Some(Self::Buffer),
19092                "SOURCE_IMAGE" => Some(Self::Image),
19093                _ => None,
19094            }
19095        }
19096    }
19097    #[derive(
19098        Clone,
19099        Copy,
19100        Debug,
19101        PartialEq,
19102        Eq,
19103        Hash,
19104        PartialOrd,
19105        Ord,
19106        ::prost::Enumeration
19107    )]
19108    #[repr(i32)]
19109    pub enum Operation {
19110        OpUnspecified = 0,
19111        /// alloc, create
19112        OpCreate = 1,
19113        /// free, destroy(non-bound)
19114        OpDestroy = 2,
19115        /// bind buffer and image
19116        OpBind = 3,
19117        /// destroy (bound)
19118        OpDestroyBound = 4,
19119        /// only annotations
19120        OpAnnotations = 5,
19121    }
19122    impl Operation {
19123        /// String value of the enum field names used in the ProtoBuf definition.
19124        ///
19125        /// The values are not transformed in any way and thus are considered stable
19126        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19127        pub fn as_str_name(&self) -> &'static str {
19128            match self {
19129                Self::OpUnspecified => "OP_UNSPECIFIED",
19130                Self::OpCreate => "OP_CREATE",
19131                Self::OpDestroy => "OP_DESTROY",
19132                Self::OpBind => "OP_BIND",
19133                Self::OpDestroyBound => "OP_DESTROY_BOUND",
19134                Self::OpAnnotations => "OP_ANNOTATIONS",
19135            }
19136        }
19137        /// Creates an enum from field names used in the ProtoBuf definition.
19138        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19139            match value {
19140                "OP_UNSPECIFIED" => Some(Self::OpUnspecified),
19141                "OP_CREATE" => Some(Self::OpCreate),
19142                "OP_DESTROY" => Some(Self::OpDestroy),
19143                "OP_BIND" => Some(Self::OpBind),
19144                "OP_DESTROY_BOUND" => Some(Self::OpDestroyBound),
19145                "OP_ANNOTATIONS" => Some(Self::OpAnnotations),
19146                _ => None,
19147            }
19148        }
19149    }
19150    #[derive(
19151        Clone,
19152        Copy,
19153        Debug,
19154        PartialEq,
19155        Eq,
19156        Hash,
19157        PartialOrd,
19158        Ord,
19159        ::prost::Enumeration
19160    )]
19161    #[repr(i32)]
19162    pub enum AllocationScope {
19163        ScopeUnspecified = 0,
19164        ScopeCommand = 1,
19165        ScopeObject = 2,
19166        ScopeCache = 3,
19167        ScopeDevice = 4,
19168        ScopeInstance = 5,
19169    }
19170    impl AllocationScope {
19171        /// String value of the enum field names used in the ProtoBuf definition.
19172        ///
19173        /// The values are not transformed in any way and thus are considered stable
19174        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19175        pub fn as_str_name(&self) -> &'static str {
19176            match self {
19177                Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
19178                Self::ScopeCommand => "SCOPE_COMMAND",
19179                Self::ScopeObject => "SCOPE_OBJECT",
19180                Self::ScopeCache => "SCOPE_CACHE",
19181                Self::ScopeDevice => "SCOPE_DEVICE",
19182                Self::ScopeInstance => "SCOPE_INSTANCE",
19183            }
19184        }
19185        /// Creates an enum from field names used in the ProtoBuf definition.
19186        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19187            match value {
19188                "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
19189                "SCOPE_COMMAND" => Some(Self::ScopeCommand),
19190                "SCOPE_OBJECT" => Some(Self::ScopeObject),
19191                "SCOPE_CACHE" => Some(Self::ScopeCache),
19192                "SCOPE_DEVICE" => Some(Self::ScopeDevice),
19193                "SCOPE_INSTANCE" => Some(Self::ScopeInstance),
19194                _ => None,
19195            }
19196        }
19197    }
19198}
19199/// The interning fields in this file can refer to 2 different intern tables,
19200/// depending on the message they are used in. If the interned fields are present
19201/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
19202/// should be used. If the intered fields are present in the
19203/// StreamingProfilePacket proto, then the intern tables included in all of the
19204/// previous InternedData message with same sequence ID should be used.
19205/// TODO(fmayer): Move to the intern tables to a common location.
19206#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19207pub struct InternedString {
19208    /// Interning key. Starts from 1, 0 is the same as "not set".
19209    #[prost(uint64, optional, tag = "1")]
19210    pub iid: ::core::option::Option<u64>,
19211    /// The actual string.
19212    #[prost(bytes = "vec", optional, tag = "2")]
19213    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19214}
19215/// Source line info.
19216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19217pub struct Line {
19218    #[prost(string, optional, tag = "1")]
19219    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19220    #[prost(string, optional, tag = "2")]
19221    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
19222    #[prost(uint32, optional, tag = "3")]
19223    pub line_number: ::core::option::Option<u32>,
19224}
19225/// Symbols for a given address in a module.
19226#[derive(Clone, PartialEq, ::prost::Message)]
19227pub struct AddressSymbols {
19228    #[prost(uint64, optional, tag = "1")]
19229    pub address: ::core::option::Option<u64>,
19230    /// Source lines that correspond to this address.
19231    ///
19232    /// These are repeated because when inlining happens, multiple functions'
19233    /// frames can be at a single address. Imagine function Foo calling the
19234    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
19235    /// both Foo and the std::vector<int> constructor when we symbolize the
19236    /// address.
19237    #[prost(message, repeated, tag = "2")]
19238    pub lines: ::prost::alloc::vec::Vec<Line>,
19239}
19240/// Symbols for addresses seen in a module.
19241/// Used in re-symbolisation of complete traces.
19242#[derive(Clone, PartialEq, ::prost::Message)]
19243pub struct ModuleSymbols {
19244    /// Fully qualified path to the mapping.
19245    /// E.g. /system/lib64/libc.so.
19246    #[prost(string, optional, tag = "1")]
19247    pub path: ::core::option::Option<::prost::alloc::string::String>,
19248    /// .note.gnu.build-id on Linux (not hex encoded).
19249    /// uuid on MacOS.
19250    /// Module GUID on Windows.
19251    #[prost(string, optional, tag = "2")]
19252    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
19253    #[prost(message, repeated, tag = "3")]
19254    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
19255}
19256#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19257pub struct Mapping {
19258    /// Interning key.
19259    /// Starts from 1, 0 is the same as "not set".
19260    #[prost(uint64, optional, tag = "1")]
19261    pub iid: ::core::option::Option<u64>,
19262    /// Interning key.
19263    /// Starts from 1, 0 is the same as "not set".
19264    #[prost(uint64, optional, tag = "2")]
19265    pub build_id: ::core::option::Option<u64>,
19266    /// This is not set on Android 10.
19267    #[prost(uint64, optional, tag = "8")]
19268    pub exact_offset: ::core::option::Option<u64>,
19269    #[prost(uint64, optional, tag = "3")]
19270    pub start_offset: ::core::option::Option<u64>,
19271    #[prost(uint64, optional, tag = "4")]
19272    pub start: ::core::option::Option<u64>,
19273    #[prost(uint64, optional, tag = "5")]
19274    pub end: ::core::option::Option<u64>,
19275    /// Libunwindstack-specific concept, not to be confused with bionic linker's
19276    /// notion of load_bias. Needed to correct relative pc addresses (as produced
19277    /// by libunwindstack) when doing offline resymbolisation.
19278    ///
19279    /// For an executable ELF PT_LOAD segment, this is:
19280    ///    p_vaddr - p_offset
19281    ///
19282    /// Where p_offset means that the code is at that offset into the ELF file on
19283    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
19284    /// to where the linker loads the ELF into the address space. For most ELFs,
19285    /// the two values are identical and therefore load_bias is zero.
19286    #[prost(uint64, optional, tag = "6")]
19287    pub load_bias: ::core::option::Option<u64>,
19288    /// E.g. \["system", "lib64", "libc.so"\]
19289    /// id of string.
19290    #[prost(uint64, repeated, packed = "false", tag = "7")]
19291    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
19292}
19293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19294pub struct Frame {
19295    /// Interning key. Starts from 1, 0 is the same as "not set".
19296    #[prost(uint64, optional, tag = "1")]
19297    pub iid: ::core::option::Option<u64>,
19298    /// E.g. "fopen"
19299    /// id of string.
19300    #[prost(uint64, optional, tag = "2")]
19301    pub function_name_id: ::core::option::Option<u64>,
19302    /// The mapping in which this frame's instruction pointer resides.
19303    /// iid of Mapping.iid.
19304    ///
19305    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
19306    /// this frame has no associated memory mapping (e.g., symbolized frames
19307    /// without address information).
19308    ///
19309    /// Starts from 1, 0 is the same as "not set".
19310    #[prost(uint64, optional, tag = "3")]
19311    pub mapping_id: ::core::option::Option<u64>,
19312    /// Instruction pointer relative to the start of the mapping.
19313    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
19314    #[prost(uint64, optional, tag = "4")]
19315    pub rel_pc: ::core::option::Option<u64>,
19316    /// Source file path for this frame.
19317    /// This is typically set during online symbolization when symbol information
19318    /// is available at trace collection time. If not set, source file paths may be
19319    /// added later via offline symbolization (see ModuleSymbols).
19320    ///
19321    /// Starts from 1, 0 is the same as "not set".
19322    ///
19323    /// iid of InternedData.source_paths.
19324    #[prost(uint64, optional, tag = "5")]
19325    pub source_path_iid: ::core::option::Option<u64>,
19326    /// Line number in the source file for this frame.
19327    /// This is typically set during online symbolization when symbol information
19328    /// is available at trace collection time. If not set, line numbers may be
19329    /// added later via offline symbolization (see ModuleSymbols).
19330    #[prost(uint32, optional, tag = "6")]
19331    pub line_number: ::core::option::Option<u32>,
19332    #[prost(oneof = "frame::KindField", tags = "7, 8")]
19333    pub kind_field: ::core::option::Option<frame::KindField>,
19334}
19335/// Nested message and enum types in `Frame`.
19336pub mod frame {
19337    /// The kind of code this frame represents, for categorization (e.g. coloring
19338    /// a flamegraph, or telling interpreted Python frames apart from native and
19339    /// GC frames in one mixed stack). Set the well-known `kind` when one fits,
19340    /// otherwise set `kind_str` to a custom label. The well-known enum is
19341    /// append-only and language-neutral; language-specific labels go in kind_str.
19342    #[derive(
19343        Clone,
19344        Copy,
19345        Debug,
19346        PartialEq,
19347        Eq,
19348        Hash,
19349        PartialOrd,
19350        Ord,
19351        ::prost::Enumeration
19352    )]
19353    #[repr(i32)]
19354    pub enum Kind {
19355        Unknown = 0,
19356        Native = 1,
19357        Kernel = 2,
19358        Interpreted = 3,
19359        Jit = 4,
19360        Gc = 5,
19361        Runtime = 6,
19362    }
19363    impl Kind {
19364        /// String value of the enum field names used in the ProtoBuf definition.
19365        ///
19366        /// The values are not transformed in any way and thus are considered stable
19367        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19368        pub fn as_str_name(&self) -> &'static str {
19369            match self {
19370                Self::Unknown => "KIND_UNKNOWN",
19371                Self::Native => "KIND_NATIVE",
19372                Self::Kernel => "KIND_KERNEL",
19373                Self::Interpreted => "KIND_INTERPRETED",
19374                Self::Jit => "KIND_JIT",
19375                Self::Gc => "KIND_GC",
19376                Self::Runtime => "KIND_RUNTIME",
19377            }
19378        }
19379        /// Creates an enum from field names used in the ProtoBuf definition.
19380        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19381            match value {
19382                "KIND_UNKNOWN" => Some(Self::Unknown),
19383                "KIND_NATIVE" => Some(Self::Native),
19384                "KIND_KERNEL" => Some(Self::Kernel),
19385                "KIND_INTERPRETED" => Some(Self::Interpreted),
19386                "KIND_JIT" => Some(Self::Jit),
19387                "KIND_GC" => Some(Self::Gc),
19388                "KIND_RUNTIME" => Some(Self::Runtime),
19389                _ => None,
19390            }
19391        }
19392    }
19393    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19394    pub enum KindField {
19395        #[prost(enumeration = "Kind", tag = "7")]
19396        Kind(i32),
19397        #[prost(string, tag = "8")]
19398        KindStr(::prost::alloc::string::String),
19399    }
19400}
19401#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19402pub struct Callstack {
19403    /// Interning key. Starts from 1, 0 is the same as "not set".
19404    #[prost(uint64, optional, tag = "1")]
19405    pub iid: ::core::option::Option<u64>,
19406    /// Frames of this callstack. Bottom frame first.
19407    #[prost(uint64, repeated, packed = "false", tag = "2")]
19408    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
19409}
19410/// A fully-inline, self-contained callstack: each frame carries its function
19411/// name and source location directly, with no interning. This is the simple
19412/// alternative to Callstack (whose frames are interned Frame/Mapping
19413/// references): use it when trace size is not a concern or callstacks are
19414/// unique. For binary/library information (mappings, build ids, relative pcs)
19415/// or efficient repetition, use interned Callstacks instead.
19416///
19417/// Used by StackSample as the inline (non-interned) variant of its callstack
19418/// field.
19419#[derive(Clone, PartialEq, ::prost::Message)]
19420pub struct InlineCallstack {
19421    /// Frames of this callstack, ordered from bottom (outermost) to top
19422    /// (innermost). For example, if main() calls foo() which calls bar(), the
19423    /// frames are: \[main, foo, bar\].
19424    #[prost(message, repeated, tag = "1")]
19425    pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
19426}
19427/// Nested message and enum types in `InlineCallstack`.
19428pub mod inline_callstack {
19429    /// A frame within an inline callstack.
19430    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19431    pub struct Frame {
19432        /// Function name, e.g. "malloc" or "std::vector<int>::push_back".
19433        #[prost(string, optional, tag = "1")]
19434        pub function_name: ::core::option::Option<::prost::alloc::string::String>,
19435        /// Source file path, e.g. "/src/foo.cc".
19436        #[prost(string, optional, tag = "2")]
19437        pub source_file: ::core::option::Option<::prost::alloc::string::String>,
19438        /// Line number in the source file.
19439        #[prost(uint32, optional, tag = "3")]
19440        pub line_number: ::core::option::Option<u32>,
19441    }
19442}
19443/// A single stack sample: a callstack captured for a task, measured against a
19444/// counter timebase. This is transport-neutral and timebase-neutral. The
19445/// timebase can be CPU cycles, wall-clock nanoseconds, allocated bytes, page
19446/// faults, etc.; the primary CounterDescriptor says which. It is not specific to
19447/// CPU profiling.
19448///
19449/// Each context/callstack/descriptor can be given inline or as an `iid`
19450/// referencing an InternedData entry. Producers that reuse a context across
19451/// samples should intern it so the per-sample cost is a single varint.
19452#[derive(Clone, PartialEq, ::prost::Message)]
19453pub struct StackSample {
19454    /// The value attributed to this sample for the primary counter (e.g. the
19455    /// number of cycles or nanoseconds this sample represents).
19456    #[prost(uint64, optional, tag = "11")]
19457    pub primary_weight: ::core::option::Option<u64>,
19458    /// Additional counters read at the same sample (e.g. instructions, cache
19459    /// misses read alongside a cycles timebase). follower_weights is positional
19460    /// with whichever of follower_descriptors / follower_descriptor_iids is set.
19461    #[prost(message, repeated, tag = "12")]
19462    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
19463    #[prost(uint64, repeated, tag = "13")]
19464    pub follower_descriptor_iids: ::prost::alloc::vec::Vec<u64>,
19465    #[prost(uint64, repeated, tag = "14")]
19466    pub follower_weights: ::prost::alloc::vec::Vec<u64>,
19467    /// The task (thread / process / async context) this sample is attributed to.
19468    /// Give it inline via `task_context` or reference an interned TaskContext via
19469    /// `task_context_iid`.
19470    #[prost(oneof = "stack_sample::TaskContextField", tags = "1, 2")]
19471    pub task_context_field: ::core::option::Option<stack_sample::TaskContextField>,
19472    /// The execution state (cpu, privilege mode) at sample time. Absent for
19473    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
19474    /// or reference an interned ExecutionContext via `execution_context_iid`.
19475    #[prost(oneof = "stack_sample::ExecutionContextField", tags = "3, 4")]
19476    pub execution_context_field: ::core::option::Option<
19477        stack_sample::ExecutionContextField,
19478    >,
19479    /// The captured callstack, bottom frame first. Give it fully inline via
19480    /// `callstack` or reference an interned Callstack via `callstack_iid`.
19481    #[prost(oneof = "stack_sample::CallstackField", tags = "5, 6")]
19482    pub callstack_field: ::core::option::Option<stack_sample::CallstackField>,
19483    /// Set if stack unwinding was incomplete; describes the data, not producer
19484    /// internal state. Give it inline via `unwind_error` or reference an interned
19485    /// string via `unwind_error_iid`.
19486    ///
19487    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
19488    /// wire layout; a table column will surface it later.
19489    #[prost(oneof = "stack_sample::UnwindErrorField", tags = "7, 8")]
19490    pub unwind_error_field: ::core::option::Option<stack_sample::UnwindErrorField>,
19491    /// The sampling timebase: the counter this sample's weight is measured
19492    /// against. Set one of the two; may be omitted entirely if declared in
19493    /// StackSampleDefaults.primary_descriptor.
19494    #[prost(oneof = "stack_sample::PrimaryDescriptorField", tags = "9, 10")]
19495    pub primary_descriptor_field: ::core::option::Option<
19496        stack_sample::PrimaryDescriptorField,
19497    >,
19498}
19499/// Nested message and enum types in `StackSample`.
19500pub mod stack_sample {
19501    /// The task an observation is attributed to. At least one of pid / tid /
19502    /// async_id should be set. async_id identifies a stackful async context
19503    /// (goroutine, fiber, ...) described by an AsyncContextDescriptor whose iid
19504    /// equals the async_id.
19505    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19506    pub struct TaskContext {
19507        /// Interning key, used when this context is emitted via
19508        /// InternedData.stack_sample_task_contexts and referenced by
19509        /// StackSample.task_context_iid. Starts from 1; 0 is the same as "not set".
19510        #[prost(uint64, optional, tag = "1")]
19511        pub iid: ::core::option::Option<u64>,
19512        /// OS process id the sample belongs to.
19513        #[prost(uint32, optional, tag = "2")]
19514        pub pid: ::core::option::Option<u32>,
19515        /// OS thread id the sample belongs to. If only tid is set, the process is
19516        /// inferred from thread association elsewhere in the trace.
19517        #[prost(uint32, optional, tag = "3")]
19518        pub tid: ::core::option::Option<u32>,
19519        #[prost(uint64, optional, tag = "4")]
19520        pub async_id: ::core::option::Option<u64>,
19521    }
19522    /// Describes an async context referenced by TaskContext.async_id: a stackful
19523    /// unit of execution that is not an OS thread (goroutine, fiber, coroutine).
19524    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19525    pub struct AsyncContextDescriptor {
19526        /// Interning key, equal to the TaskContext.async_id it describes. Starts
19527        /// from 1, 0 is the same as "not set".
19528        #[prost(uint64, optional, tag = "1")]
19529        pub iid: ::core::option::Option<u64>,
19530        /// A human-readable name for this specific context, e.g. "worker-7".
19531        #[prost(string, optional, tag = "2")]
19532        pub name: ::core::option::Option<::prost::alloc::string::String>,
19533        /// The kind of async context, e.g. "goroutine", "fiber".
19534        #[prost(string, optional, tag = "3")]
19535        pub kind: ::core::option::Option<::prost::alloc::string::String>,
19536        /// iid of the structural parent AsyncContextDescriptor, if any.
19537        #[prost(uint64, optional, tag = "4")]
19538        pub parent_iid: ::core::option::Option<u64>,
19539    }
19540    /// The execution state a sample was taken in. All fields are optional: an
19541    /// off-CPU sample (e.g. a wall-clock sampler catching a sleeping thread) has
19542    /// no meaningful cpu or mode.
19543    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19544    pub struct ExecutionContext {
19545        /// Interning key, used when this context is emitted via
19546        /// InternedData.stack_sample_execution_contexts and referenced by
19547        /// StackSample.execution_context_iid. Starts from 1; 0 is the same as "not
19548        /// set".
19549        #[prost(uint64, optional, tag = "1")]
19550        pub iid: ::core::option::Option<u64>,
19551        /// The cpu the sample was taken on.
19552        #[prost(uint32, optional, tag = "2")]
19553        pub cpu: ::core::option::Option<u32>,
19554        /// The privilege level the sampled code was running at.
19555        #[prost(enumeration = "Mode", optional, tag = "3")]
19556        pub mode: ::core::option::Option<i32>,
19557    }
19558    /// Describes a counter: a named, typed quantity a sample is measured against
19559    /// (the sampling timebase) or observed alongside (a follower). Values live on
19560    /// the sample as weights; this only describes their meaning.
19561    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19562    pub struct CounterDescriptor {
19563        /// Interning key, used when this descriptor is emitted via
19564        /// InternedData.stack_sample_counter_descriptors and referenced by
19565        /// StackSample.primary_descriptor_iid. Starts from 1; 0 is the same as "not
19566        /// set".
19567        #[prost(uint64, optional, tag = "1")]
19568        pub iid: ::core::option::Option<u64>,
19569        /// Human-readable counter name, e.g. "cycles", "wall-time", "cache-misses".
19570        #[prost(string, optional, tag = "2")]
19571        pub name: ::core::option::Option<::prost::alloc::string::String>,
19572        /// Scales raw weights to `unit`. E.g. unit=UNIT_BYTES, unit_multiplier=1024
19573        /// means weights are in KiB. Absent means 1.
19574        #[prost(uint64, optional, tag = "5")]
19575        pub unit_multiplier: ::core::option::Option<u64>,
19576        /// Free-form description of what the counter measures.
19577        #[prost(string, optional, tag = "6")]
19578        pub description: ::core::option::Option<::prost::alloc::string::String>,
19579        /// The scope of this counter's instances. Absent means SCOPE_GLOBAL.
19580        #[prost(enumeration = "counter_descriptor::Scope", optional, tag = "7")]
19581        pub scope: ::core::option::Option<i32>,
19582        /// The unit weights are expressed in. Set the well-known `unit` when one
19583        /// fits, otherwise set `unit_str` to a custom label.
19584        #[prost(oneof = "counter_descriptor::UnitField", tags = "3, 4")]
19585        pub unit_field: ::core::option::Option<counter_descriptor::UnitField>,
19586    }
19587    /// Nested message and enum types in `CounterDescriptor`.
19588    pub mod counter_descriptor {
19589        /// The scope of a counter instance: which stream of values the per-sample
19590        /// weights belong to. Counter instances accumulate independently, so
19591        /// values from different instances must never be merged into one stream.
19592        /// Trace processor keeps sampling streams separate and materializes one
19593        /// counter track per instance within each stream: SCOPE_GLOBAL yields one
19594        /// track per sampling stream and SCOPE_CPU one track per
19595        /// (sampling stream, cpu).
19596        #[derive(
19597            Clone,
19598            Copy,
19599            Debug,
19600            PartialEq,
19601            Eq,
19602            Hash,
19603            PartialOrd,
19604            Ord,
19605            ::prost::Enumeration
19606        )]
19607        #[repr(i32)]
19608        pub enum Scope {
19609            /// Treated as SCOPE_GLOBAL.
19610            Unspecified = 0,
19611            /// A single counter instance, not split by cpu, thread or anything
19612            /// else.
19613            Global = 1,
19614            /// One counter instance per cpu. Each sample's weight belongs to the
19615            /// instance of the cpu in its ExecutionContext; samples without a cpu
19616            /// cannot be attributed and their weights for this counter are dropped.
19617            Cpu = 2,
19618        }
19619        impl Scope {
19620            /// String value of the enum field names used in the ProtoBuf definition.
19621            ///
19622            /// The values are not transformed in any way and thus are considered stable
19623            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19624            pub fn as_str_name(&self) -> &'static str {
19625                match self {
19626                    Self::Unspecified => "SCOPE_UNSPECIFIED",
19627                    Self::Global => "SCOPE_GLOBAL",
19628                    Self::Cpu => "SCOPE_CPU",
19629                }
19630            }
19631            /// Creates an enum from field names used in the ProtoBuf definition.
19632            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19633                match value {
19634                    "SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
19635                    "SCOPE_GLOBAL" => Some(Self::Global),
19636                    "SCOPE_CPU" => Some(Self::Cpu),
19637                    _ => None,
19638                }
19639            }
19640        }
19641        /// The unit weights are expressed in. Set the well-known `unit` when one
19642        /// fits, otherwise set `unit_str` to a custom label.
19643        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19644        pub enum UnitField {
19645            /// A well-known unit from the Unit enum.
19646            #[prost(enumeration = "super::Unit", tag = "3")]
19647            Unit(i32),
19648            /// A custom unit label, used when no Unit enum value fits.
19649            #[prost(string, tag = "4")]
19650            UnitStr(::prost::alloc::string::String),
19651        }
19652    }
19653    /// The privilege level a sample was taken at. Append-only: never renumber or
19654    /// repurpose an existing value.
19655    #[derive(
19656        Clone,
19657        Copy,
19658        Debug,
19659        PartialEq,
19660        Eq,
19661        Hash,
19662        PartialOrd,
19663        Ord,
19664        ::prost::Enumeration
19665    )]
19666    #[repr(i32)]
19667    pub enum Mode {
19668        Unknown = 0,
19669        User = 1,
19670        Kernel = 2,
19671        Hypervisor = 3,
19672        GuestUser = 4,
19673        GuestKernel = 5,
19674    }
19675    impl Mode {
19676        /// String value of the enum field names used in the ProtoBuf definition.
19677        ///
19678        /// The values are not transformed in any way and thus are considered stable
19679        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19680        pub fn as_str_name(&self) -> &'static str {
19681            match self {
19682                Self::Unknown => "MODE_UNKNOWN",
19683                Self::User => "MODE_USER",
19684                Self::Kernel => "MODE_KERNEL",
19685                Self::Hypervisor => "MODE_HYPERVISOR",
19686                Self::GuestUser => "MODE_GUEST_USER",
19687                Self::GuestKernel => "MODE_GUEST_KERNEL",
19688            }
19689        }
19690        /// Creates an enum from field names used in the ProtoBuf definition.
19691        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19692            match value {
19693                "MODE_UNKNOWN" => Some(Self::Unknown),
19694                "MODE_USER" => Some(Self::User),
19695                "MODE_KERNEL" => Some(Self::Kernel),
19696                "MODE_HYPERVISOR" => Some(Self::Hypervisor),
19697                "MODE_GUEST_USER" => Some(Self::GuestUser),
19698                "MODE_GUEST_KERNEL" => Some(Self::GuestKernel),
19699                _ => None,
19700            }
19701        }
19702    }
19703    /// The unit a CounterDescriptor's values are expressed in. Append-only: new
19704    /// units may be added, but existing values are never renumbered or
19705    /// repurposed. If none of these fit, set CounterDescriptor.unit_str instead.
19706    #[derive(
19707        Clone,
19708        Copy,
19709        Debug,
19710        PartialEq,
19711        Eq,
19712        Hash,
19713        PartialOrd,
19714        Ord,
19715        ::prost::Enumeration
19716    )]
19717    #[repr(i32)]
19718    pub enum Unit {
19719        Unspecified = 0,
19720        Nanoseconds = 1,
19721        CpuCycles = 2,
19722        Instructions = 3,
19723        Bytes = 4,
19724        PageFaults = 5,
19725        CacheMisses = 6,
19726        CacheReferences = 7,
19727        BranchMisses = 8,
19728        Count = 9,
19729    }
19730    impl Unit {
19731        /// String value of the enum field names used in the ProtoBuf definition.
19732        ///
19733        /// The values are not transformed in any way and thus are considered stable
19734        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19735        pub fn as_str_name(&self) -> &'static str {
19736            match self {
19737                Self::Unspecified => "UNIT_UNSPECIFIED",
19738                Self::Nanoseconds => "UNIT_NANOSECONDS",
19739                Self::CpuCycles => "UNIT_CPU_CYCLES",
19740                Self::Instructions => "UNIT_INSTRUCTIONS",
19741                Self::Bytes => "UNIT_BYTES",
19742                Self::PageFaults => "UNIT_PAGE_FAULTS",
19743                Self::CacheMisses => "UNIT_CACHE_MISSES",
19744                Self::CacheReferences => "UNIT_CACHE_REFERENCES",
19745                Self::BranchMisses => "UNIT_BRANCH_MISSES",
19746                Self::Count => "UNIT_COUNT",
19747            }
19748        }
19749        /// Creates an enum from field names used in the ProtoBuf definition.
19750        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19751            match value {
19752                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
19753                "UNIT_NANOSECONDS" => Some(Self::Nanoseconds),
19754                "UNIT_CPU_CYCLES" => Some(Self::CpuCycles),
19755                "UNIT_INSTRUCTIONS" => Some(Self::Instructions),
19756                "UNIT_BYTES" => Some(Self::Bytes),
19757                "UNIT_PAGE_FAULTS" => Some(Self::PageFaults),
19758                "UNIT_CACHE_MISSES" => Some(Self::CacheMisses),
19759                "UNIT_CACHE_REFERENCES" => Some(Self::CacheReferences),
19760                "UNIT_BRANCH_MISSES" => Some(Self::BranchMisses),
19761                "UNIT_COUNT" => Some(Self::Count),
19762                _ => None,
19763            }
19764        }
19765    }
19766    /// The task (thread / process / async context) this sample is attributed to.
19767    /// Give it inline via `task_context` or reference an interned TaskContext via
19768    /// `task_context_iid`.
19769    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
19770    pub enum TaskContextField {
19771        /// Inline task context.
19772        #[prost(message, tag = "1")]
19773        TaskContext(TaskContext),
19774        /// Interned task context, referencing
19775        /// InternedData.stack_sample_task_contexts.
19776        #[prost(uint64, tag = "2")]
19777        TaskContextIid(u64),
19778    }
19779    /// The execution state (cpu, privilege mode) at sample time. Absent for
19780    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
19781    /// or reference an interned ExecutionContext via `execution_context_iid`.
19782    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
19783    pub enum ExecutionContextField {
19784        /// Inline execution context.
19785        #[prost(message, tag = "3")]
19786        ExecutionContext(ExecutionContext),
19787        /// Interned execution context, referencing
19788        /// InternedData.stack_sample_execution_contexts.
19789        #[prost(uint64, tag = "4")]
19790        ExecutionContextIid(u64),
19791    }
19792    /// The captured callstack, bottom frame first. Give it fully inline via
19793    /// `callstack` or reference an interned Callstack via `callstack_iid`.
19794    #[derive(Clone, PartialEq, ::prost::Oneof)]
19795    pub enum CallstackField {
19796        /// Fully-inline callstack: each frame carries its function name and source
19797        /// location directly, no interning. Simple but larger; prefer
19798        /// `callstack_iid` when callstacks repeat or frames need binary/library
19799        /// information (mappings, build ids, relative pcs).
19800        #[prost(message, tag = "5")]
19801        Callstack(super::InlineCallstack),
19802        /// Interned callstack, referencing InternedData.callstacks.
19803        #[prost(uint64, tag = "6")]
19804        CallstackIid(u64),
19805    }
19806    /// Set if stack unwinding was incomplete; describes the data, not producer
19807    /// internal state. Give it inline via `unwind_error` or reference an interned
19808    /// string via `unwind_error_iid`.
19809    ///
19810    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
19811    /// wire layout; a table column will surface it later.
19812    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19813    pub enum UnwindErrorField {
19814        /// Inline unwind error string.
19815        #[prost(string, tag = "7")]
19816        UnwindError(::prost::alloc::string::String),
19817        /// Interned unwind error string, referencing an InternedData string entry.
19818        #[prost(uint64, tag = "8")]
19819        UnwindErrorIid(u64),
19820    }
19821    /// The sampling timebase: the counter this sample's weight is measured
19822    /// against. Set one of the two; may be omitted entirely if declared in
19823    /// StackSampleDefaults.primary_descriptor.
19824    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19825    pub enum PrimaryDescriptorField {
19826        /// Inline timebase descriptor.
19827        #[prost(message, tag = "9")]
19828        PrimaryDescriptor(CounterDescriptor),
19829        /// Interned timebase descriptor, referencing
19830        /// InternedData.stack_sample_counter_descriptors.
19831        #[prost(uint64, tag = "10")]
19832        PrimaryDescriptorIid(u64),
19833    }
19834}
19835/// Per-sequence defaults for StackSample. Lets a producer declare the source and
19836/// the common timebase / followers once instead of on every sample.
19837#[derive(Clone, PartialEq, ::prost::Message)]
19838pub struct StackSampleDefaults {
19839    /// Identifies the profiler that produced these samples, e.g. "linux.perf",
19840    /// "python.wall". Recorded once per sampling stream.
19841    #[prost(string, optional, tag = "1")]
19842    pub source: ::core::option::Option<::prost::alloc::string::String>,
19843    /// Default primary timebase for samples that omit their own.
19844    #[prost(message, optional, tag = "2")]
19845    pub primary_descriptor: ::core::option::Option<stack_sample::CounterDescriptor>,
19846    /// Default follower counters, positional with StackSample.follower_weights.
19847    #[prost(message, repeated, tag = "3")]
19848    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
19849}
19850#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19851pub struct HistogramName {
19852    #[prost(uint64, optional, tag = "1")]
19853    pub iid: ::core::option::Option<u64>,
19854    #[prost(string, optional, tag = "2")]
19855    pub name: ::core::option::Option<::prost::alloc::string::String>,
19856}
19857/// An individual histogram sample logged via Chrome's UMA metrics system.
19858#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19859pub struct ChromeHistogramSample {
19860    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
19861    /// both must be present.
19862    #[prost(uint64, optional, tag = "1")]
19863    pub name_hash: ::core::option::Option<u64>,
19864    #[prost(string, optional, tag = "2")]
19865    pub name: ::core::option::Option<::prost::alloc::string::String>,
19866    #[prost(int64, optional, tag = "3")]
19867    pub sample: ::core::option::Option<i64>,
19868    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
19869    #[prost(uint64, optional, tag = "4")]
19870    pub name_iid: ::core::option::Option<u64>,
19871}
19872/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
19873/// macros. Users of the Perfetto SDK should prefer to use the
19874/// perfetto::TracedValue API to fill these protos, rather than filling them
19875/// manually.
19876///
19877/// Debug annotations are intended for debug use and are not considered a stable
19878/// API of the trace contents. Trace-based metrics that use debug annotation
19879/// values are prone to breakage, so please rely on typed TrackEvent fields for
19880/// these instead.
19881///
19882/// DebugAnnotations support nested arrays and dictionaries. Each entry is
19883/// encoded as a single DebugAnnotation message. Only dictionary entries
19884/// set the "name" field. The TrackEvent message forms an implicit root
19885/// dictionary.
19886///
19887/// Example TrackEvent with nested annotations:
19888///    track_event {
19889///      debug_annotations {
19890///        name: "foo"
19891///        dict_entries {
19892///          name: "a"
19893///          bool_value: true
19894///        }
19895///        dict_entries {
19896///          name: "b"
19897///          int_value: 123
19898///        }
19899///      }
19900///      debug_annotations {
19901///        name: "bar"
19902///        array_values {
19903///          string_value: "hello"
19904///        }
19905///        array_values {
19906///          string_value: "world"
19907///        }
19908///      }
19909///    }
19910///
19911/// Next ID: 18.
19912/// Reserved ID: 15
19913#[derive(Clone, PartialEq, ::prost::Message)]
19914pub struct DebugAnnotation {
19915    #[prost(bytes = "vec", optional, tag = "14")]
19916    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19917    #[prost(message, repeated, tag = "11")]
19918    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
19919    #[prost(message, repeated, tag = "12")]
19920    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
19921    /// Name fields are set only for dictionary entries.
19922    #[prost(oneof = "debug_annotation::NameField", tags = "1, 10")]
19923    pub name_field: ::core::option::Option<debug_annotation::NameField>,
19924    #[prost(oneof = "debug_annotation::Value", tags = "2, 3, 4, 5, 7, 8, 9, 6, 17")]
19925    pub value: ::core::option::Option<debug_annotation::Value>,
19926    /// Used to embed arbitrary proto messages (which are also typically used to
19927    /// represent typed TrackEvent arguments). |proto_type_name| or
19928    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
19929    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
19930    /// proto messages. See |TracedValue::WriteProto| for more details.
19931    #[prost(oneof = "debug_annotation::ProtoTypeDescriptor", tags = "16, 13")]
19932    pub proto_type_descriptor: ::core::option::Option<
19933        debug_annotation::ProtoTypeDescriptor,
19934    >,
19935}
19936/// Nested message and enum types in `DebugAnnotation`.
19937pub mod debug_annotation {
19938    /// Deprecated legacy way to use nested values. Only kept for
19939    /// backwards-compatibility in TraceProcessor. May be removed in the future -
19940    /// code filling protos should use |dict_entries| and |array_values| instead.
19941    #[derive(Clone, PartialEq, ::prost::Message)]
19942    pub struct NestedValue {
19943        #[prost(enumeration = "nested_value::NestedType", optional, tag = "1")]
19944        pub nested_type: ::core::option::Option<i32>,
19945        #[prost(string, repeated, tag = "2")]
19946        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19947        #[prost(message, repeated, tag = "3")]
19948        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
19949        #[prost(message, repeated, tag = "4")]
19950        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
19951        #[prost(int64, optional, tag = "5")]
19952        pub int_value: ::core::option::Option<i64>,
19953        #[prost(double, optional, tag = "6")]
19954        pub double_value: ::core::option::Option<f64>,
19955        #[prost(bool, optional, tag = "7")]
19956        pub bool_value: ::core::option::Option<bool>,
19957        #[prost(string, optional, tag = "8")]
19958        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
19959    }
19960    /// Nested message and enum types in `NestedValue`.
19961    pub mod nested_value {
19962        #[derive(
19963            Clone,
19964            Copy,
19965            Debug,
19966            PartialEq,
19967            Eq,
19968            Hash,
19969            PartialOrd,
19970            Ord,
19971            ::prost::Enumeration
19972        )]
19973        #[repr(i32)]
19974        pub enum NestedType {
19975            /// leaf value.
19976            Unspecified = 0,
19977            Dict = 1,
19978            Array = 2,
19979        }
19980        impl NestedType {
19981            /// String value of the enum field names used in the ProtoBuf definition.
19982            ///
19983            /// The values are not transformed in any way and thus are considered stable
19984            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19985            pub fn as_str_name(&self) -> &'static str {
19986                match self {
19987                    Self::Unspecified => "UNSPECIFIED",
19988                    Self::Dict => "DICT",
19989                    Self::Array => "ARRAY",
19990                }
19991            }
19992            /// Creates an enum from field names used in the ProtoBuf definition.
19993            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19994                match value {
19995                    "UNSPECIFIED" => Some(Self::Unspecified),
19996                    "DICT" => Some(Self::Dict),
19997                    "ARRAY" => Some(Self::Array),
19998                    _ => None,
19999                }
20000            }
20001        }
20002    }
20003    /// Name fields are set only for dictionary entries.
20004    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20005    pub enum NameField {
20006        /// interned DebugAnnotationName.
20007        #[prost(uint64, tag = "1")]
20008        NameIid(u64),
20009        /// non-interned variant.
20010        #[prost(string, tag = "10")]
20011        Name(::prost::alloc::string::String),
20012    }
20013    #[derive(Clone, PartialEq, ::prost::Oneof)]
20014    pub enum Value {
20015        #[prost(bool, tag = "2")]
20016        BoolValue(bool),
20017        #[prost(uint64, tag = "3")]
20018        UintValue(u64),
20019        #[prost(int64, tag = "4")]
20020        IntValue(i64),
20021        #[prost(double, tag = "5")]
20022        DoubleValue(f64),
20023        /// Pointers are stored in a separate type as the JSON output treats them
20024        /// differently from other uint64 values.
20025        #[prost(uint64, tag = "7")]
20026        PointerValue(u64),
20027        /// Deprecated. Use dict_entries / array_values instead.
20028        #[prost(message, tag = "8")]
20029        NestedValue(NestedValue),
20030        /// Legacy instrumentation may not support conversion of nested data to
20031        /// NestedValue yet.
20032        #[prost(string, tag = "9")]
20033        LegacyJsonValue(::prost::alloc::string::String),
20034        /// interned and non-interned variants of strings.
20035        #[prost(string, tag = "6")]
20036        StringValue(::prost::alloc::string::String),
20037        /// Corresponds to |debug_annotation_string_values| field in InternedData.
20038        #[prost(uint64, tag = "17")]
20039        StringValueIid(u64),
20040    }
20041    /// Used to embed arbitrary proto messages (which are also typically used to
20042    /// represent typed TrackEvent arguments). |proto_type_name| or
20043    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
20044    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
20045    /// proto messages. See |TracedValue::WriteProto| for more details.
20046    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20047    pub enum ProtoTypeDescriptor {
20048        #[prost(string, tag = "16")]
20049        ProtoTypeName(::prost::alloc::string::String),
20050        /// interned DebugAnnotationValueTypeName.
20051        #[prost(uint64, tag = "13")]
20052        ProtoTypeNameIid(u64),
20053    }
20054}
20055#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20056pub struct DebugAnnotationName {
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/// See the |proto_type_descriptor| comment.
20063#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20064pub struct DebugAnnotationValueTypeName {
20065    #[prost(uint64, optional, tag = "1")]
20066    pub iid: ::core::option::Option<u64>,
20067    #[prost(string, optional, tag = "2")]
20068    pub name: ::core::option::Option<::prost::alloc::string::String>,
20069}
20070#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20071pub struct LogMessage {
20072    /// interned SourceLocation.
20073    #[prost(uint64, optional, tag = "1")]
20074    pub source_location_iid: ::core::option::Option<u64>,
20075    /// interned LogMessageBody.
20076    #[prost(uint64, optional, tag = "2")]
20077    pub body_iid: ::core::option::Option<u64>,
20078    #[prost(enumeration = "log_message::Priority", optional, tag = "3")]
20079    pub prio: ::core::option::Option<i32>,
20080}
20081/// Nested message and enum types in `LogMessage`.
20082pub mod log_message {
20083    #[derive(
20084        Clone,
20085        Copy,
20086        Debug,
20087        PartialEq,
20088        Eq,
20089        Hash,
20090        PartialOrd,
20091        Ord,
20092        ::prost::Enumeration
20093    )]
20094    #[repr(i32)]
20095    pub enum Priority {
20096        PrioUnspecified = 0,
20097        PrioUnused = 1,
20098        PrioVerbose = 2,
20099        PrioDebug = 3,
20100        PrioInfo = 4,
20101        PrioWarn = 5,
20102        PrioError = 6,
20103        PrioFatal = 7,
20104    }
20105    impl Priority {
20106        /// String value of the enum field names used in the ProtoBuf definition.
20107        ///
20108        /// The values are not transformed in any way and thus are considered stable
20109        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20110        pub fn as_str_name(&self) -> &'static str {
20111            match self {
20112                Self::PrioUnspecified => "PRIO_UNSPECIFIED",
20113                Self::PrioUnused => "PRIO_UNUSED",
20114                Self::PrioVerbose => "PRIO_VERBOSE",
20115                Self::PrioDebug => "PRIO_DEBUG",
20116                Self::PrioInfo => "PRIO_INFO",
20117                Self::PrioWarn => "PRIO_WARN",
20118                Self::PrioError => "PRIO_ERROR",
20119                Self::PrioFatal => "PRIO_FATAL",
20120            }
20121        }
20122        /// Creates an enum from field names used in the ProtoBuf definition.
20123        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20124            match value {
20125                "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
20126                "PRIO_UNUSED" => Some(Self::PrioUnused),
20127                "PRIO_VERBOSE" => Some(Self::PrioVerbose),
20128                "PRIO_DEBUG" => Some(Self::PrioDebug),
20129                "PRIO_INFO" => Some(Self::PrioInfo),
20130                "PRIO_WARN" => Some(Self::PrioWarn),
20131                "PRIO_ERROR" => Some(Self::PrioError),
20132                "PRIO_FATAL" => Some(Self::PrioFatal),
20133                _ => None,
20134            }
20135        }
20136    }
20137}
20138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20139pub struct LogMessageBody {
20140    #[prost(uint64, optional, tag = "1")]
20141    pub iid: ::core::option::Option<u64>,
20142    #[prost(string, optional, tag = "2")]
20143    pub body: ::core::option::Option<::prost::alloc::string::String>,
20144}
20145/// A source location, represented as a native symbol.
20146/// This is similar to `message Frame` from
20147/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
20148/// source code locations (for example in track event args), not stack frames.
20149#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20150pub struct UnsymbolizedSourceLocation {
20151    #[prost(uint64, optional, tag = "1")]
20152    pub iid: ::core::option::Option<u64>,
20153    #[prost(uint64, optional, tag = "2")]
20154    pub mapping_id: ::core::option::Option<u64>,
20155    #[prost(uint64, optional, tag = "3")]
20156    pub rel_pc: ::core::option::Option<u64>,
20157}
20158#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20159pub struct SourceLocation {
20160    #[prost(uint64, optional, tag = "1")]
20161    pub iid: ::core::option::Option<u64>,
20162    #[prost(string, optional, tag = "2")]
20163    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
20164    #[prost(string, optional, tag = "3")]
20165    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20166    #[prost(uint32, optional, tag = "4")]
20167    pub line_number: ::core::option::Option<u32>,
20168}
20169/// A list of processes connected to the tracing service.
20170#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20171pub struct ChromeActiveProcesses {
20172    #[prost(int32, repeated, packed = "false", tag = "1")]
20173    pub pid: ::prost::alloc::vec::Vec<i32>,
20174}
20175/// Trace event arguments for application state changes.
20176#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20177pub struct ChromeApplicationStateInfo {
20178    #[prost(
20179        enumeration = "chrome_application_state_info::ChromeApplicationState",
20180        optional,
20181        tag = "1"
20182    )]
20183    pub application_state: ::core::option::Option<i32>,
20184}
20185/// Nested message and enum types in `ChromeApplicationStateInfo`.
20186pub mod chrome_application_state_info {
20187    /// Enum definition taken from:
20188    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
20189    #[derive(
20190        Clone,
20191        Copy,
20192        Debug,
20193        PartialEq,
20194        Eq,
20195        Hash,
20196        PartialOrd,
20197        Ord,
20198        ::prost::Enumeration
20199    )]
20200    #[repr(i32)]
20201    pub enum ChromeApplicationState {
20202        ApplicationStateUnknown = 0,
20203        ApplicationStateHasRunningActivities = 1,
20204        ApplicationStateHasPausedActivities = 2,
20205        ApplicationStateHasStoppedActivities = 3,
20206        ApplicationStateHasDestroyedActivities = 4,
20207    }
20208    impl ChromeApplicationState {
20209        /// String value of the enum field names used in the ProtoBuf definition.
20210        ///
20211        /// The values are not transformed in any way and thus are considered stable
20212        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20213        pub fn as_str_name(&self) -> &'static str {
20214            match self {
20215                Self::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
20216                Self::ApplicationStateHasRunningActivities => {
20217                    "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES"
20218                }
20219                Self::ApplicationStateHasPausedActivities => {
20220                    "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES"
20221                }
20222                Self::ApplicationStateHasStoppedActivities => {
20223                    "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES"
20224                }
20225                Self::ApplicationStateHasDestroyedActivities => {
20226                    "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES"
20227                }
20228            }
20229        }
20230        /// Creates an enum from field names used in the ProtoBuf definition.
20231        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20232            match value {
20233                "APPLICATION_STATE_UNKNOWN" => Some(Self::ApplicationStateUnknown),
20234                "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES" => {
20235                    Some(Self::ApplicationStateHasRunningActivities)
20236                }
20237                "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES" => {
20238                    Some(Self::ApplicationStateHasPausedActivities)
20239                }
20240                "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES" => {
20241                    Some(Self::ApplicationStateHasStoppedActivities)
20242                }
20243                "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES" => {
20244                    Some(Self::ApplicationStateHasDestroyedActivities)
20245                }
20246                _ => None,
20247            }
20248        }
20249    }
20250}
20251/// Next id: 18
20252#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20253pub struct ChromeCompositorSchedulerState {
20254    #[prost(message, optional, tag = "1")]
20255    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
20256    #[prost(bool, optional, tag = "2")]
20257    pub observing_begin_frame_source: ::core::option::Option<bool>,
20258    #[prost(bool, optional, tag = "3")]
20259    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
20260    #[prost(bool, optional, tag = "4")]
20261    pub pending_begin_frame_task: ::core::option::Option<bool>,
20262    #[prost(bool, optional, tag = "5")]
20263    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
20264    #[prost(enumeration = "ChromeCompositorSchedulerAction", optional, tag = "7")]
20265    pub inside_action: ::core::option::Option<i32>,
20266    #[prost(
20267        enumeration = "chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode",
20268        optional,
20269        tag = "8"
20270    )]
20271    pub deadline_mode: ::core::option::Option<i32>,
20272    #[prost(int64, optional, tag = "9")]
20273    pub deadline_us: ::core::option::Option<i64>,
20274    #[prost(int64, optional, tag = "10")]
20275    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
20276    #[prost(int64, optional, tag = "11")]
20277    pub now_us: ::core::option::Option<i64>,
20278    #[prost(int64, optional, tag = "12")]
20279    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
20280    #[prost(int64, optional, tag = "13")]
20281    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
20282    #[prost(message, optional, tag = "14")]
20283    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
20284    #[prost(message, optional, tag = "15")]
20285    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
20286    #[prost(message, optional, tag = "16")]
20287    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
20288    #[prost(message, optional, tag = "17")]
20289    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
20290}
20291/// Nested message and enum types in `ChromeCompositorSchedulerState`.
20292pub mod chrome_compositor_scheduler_state {
20293    #[derive(
20294        Clone,
20295        Copy,
20296        Debug,
20297        PartialEq,
20298        Eq,
20299        Hash,
20300        PartialOrd,
20301        Ord,
20302        ::prost::Enumeration
20303    )]
20304    #[repr(i32)]
20305    pub enum BeginImplFrameDeadlineMode {
20306        DeadlineModeUnspecified = 0,
20307        DeadlineModeNone = 1,
20308        DeadlineModeImmediate = 2,
20309        DeadlineModeRegular = 3,
20310        DeadlineModeLate = 4,
20311        DeadlineModeBlocked = 5,
20312    }
20313    impl BeginImplFrameDeadlineMode {
20314        /// String value of the enum field names used in the ProtoBuf definition.
20315        ///
20316        /// The values are not transformed in any way and thus are considered stable
20317        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20318        pub fn as_str_name(&self) -> &'static str {
20319            match self {
20320                Self::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
20321                Self::DeadlineModeNone => "DEADLINE_MODE_NONE",
20322                Self::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
20323                Self::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
20324                Self::DeadlineModeLate => "DEADLINE_MODE_LATE",
20325                Self::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
20326            }
20327        }
20328        /// Creates an enum from field names used in the ProtoBuf definition.
20329        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20330            match value {
20331                "DEADLINE_MODE_UNSPECIFIED" => Some(Self::DeadlineModeUnspecified),
20332                "DEADLINE_MODE_NONE" => Some(Self::DeadlineModeNone),
20333                "DEADLINE_MODE_IMMEDIATE" => Some(Self::DeadlineModeImmediate),
20334                "DEADLINE_MODE_REGULAR" => Some(Self::DeadlineModeRegular),
20335                "DEADLINE_MODE_LATE" => Some(Self::DeadlineModeLate),
20336                "DEADLINE_MODE_BLOCKED" => Some(Self::DeadlineModeBlocked),
20337                _ => None,
20338            }
20339        }
20340    }
20341}
20342/// Describes the current values stored in the Chrome Compositor state machine.
20343/// Next id: 3
20344#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20345pub struct ChromeCompositorStateMachine {
20346    #[prost(message, optional, tag = "1")]
20347    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
20348    #[prost(message, optional, tag = "2")]
20349    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
20350}
20351/// Nested message and enum types in `ChromeCompositorStateMachine`.
20352pub mod chrome_compositor_state_machine {
20353    /// Next id: 6
20354    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20355    pub struct MajorState {
20356        #[prost(
20357            enumeration = "super::ChromeCompositorSchedulerAction",
20358            optional,
20359            tag = "1"
20360        )]
20361        pub next_action: ::core::option::Option<i32>,
20362        #[prost(enumeration = "major_state::BeginImplFrameState", optional, tag = "2")]
20363        pub begin_impl_frame_state: ::core::option::Option<i32>,
20364        #[prost(enumeration = "major_state::BeginMainFrameState", optional, tag = "3")]
20365        pub begin_main_frame_state: ::core::option::Option<i32>,
20366        #[prost(
20367            enumeration = "major_state::LayerTreeFrameSinkState",
20368            optional,
20369            tag = "4"
20370        )]
20371        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
20372        #[prost(
20373            enumeration = "major_state::ForcedRedrawOnTimeoutState",
20374            optional,
20375            tag = "5"
20376        )]
20377        pub forced_redraw_state: ::core::option::Option<i32>,
20378    }
20379    /// Nested message and enum types in `MajorState`.
20380    pub mod major_state {
20381        #[derive(
20382            Clone,
20383            Copy,
20384            Debug,
20385            PartialEq,
20386            Eq,
20387            Hash,
20388            PartialOrd,
20389            Ord,
20390            ::prost::Enumeration
20391        )]
20392        #[repr(i32)]
20393        pub enum BeginImplFrameState {
20394            BeginImplFrameUnspecified = 0,
20395            BeginImplFrameIdle = 1,
20396            BeginImplFrameInsideBeginFrame = 2,
20397            BeginImplFrameInsideDeadline = 3,
20398        }
20399        impl BeginImplFrameState {
20400            /// String value of the enum field names used in the ProtoBuf definition.
20401            ///
20402            /// The values are not transformed in any way and thus are considered stable
20403            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20404            pub fn as_str_name(&self) -> &'static str {
20405                match self {
20406                    Self::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
20407                    Self::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
20408                    Self::BeginImplFrameInsideBeginFrame => {
20409                        "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME"
20410                    }
20411                    Self::BeginImplFrameInsideDeadline => {
20412                        "BEGIN_IMPL_FRAME_INSIDE_DEADLINE"
20413                    }
20414                }
20415            }
20416            /// Creates an enum from field names used in the ProtoBuf definition.
20417            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20418                match value {
20419                    "BEGIN_IMPL_FRAME_UNSPECIFIED" => {
20420                        Some(Self::BeginImplFrameUnspecified)
20421                    }
20422                    "BEGIN_IMPL_FRAME_IDLE" => Some(Self::BeginImplFrameIdle),
20423                    "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME" => {
20424                        Some(Self::BeginImplFrameInsideBeginFrame)
20425                    }
20426                    "BEGIN_IMPL_FRAME_INSIDE_DEADLINE" => {
20427                        Some(Self::BeginImplFrameInsideDeadline)
20428                    }
20429                    _ => None,
20430                }
20431            }
20432        }
20433        #[derive(
20434            Clone,
20435            Copy,
20436            Debug,
20437            PartialEq,
20438            Eq,
20439            Hash,
20440            PartialOrd,
20441            Ord,
20442            ::prost::Enumeration
20443        )]
20444        #[repr(i32)]
20445        pub enum BeginMainFrameState {
20446            BeginMainFrameUnspecified = 0,
20447            BeginMainFrameIdle = 1,
20448            BeginMainFrameSent = 2,
20449            BeginMainFrameReadyToCommit = 3,
20450        }
20451        impl BeginMainFrameState {
20452            /// String value of the enum field names used in the ProtoBuf definition.
20453            ///
20454            /// The values are not transformed in any way and thus are considered stable
20455            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20456            pub fn as_str_name(&self) -> &'static str {
20457                match self {
20458                    Self::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
20459                    Self::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
20460                    Self::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
20461                    Self::BeginMainFrameReadyToCommit => {
20462                        "BEGIN_MAIN_FRAME_READY_TO_COMMIT"
20463                    }
20464                }
20465            }
20466            /// Creates an enum from field names used in the ProtoBuf definition.
20467            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20468                match value {
20469                    "BEGIN_MAIN_FRAME_UNSPECIFIED" => {
20470                        Some(Self::BeginMainFrameUnspecified)
20471                    }
20472                    "BEGIN_MAIN_FRAME_IDLE" => Some(Self::BeginMainFrameIdle),
20473                    "BEGIN_MAIN_FRAME_SENT" => Some(Self::BeginMainFrameSent),
20474                    "BEGIN_MAIN_FRAME_READY_TO_COMMIT" => {
20475                        Some(Self::BeginMainFrameReadyToCommit)
20476                    }
20477                    _ => None,
20478                }
20479            }
20480        }
20481        #[derive(
20482            Clone,
20483            Copy,
20484            Debug,
20485            PartialEq,
20486            Eq,
20487            Hash,
20488            PartialOrd,
20489            Ord,
20490            ::prost::Enumeration
20491        )]
20492        #[repr(i32)]
20493        pub enum LayerTreeFrameSinkState {
20494            LayerTreeFrameUnspecified = 0,
20495            LayerTreeFrameNone = 1,
20496            LayerTreeFrameActive = 2,
20497            LayerTreeFrameCreating = 3,
20498            LayerTreeFrameWaitingForFirstCommit = 4,
20499            LayerTreeFrameWaitingForFirstActivation = 5,
20500        }
20501        impl LayerTreeFrameSinkState {
20502            /// String value of the enum field names used in the ProtoBuf definition.
20503            ///
20504            /// The values are not transformed in any way and thus are considered stable
20505            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20506            pub fn as_str_name(&self) -> &'static str {
20507                match self {
20508                    Self::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
20509                    Self::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
20510                    Self::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
20511                    Self::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
20512                    Self::LayerTreeFrameWaitingForFirstCommit => {
20513                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT"
20514                    }
20515                    Self::LayerTreeFrameWaitingForFirstActivation => {
20516                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION"
20517                    }
20518                }
20519            }
20520            /// Creates an enum from field names used in the ProtoBuf definition.
20521            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20522                match value {
20523                    "LAYER_TREE_FRAME_UNSPECIFIED" => {
20524                        Some(Self::LayerTreeFrameUnspecified)
20525                    }
20526                    "LAYER_TREE_FRAME_NONE" => Some(Self::LayerTreeFrameNone),
20527                    "LAYER_TREE_FRAME_ACTIVE" => Some(Self::LayerTreeFrameActive),
20528                    "LAYER_TREE_FRAME_CREATING" => Some(Self::LayerTreeFrameCreating),
20529                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT" => {
20530                        Some(Self::LayerTreeFrameWaitingForFirstCommit)
20531                    }
20532                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION" => {
20533                        Some(Self::LayerTreeFrameWaitingForFirstActivation)
20534                    }
20535                    _ => None,
20536                }
20537            }
20538        }
20539        #[derive(
20540            Clone,
20541            Copy,
20542            Debug,
20543            PartialEq,
20544            Eq,
20545            Hash,
20546            PartialOrd,
20547            Ord,
20548            ::prost::Enumeration
20549        )]
20550        #[repr(i32)]
20551        pub enum ForcedRedrawOnTimeoutState {
20552            ForcedRedrawUnspecified = 0,
20553            ForcedRedrawIdle = 1,
20554            ForcedRedrawWaitingForCommit = 2,
20555            ForcedRedrawWaitingForActivation = 3,
20556            ForcedRedrawWaitingForDraw = 4,
20557        }
20558        impl ForcedRedrawOnTimeoutState {
20559            /// String value of the enum field names used in the ProtoBuf definition.
20560            ///
20561            /// The values are not transformed in any way and thus are considered stable
20562            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20563            pub fn as_str_name(&self) -> &'static str {
20564                match self {
20565                    Self::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
20566                    Self::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
20567                    Self::ForcedRedrawWaitingForCommit => {
20568                        "FORCED_REDRAW_WAITING_FOR_COMMIT"
20569                    }
20570                    Self::ForcedRedrawWaitingForActivation => {
20571                        "FORCED_REDRAW_WAITING_FOR_ACTIVATION"
20572                    }
20573                    Self::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
20574                }
20575            }
20576            /// Creates an enum from field names used in the ProtoBuf definition.
20577            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20578                match value {
20579                    "FORCED_REDRAW_UNSPECIFIED" => Some(Self::ForcedRedrawUnspecified),
20580                    "FORCED_REDRAW_IDLE" => Some(Self::ForcedRedrawIdle),
20581                    "FORCED_REDRAW_WAITING_FOR_COMMIT" => {
20582                        Some(Self::ForcedRedrawWaitingForCommit)
20583                    }
20584                    "FORCED_REDRAW_WAITING_FOR_ACTIVATION" => {
20585                        Some(Self::ForcedRedrawWaitingForActivation)
20586                    }
20587                    "FORCED_REDRAW_WAITING_FOR_DRAW" => {
20588                        Some(Self::ForcedRedrawWaitingForDraw)
20589                    }
20590                    _ => None,
20591                }
20592            }
20593        }
20594    }
20595    /// Next id: 47
20596    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20597    pub struct MinorState {
20598        #[prost(int32, optional, tag = "1")]
20599        pub commit_count: ::core::option::Option<i32>,
20600        #[prost(int32, optional, tag = "2")]
20601        pub current_frame_number: ::core::option::Option<i32>,
20602        #[prost(int32, optional, tag = "3")]
20603        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
20604        #[prost(int32, optional, tag = "4")]
20605        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
20606        #[prost(int32, optional, tag = "5")]
20607        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
20608        #[prost(bool, optional, tag = "6")]
20609        pub did_draw: ::core::option::Option<bool>,
20610        #[prost(bool, optional, tag = "7")]
20611        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
20612        #[prost(bool, optional, tag = "8")]
20613        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
20614        #[prost(bool, optional, tag = "9")]
20615        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
20616        #[prost(bool, optional, tag = "10")]
20617        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
20618        #[prost(bool, optional, tag = "11")]
20619        pub did_commit_during_frame: ::core::option::Option<bool>,
20620        #[prost(bool, optional, tag = "12")]
20621        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
20622        #[prost(bool, optional, tag = "13")]
20623        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
20624        #[prost(bool, optional, tag = "14")]
20625        pub did_prepare_tiles: ::core::option::Option<bool>,
20626        #[prost(int32, optional, tag = "15")]
20627        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
20628        #[prost(int32, optional, tag = "16")]
20629        pub pending_submit_frames: ::core::option::Option<i32>,
20630        #[prost(int32, optional, tag = "17")]
20631        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<
20632            i32,
20633        >,
20634        #[prost(bool, optional, tag = "18")]
20635        pub needs_redraw: ::core::option::Option<bool>,
20636        #[prost(bool, optional, tag = "19")]
20637        pub needs_prepare_tiles: ::core::option::Option<bool>,
20638        #[prost(bool, optional, tag = "20")]
20639        pub needs_begin_main_frame: ::core::option::Option<bool>,
20640        #[prost(bool, optional, tag = "21")]
20641        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
20642        #[prost(bool, optional, tag = "22")]
20643        pub visible: ::core::option::Option<bool>,
20644        #[prost(bool, optional, tag = "23")]
20645        pub begin_frame_source_paused: ::core::option::Option<bool>,
20646        #[prost(bool, optional, tag = "24")]
20647        pub can_draw: ::core::option::Option<bool>,
20648        #[prost(bool, optional, tag = "25")]
20649        pub resourceless_draw: ::core::option::Option<bool>,
20650        #[prost(bool, optional, tag = "26")]
20651        pub has_pending_tree: ::core::option::Option<bool>,
20652        #[prost(bool, optional, tag = "27")]
20653        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
20654        #[prost(bool, optional, tag = "28")]
20655        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
20656        #[prost(bool, optional, tag = "29")]
20657        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
20658        #[prost(bool, optional, tag = "30")]
20659        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<
20660            bool,
20661        >,
20662        #[prost(enumeration = "minor_state::TreePriority", optional, tag = "31")]
20663        pub tree_priority: ::core::option::Option<i32>,
20664        #[prost(enumeration = "minor_state::ScrollHandlerState", optional, tag = "32")]
20665        pub scroll_handler_state: ::core::option::Option<i32>,
20666        #[prost(bool, optional, tag = "33")]
20667        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
20668        #[prost(bool, optional, tag = "34")]
20669        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
20670        #[prost(bool, optional, tag = "36")]
20671        pub video_needs_begin_frames: ::core::option::Option<bool>,
20672        #[prost(bool, optional, tag = "37")]
20673        pub defer_begin_main_frame: ::core::option::Option<bool>,
20674        #[prost(bool, optional, tag = "38")]
20675        pub last_commit_had_no_updates: ::core::option::Option<bool>,
20676        #[prost(bool, optional, tag = "39")]
20677        pub did_draw_in_last_frame: ::core::option::Option<bool>,
20678        #[prost(bool, optional, tag = "40")]
20679        pub did_submit_in_last_frame: ::core::option::Option<bool>,
20680        #[prost(bool, optional, tag = "41")]
20681        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
20682        #[prost(bool, optional, tag = "42")]
20683        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
20684        #[prost(bool, optional, tag = "43")]
20685        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
20686        #[prost(bool, optional, tag = "44")]
20687        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
20688        #[prost(bool, optional, tag = "45")]
20689        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
20690        #[prost(bool, optional, tag = "46")]
20691        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
20692    }
20693    /// Nested message and enum types in `MinorState`.
20694    pub mod minor_state {
20695        #[derive(
20696            Clone,
20697            Copy,
20698            Debug,
20699            PartialEq,
20700            Eq,
20701            Hash,
20702            PartialOrd,
20703            Ord,
20704            ::prost::Enumeration
20705        )]
20706        #[repr(i32)]
20707        pub enum TreePriority {
20708            Unspecified = 0,
20709            SamePriorityForBothTrees = 1,
20710            SmoothnessTakesPriority = 2,
20711            NewContentTakesPriority = 3,
20712        }
20713        impl TreePriority {
20714            /// String value of the enum field names used in the ProtoBuf definition.
20715            ///
20716            /// The values are not transformed in any way and thus are considered stable
20717            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20718            pub fn as_str_name(&self) -> &'static str {
20719                match self {
20720                    Self::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
20721                    Self::SamePriorityForBothTrees => {
20722                        "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES"
20723                    }
20724                    Self::SmoothnessTakesPriority => {
20725                        "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY"
20726                    }
20727                    Self::NewContentTakesPriority => {
20728                        "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY"
20729                    }
20730                }
20731            }
20732            /// Creates an enum from field names used in the ProtoBuf definition.
20733            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20734                match value {
20735                    "TREE_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
20736                    "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES" => {
20737                        Some(Self::SamePriorityForBothTrees)
20738                    }
20739                    "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY" => {
20740                        Some(Self::SmoothnessTakesPriority)
20741                    }
20742                    "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY" => {
20743                        Some(Self::NewContentTakesPriority)
20744                    }
20745                    _ => None,
20746                }
20747            }
20748        }
20749        #[derive(
20750            Clone,
20751            Copy,
20752            Debug,
20753            PartialEq,
20754            Eq,
20755            Hash,
20756            PartialOrd,
20757            Ord,
20758            ::prost::Enumeration
20759        )]
20760        #[repr(i32)]
20761        pub enum ScrollHandlerState {
20762            ScrollHandlerUnspecified = 0,
20763            ScrollAffectsScrollHandler = 1,
20764            ScrollDoesNotAffectScrollHandler = 2,
20765        }
20766        impl ScrollHandlerState {
20767            /// String value of the enum field names used in the ProtoBuf definition.
20768            ///
20769            /// The values are not transformed in any way and thus are considered stable
20770            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20771            pub fn as_str_name(&self) -> &'static str {
20772                match self {
20773                    Self::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
20774                    Self::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
20775                    Self::ScrollDoesNotAffectScrollHandler => {
20776                        "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER"
20777                    }
20778                }
20779            }
20780            /// Creates an enum from field names used in the ProtoBuf definition.
20781            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20782                match value {
20783                    "SCROLL_HANDLER_UNSPECIFIED" => Some(Self::ScrollHandlerUnspecified),
20784                    "SCROLL_AFFECTS_SCROLL_HANDLER" => {
20785                        Some(Self::ScrollAffectsScrollHandler)
20786                    }
20787                    "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER" => {
20788                        Some(Self::ScrollDoesNotAffectScrollHandler)
20789                    }
20790                    _ => None,
20791                }
20792            }
20793        }
20794    }
20795}
20796/// Next id: 13
20797#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20798pub struct BeginFrameArgs {
20799    #[prost(enumeration = "begin_frame_args::BeginFrameArgsType", optional, tag = "1")]
20800    pub r#type: ::core::option::Option<i32>,
20801    #[prost(uint64, optional, tag = "2")]
20802    pub source_id: ::core::option::Option<u64>,
20803    #[prost(uint64, optional, tag = "3")]
20804    pub sequence_number: ::core::option::Option<u64>,
20805    #[prost(int64, optional, tag = "4")]
20806    pub frame_time_us: ::core::option::Option<i64>,
20807    #[prost(int64, optional, tag = "5")]
20808    pub deadline_us: ::core::option::Option<i64>,
20809    #[prost(int64, optional, tag = "6")]
20810    pub interval_delta_us: ::core::option::Option<i64>,
20811    #[prost(bool, optional, tag = "7")]
20812    pub on_critical_path: ::core::option::Option<bool>,
20813    #[prost(bool, optional, tag = "8")]
20814    pub animate_only: ::core::option::Option<bool>,
20815    #[prost(int64, optional, tag = "12")]
20816    pub frames_throttled_since_last: ::core::option::Option<i64>,
20817    #[prost(oneof = "begin_frame_args::CreatedFrom", tags = "9, 10")]
20818    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
20819}
20820/// Nested message and enum types in `BeginFrameArgs`.
20821pub mod begin_frame_args {
20822    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
20823    /// drop this in the proto representation, and instead make the JSON format
20824    /// "subtype" field become the type field.
20825    #[derive(
20826        Clone,
20827        Copy,
20828        Debug,
20829        PartialEq,
20830        Eq,
20831        Hash,
20832        PartialOrd,
20833        Ord,
20834        ::prost::Enumeration
20835    )]
20836    #[repr(i32)]
20837    pub enum BeginFrameArgsType {
20838        Unspecified = 0,
20839        Invalid = 1,
20840        Normal = 2,
20841        Missed = 3,
20842    }
20843    impl BeginFrameArgsType {
20844        /// String value of the enum field names used in the ProtoBuf definition.
20845        ///
20846        /// The values are not transformed in any way and thus are considered stable
20847        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20848        pub fn as_str_name(&self) -> &'static str {
20849            match self {
20850                Self::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
20851                Self::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
20852                Self::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
20853                Self::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
20854            }
20855        }
20856        /// Creates an enum from field names used in the ProtoBuf definition.
20857        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20858            match value {
20859                "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
20860                "BEGIN_FRAME_ARGS_TYPE_INVALID" => Some(Self::Invalid),
20861                "BEGIN_FRAME_ARGS_TYPE_NORMAL" => Some(Self::Normal),
20862                "BEGIN_FRAME_ARGS_TYPE_MISSED" => Some(Self::Missed),
20863                _ => None,
20864            }
20865        }
20866    }
20867    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20868    pub enum CreatedFrom {
20869        /// The interned SourceLocation.
20870        #[prost(uint64, tag = "9")]
20871        SourceLocationIid(u64),
20872        /// The SourceLocation that this args was created from.
20873        /// TODO(nuskos): Eventually we will support interning inside of
20874        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
20875        /// since we can emit it as part of the InternedData message. When we can
20876        /// remove this |source_location|.
20877        #[prost(message, tag = "10")]
20878        SourceLocation(super::SourceLocation),
20879    }
20880}
20881/// Next id: 7
20882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20883pub struct BeginImplFrameArgs {
20884    #[prost(int64, optional, tag = "1")]
20885    pub updated_at_us: ::core::option::Option<i64>,
20886    #[prost(int64, optional, tag = "2")]
20887    pub finished_at_us: ::core::option::Option<i64>,
20888    #[prost(enumeration = "begin_impl_frame_args::State", optional, tag = "3")]
20889    pub state: ::core::option::Option<i32>,
20890    #[prost(message, optional, tag = "6")]
20891    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
20892    #[prost(oneof = "begin_impl_frame_args::Args", tags = "4, 5")]
20893    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
20894}
20895/// Nested message and enum types in `BeginImplFrameArgs`.
20896pub mod begin_impl_frame_args {
20897    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20898    pub struct TimestampsInUs {
20899        #[prost(int64, optional, tag = "1")]
20900        pub interval_delta: ::core::option::Option<i64>,
20901        #[prost(int64, optional, tag = "2")]
20902        pub now_to_deadline_delta: ::core::option::Option<i64>,
20903        #[prost(int64, optional, tag = "3")]
20904        pub frame_time_to_now_delta: ::core::option::Option<i64>,
20905        #[prost(int64, optional, tag = "4")]
20906        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
20907        #[prost(int64, optional, tag = "5")]
20908        pub now: ::core::option::Option<i64>,
20909        #[prost(int64, optional, tag = "6")]
20910        pub frame_time: ::core::option::Option<i64>,
20911        #[prost(int64, optional, tag = "7")]
20912        pub deadline: ::core::option::Option<i64>,
20913    }
20914    #[derive(
20915        Clone,
20916        Copy,
20917        Debug,
20918        PartialEq,
20919        Eq,
20920        Hash,
20921        PartialOrd,
20922        Ord,
20923        ::prost::Enumeration
20924    )]
20925    #[repr(i32)]
20926    pub enum State {
20927        BeginFrameFinished = 0,
20928        BeginFrameUsing = 1,
20929    }
20930    impl State {
20931        /// String value of the enum field names used in the ProtoBuf definition.
20932        ///
20933        /// The values are not transformed in any way and thus are considered stable
20934        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20935        pub fn as_str_name(&self) -> &'static str {
20936            match self {
20937                Self::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
20938                Self::BeginFrameUsing => "BEGIN_FRAME_USING",
20939            }
20940        }
20941        /// Creates an enum from field names used in the ProtoBuf definition.
20942        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20943            match value {
20944                "BEGIN_FRAME_FINISHED" => Some(Self::BeginFrameFinished),
20945                "BEGIN_FRAME_USING" => Some(Self::BeginFrameUsing),
20946                _ => None,
20947            }
20948        }
20949    }
20950    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20951    pub enum Args {
20952        /// Only set if |state| is BEGIN_FRAME_FINISHED.
20953        #[prost(message, tag = "4")]
20954        CurrentArgs(super::BeginFrameArgs),
20955        /// Only set if |state| is BEGIN_FRAME_USING.
20956        #[prost(message, tag = "5")]
20957        LastArgs(super::BeginFrameArgs),
20958    }
20959}
20960#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20961pub struct BeginFrameObserverState {
20962    #[prost(int64, optional, tag = "1")]
20963    pub dropped_begin_frame_args: ::core::option::Option<i64>,
20964    #[prost(message, optional, tag = "2")]
20965    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20966}
20967#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20968pub struct BeginFrameSourceState {
20969    #[prost(uint32, optional, tag = "1")]
20970    pub source_id: ::core::option::Option<u32>,
20971    #[prost(bool, optional, tag = "2")]
20972    pub paused: ::core::option::Option<bool>,
20973    #[prost(uint32, optional, tag = "3")]
20974    pub num_observers: ::core::option::Option<u32>,
20975    #[prost(message, optional, tag = "4")]
20976    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
20977}
20978#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20979pub struct CompositorTimingHistory {
20980    #[prost(int64, optional, tag = "1")]
20981    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
20982    #[prost(int64, optional, tag = "2")]
20983    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<
20984        i64,
20985    >,
20986    #[prost(int64, optional, tag = "3")]
20987    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<
20988        i64,
20989    >,
20990    #[prost(int64, optional, tag = "4")]
20991    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
20992    #[prost(int64, optional, tag = "5")]
20993    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
20994    #[prost(int64, optional, tag = "6")]
20995    pub activate_estimate_delta_us: ::core::option::Option<i64>,
20996    #[prost(int64, optional, tag = "7")]
20997    pub draw_estimate_delta_us: ::core::option::Option<i64>,
20998}
20999/// Details about ContentSettings trace events.
21000#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21001pub struct ChromeContentSettingsEventInfo {
21002    /// The number of user defined hostname patterns for content settings at
21003    /// browser start. Similar to UMA histogram
21004    /// 'ContentSettings.NumberOfExceptions'.
21005    #[prost(uint32, optional, tag = "1")]
21006    pub number_of_exceptions: ::core::option::Option<u32>,
21007}
21008/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
21009/// in
21010/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
21011/// instead.
21012#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21013pub struct ChromeFrameReporter {
21014    #[prost(enumeration = "chrome_frame_reporter::State", optional, tag = "1")]
21015    pub state: ::core::option::Option<i32>,
21016    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
21017    #[prost(enumeration = "chrome_frame_reporter::FrameDropReason", optional, tag = "2")]
21018    pub reason: ::core::option::Option<i32>,
21019    #[prost(uint64, optional, tag = "3")]
21020    pub frame_source: ::core::option::Option<u64>,
21021    #[prost(uint64, optional, tag = "4")]
21022    pub frame_sequence: ::core::option::Option<u64>,
21023    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
21024    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
21025    /// smoothness.
21026    #[prost(bool, optional, tag = "5")]
21027    pub affects_smoothness: ::core::option::Option<bool>,
21028    /// The type of active scroll.
21029    #[prost(enumeration = "chrome_frame_reporter::ScrollState", optional, tag = "6")]
21030    pub scroll_state: ::core::option::Option<i32>,
21031    /// If any main thread animation is active during this frame.
21032    #[prost(bool, optional, tag = "7")]
21033    pub has_main_animation: ::core::option::Option<bool>,
21034    /// If any compositor thread animation is active during this frame.
21035    #[prost(bool, optional, tag = "8")]
21036    pub has_compositor_animation: ::core::option::Option<bool>,
21037    /// If any touch-driven UX (not scroll) is active during this frame.
21038    #[prost(bool, optional, tag = "9")]
21039    pub has_smooth_input_main: ::core::option::Option<bool>,
21040    /// Whether the frame contained any missing content (i.e. whether there was
21041    /// checkerboarding in the frame).  If has_missing_content,
21042    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
21043    /// values, has_missing_content should equal checkerboarded_needs_raster ||
21044    /// checkerboarded_needs_record.
21045    #[prost(bool, optional, tag = "10")]
21046    pub has_missing_content: ::core::option::Option<bool>,
21047    /// The id of layer_tree_host that the frame has been produced for.
21048    #[prost(uint64, optional, tag = "11")]
21049    pub layer_tree_host_id: ::core::option::Option<u64>,
21050    /// If total latency of PipelineReporter exceeds a certain limit.
21051    #[prost(bool, optional, tag = "12")]
21052    pub has_high_latency: ::core::option::Option<bool>,
21053    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
21054    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
21055    /// (i.e. dropped frames when there are no partial compositor updates).
21056    #[prost(enumeration = "chrome_frame_reporter::FrameType", optional, tag = "13")]
21057    pub frame_type: ::core::option::Option<i32>,
21058    /// The breakdown stage of PipelineReporter that is most likely accountable for
21059    /// high latency.
21060    #[prost(string, repeated, tag = "14")]
21061    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<
21062        ::prost::alloc::string::String,
21063    >,
21064    /// Whether the frame contained any content that is not fully rastered.
21065    #[prost(bool, optional, tag = "15")]
21066    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
21067    /// Whether the frame contained any content that is not fully recorded.
21068    #[prost(bool, optional, tag = "16")]
21069    pub checkerboarded_needs_record: ::core::option::Option<bool>,
21070    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
21071    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
21072    #[prost(int64, optional, tag = "17")]
21073    pub surface_frame_trace_id: ::core::option::Option<i64>,
21074    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
21075    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
21076    #[prost(int64, optional, tag = "18")]
21077    pub display_trace_id: ::core::option::Option<i64>,
21078}
21079/// Nested message and enum types in `ChromeFrameReporter`.
21080pub mod chrome_frame_reporter {
21081    #[derive(
21082        Clone,
21083        Copy,
21084        Debug,
21085        PartialEq,
21086        Eq,
21087        Hash,
21088        PartialOrd,
21089        Ord,
21090        ::prost::Enumeration
21091    )]
21092    #[repr(i32)]
21093    pub enum State {
21094        /// The frame did not have any updates to present.
21095        NoUpdateDesired = 0,
21096        /// The frame presented all the desired updates (i.e. any updates requested
21097        /// from both the compositor thread and main-threads were handled).
21098        PresentedAll = 1,
21099        /// The frame was presented with some updates, but also missed some updates
21100        /// (e.g. missed updates from the main-thread, but included updates from the
21101        /// compositor thread).
21102        PresentedPartial = 2,
21103        /// The frame was dropped, i.e. some updates were desired for the frame, but
21104        /// was not presented.
21105        Dropped = 3,
21106    }
21107    impl State {
21108        /// String value of the enum field names used in the ProtoBuf definition.
21109        ///
21110        /// The values are not transformed in any way and thus are considered stable
21111        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21112        pub fn as_str_name(&self) -> &'static str {
21113            match self {
21114                Self::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
21115                Self::PresentedAll => "STATE_PRESENTED_ALL",
21116                Self::PresentedPartial => "STATE_PRESENTED_PARTIAL",
21117                Self::Dropped => "STATE_DROPPED",
21118            }
21119        }
21120        /// Creates an enum from field names used in the ProtoBuf definition.
21121        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21122            match value {
21123                "STATE_NO_UPDATE_DESIRED" => Some(Self::NoUpdateDesired),
21124                "STATE_PRESENTED_ALL" => Some(Self::PresentedAll),
21125                "STATE_PRESENTED_PARTIAL" => Some(Self::PresentedPartial),
21126                "STATE_DROPPED" => Some(Self::Dropped),
21127                _ => None,
21128            }
21129        }
21130    }
21131    #[derive(
21132        Clone,
21133        Copy,
21134        Debug,
21135        PartialEq,
21136        Eq,
21137        Hash,
21138        PartialOrd,
21139        Ord,
21140        ::prost::Enumeration
21141    )]
21142    #[repr(i32)]
21143    pub enum FrameDropReason {
21144        ReasonUnspecified = 0,
21145        /// Frame was dropped by the display-compositor.
21146        /// The display-compositor may drop a frame some times (e.g. the frame missed
21147        /// the deadline, or was blocked on surface-sync, etc.)
21148        ReasonDisplayCompositor = 1,
21149        /// Frame was dropped because of the main-thread.
21150        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
21151        /// is running expensive javascript, or doing a lot of layout updates, etc.
21152        ReasonMainThread = 2,
21153        /// Frame was dropped by the client compositor.
21154        /// The client compositor can drop some frames too (e.g. attempting to
21155        /// recover latency, missing the deadline, etc.).
21156        ReasonClientCompositor = 3,
21157    }
21158    impl FrameDropReason {
21159        /// String value of the enum field names used in the ProtoBuf definition.
21160        ///
21161        /// The values are not transformed in any way and thus are considered stable
21162        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21163        pub fn as_str_name(&self) -> &'static str {
21164            match self {
21165                Self::ReasonUnspecified => "REASON_UNSPECIFIED",
21166                Self::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
21167                Self::ReasonMainThread => "REASON_MAIN_THREAD",
21168                Self::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
21169            }
21170        }
21171        /// Creates an enum from field names used in the ProtoBuf definition.
21172        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21173            match value {
21174                "REASON_UNSPECIFIED" => Some(Self::ReasonUnspecified),
21175                "REASON_DISPLAY_COMPOSITOR" => Some(Self::ReasonDisplayCompositor),
21176                "REASON_MAIN_THREAD" => Some(Self::ReasonMainThread),
21177                "REASON_CLIENT_COMPOSITOR" => Some(Self::ReasonClientCompositor),
21178                _ => None,
21179            }
21180        }
21181    }
21182    #[derive(
21183        Clone,
21184        Copy,
21185        Debug,
21186        PartialEq,
21187        Eq,
21188        Hash,
21189        PartialOrd,
21190        Ord,
21191        ::prost::Enumeration
21192    )]
21193    #[repr(i32)]
21194    pub enum ScrollState {
21195        ScrollNone = 0,
21196        ScrollMainThread = 1,
21197        ScrollCompositorThread = 2,
21198        ScrollRaster = 3,
21199        /// Used when it can't be determined whether a scroll is in progress or not.
21200        ScrollUnknown = 4,
21201    }
21202    impl ScrollState {
21203        /// String value of the enum field names used in the ProtoBuf definition.
21204        ///
21205        /// The values are not transformed in any way and thus are considered stable
21206        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21207        pub fn as_str_name(&self) -> &'static str {
21208            match self {
21209                Self::ScrollNone => "SCROLL_NONE",
21210                Self::ScrollMainThread => "SCROLL_MAIN_THREAD",
21211                Self::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
21212                Self::ScrollRaster => "SCROLL_RASTER",
21213                Self::ScrollUnknown => "SCROLL_UNKNOWN",
21214            }
21215        }
21216        /// Creates an enum from field names used in the ProtoBuf definition.
21217        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21218            match value {
21219                "SCROLL_NONE" => Some(Self::ScrollNone),
21220                "SCROLL_MAIN_THREAD" => Some(Self::ScrollMainThread),
21221                "SCROLL_COMPOSITOR_THREAD" => Some(Self::ScrollCompositorThread),
21222                "SCROLL_RASTER" => Some(Self::ScrollRaster),
21223                "SCROLL_UNKNOWN" => Some(Self::ScrollUnknown),
21224                _ => None,
21225            }
21226        }
21227    }
21228    #[derive(
21229        Clone,
21230        Copy,
21231        Debug,
21232        PartialEq,
21233        Eq,
21234        Hash,
21235        PartialOrd,
21236        Ord,
21237        ::prost::Enumeration
21238    )]
21239    #[repr(i32)]
21240    pub enum FrameType {
21241        Forked = 0,
21242        Backfill = 1,
21243    }
21244    impl FrameType {
21245        /// String value of the enum field names used in the ProtoBuf definition.
21246        ///
21247        /// The values are not transformed in any way and thus are considered stable
21248        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21249        pub fn as_str_name(&self) -> &'static str {
21250            match self {
21251                Self::Forked => "FORKED",
21252                Self::Backfill => "BACKFILL",
21253            }
21254        }
21255        /// Creates an enum from field names used in the ProtoBuf definition.
21256        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21257            match value {
21258                "FORKED" => Some(Self::Forked),
21259                "BACKFILL" => Some(Self::Backfill),
21260                _ => None,
21261            }
21262        }
21263    }
21264}
21265/// Details about one of Chrome's keyed services associated with the event.
21266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21267pub struct ChromeKeyedService {
21268    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
21269    /// Chrome, these are static strings known at compile time).
21270    #[prost(string, optional, tag = "1")]
21271    pub name: ::core::option::Option<::prost::alloc::string::String>,
21272}
21273#[derive(Clone, PartialEq, ::prost::Message)]
21274pub struct ChromeLatencyInfo {
21275    #[prost(int64, optional, tag = "1")]
21276    pub trace_id: ::core::option::Option<i64>,
21277    #[prost(enumeration = "chrome_latency_info::Step", optional, tag = "2")]
21278    pub step: ::core::option::Option<i32>,
21279    #[prost(int32, optional, tag = "3")]
21280    pub frame_tree_node_id: ::core::option::Option<i32>,
21281    #[prost(message, repeated, tag = "4")]
21282    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
21283    #[prost(bool, optional, tag = "5")]
21284    pub is_coalesced: ::core::option::Option<bool>,
21285    #[prost(int64, optional, tag = "6")]
21286    pub gesture_scroll_id: ::core::option::Option<i64>,
21287    #[prost(int64, optional, tag = "7")]
21288    pub touch_id: ::core::option::Option<i64>,
21289    /// The type of input corresponding to this `ChromeLatencyInfo`.
21290    #[prost(enumeration = "chrome_latency_info::InputType", optional, tag = "8")]
21291    pub input_type: ::core::option::Option<i32>,
21292}
21293/// Nested message and enum types in `ChromeLatencyInfo`.
21294pub mod chrome_latency_info {
21295    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21296    pub struct ComponentInfo {
21297        #[prost(enumeration = "LatencyComponentType", optional, tag = "1")]
21298        pub component_type: ::core::option::Option<i32>,
21299        /// Microsecond timestamp in CLOCK_MONOTONIC domain
21300        #[prost(uint64, optional, tag = "2")]
21301        pub time_us: ::core::option::Option<u64>,
21302    }
21303    /// NEXT ID: 12
21304    /// All step are optional but the enum is ordered (not by number) below in the
21305    /// order we expect them to appear if they are emitted in trace in a blocking
21306    /// fashion.
21307    #[derive(
21308        Clone,
21309        Copy,
21310        Debug,
21311        PartialEq,
21312        Eq,
21313        Hash,
21314        PartialOrd,
21315        Ord,
21316        ::prost::Enumeration
21317    )]
21318    #[repr(i32)]
21319    pub enum Step {
21320        Unspecified = 0,
21321        /// Emitted on the browser main thread.
21322        SendInputEventUi = 3,
21323        /// Happens on the renderer's compositor.
21324        HandleInputEventImpl = 5,
21325        DidHandleInputAndOverscroll = 8,
21326        /// Occurs on the Renderer's main thread.
21327        HandleInputEventMain = 4,
21328        MainThreadScrollUpdate = 2,
21329        HandleInputEventMainCommit = 1,
21330        /// Could be emitted on both the renderer's main OR compositor.
21331        HandledInputEventMainOrImpl = 9,
21332        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
21333        /// renderer's compositor and this will be emitted.
21334        HandledInputEventImpl = 10,
21335        /// Renderer's compositor.
21336        SwapBuffers = 6,
21337        /// Happens on the VizCompositor in the GPU process.
21338        DrawAndSwap = 7,
21339        /// Happens on the GPU main thread after the swap has completed.
21340        ///
21341        /// See above for NEXT ID, enum steps are not ordered by tag number.
21342        FinishedSwapBuffers = 11,
21343    }
21344    impl Step {
21345        /// String value of the enum field names used in the ProtoBuf definition.
21346        ///
21347        /// The values are not transformed in any way and thus are considered stable
21348        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21349        pub fn as_str_name(&self) -> &'static str {
21350            match self {
21351                Self::Unspecified => "STEP_UNSPECIFIED",
21352                Self::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
21353                Self::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
21354                Self::DidHandleInputAndOverscroll => {
21355                    "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
21356                }
21357                Self::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
21358                Self::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
21359                Self::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
21360                Self::HandledInputEventMainOrImpl => {
21361                    "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL"
21362                }
21363                Self::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
21364                Self::SwapBuffers => "STEP_SWAP_BUFFERS",
21365                Self::DrawAndSwap => "STEP_DRAW_AND_SWAP",
21366                Self::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
21367            }
21368        }
21369        /// Creates an enum from field names used in the ProtoBuf definition.
21370        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21371            match value {
21372                "STEP_UNSPECIFIED" => Some(Self::Unspecified),
21373                "STEP_SEND_INPUT_EVENT_UI" => Some(Self::SendInputEventUi),
21374                "STEP_HANDLE_INPUT_EVENT_IMPL" => Some(Self::HandleInputEventImpl),
21375                "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL" => {
21376                    Some(Self::DidHandleInputAndOverscroll)
21377                }
21378                "STEP_HANDLE_INPUT_EVENT_MAIN" => Some(Self::HandleInputEventMain),
21379                "STEP_MAIN_THREAD_SCROLL_UPDATE" => Some(Self::MainThreadScrollUpdate),
21380                "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT" => {
21381                    Some(Self::HandleInputEventMainCommit)
21382                }
21383                "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL" => {
21384                    Some(Self::HandledInputEventMainOrImpl)
21385                }
21386                "STEP_HANDLED_INPUT_EVENT_IMPL" => Some(Self::HandledInputEventImpl),
21387                "STEP_SWAP_BUFFERS" => Some(Self::SwapBuffers),
21388                "STEP_DRAW_AND_SWAP" => Some(Self::DrawAndSwap),
21389                "STEP_FINISHED_SWAP_BUFFERS" => Some(Self::FinishedSwapBuffers),
21390                _ => None,
21391            }
21392        }
21393    }
21394    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
21395    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
21396    /// practices.
21397    #[derive(
21398        Clone,
21399        Copy,
21400        Debug,
21401        PartialEq,
21402        Eq,
21403        Hash,
21404        PartialOrd,
21405        Ord,
21406        ::prost::Enumeration
21407    )]
21408    #[repr(i32)]
21409    pub enum LatencyComponentType {
21410        ComponentUnspecified = 0,
21411        ComponentInputEventLatencyBeginRwh = 1,
21412        ComponentInputEventLatencyScrollUpdateOriginal = 2,
21413        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
21414        ComponentInputEventLatencyOriginal = 4,
21415        ComponentInputEventLatencyUi = 5,
21416        ComponentInputEventLatencyRendererMain = 6,
21417        ComponentInputEventLatencyRenderingScheduledMain = 7,
21418        ComponentInputEventLatencyRenderingScheduledImpl = 8,
21419        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
21420        ComponentInputEventLatencyAckRwh = 10,
21421        ComponentInputEventLatencyRendererSwap = 11,
21422        ComponentDisplayCompositorReceivedFrame = 12,
21423        ComponentInputEventGpuSwapBuffer = 13,
21424        ComponentInputEventLatencyFrameSwap = 14,
21425    }
21426    impl LatencyComponentType {
21427        /// String value of the enum field names used in the ProtoBuf definition.
21428        ///
21429        /// The values are not transformed in any way and thus are considered stable
21430        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21431        pub fn as_str_name(&self) -> &'static str {
21432            match self {
21433                Self::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
21434                Self::ComponentInputEventLatencyBeginRwh => {
21435                    "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH"
21436                }
21437                Self::ComponentInputEventLatencyScrollUpdateOriginal => {
21438                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL"
21439                }
21440                Self::ComponentInputEventLatencyFirstScrollUpdateOriginal => {
21441                    "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL"
21442                }
21443                Self::ComponentInputEventLatencyOriginal => {
21444                    "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL"
21445                }
21446                Self::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
21447                Self::ComponentInputEventLatencyRendererMain => {
21448                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN"
21449                }
21450                Self::ComponentInputEventLatencyRenderingScheduledMain => {
21451                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN"
21452                }
21453                Self::ComponentInputEventLatencyRenderingScheduledImpl => {
21454                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL"
21455                }
21456                Self::ComponentInputEventLatencyScrollUpdateLastEvent => {
21457                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT"
21458                }
21459                Self::ComponentInputEventLatencyAckRwh => {
21460                    "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH"
21461                }
21462                Self::ComponentInputEventLatencyRendererSwap => {
21463                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP"
21464                }
21465                Self::ComponentDisplayCompositorReceivedFrame => {
21466                    "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME"
21467                }
21468                Self::ComponentInputEventGpuSwapBuffer => {
21469                    "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER"
21470                }
21471                Self::ComponentInputEventLatencyFrameSwap => {
21472                    "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP"
21473                }
21474            }
21475        }
21476        /// Creates an enum from field names used in the ProtoBuf definition.
21477        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21478            match value {
21479                "COMPONENT_UNSPECIFIED" => Some(Self::ComponentUnspecified),
21480                "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH" => {
21481                    Some(Self::ComponentInputEventLatencyBeginRwh)
21482                }
21483                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL" => {
21484                    Some(Self::ComponentInputEventLatencyScrollUpdateOriginal)
21485                }
21486                "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL" => {
21487                    Some(Self::ComponentInputEventLatencyFirstScrollUpdateOriginal)
21488                }
21489                "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL" => {
21490                    Some(Self::ComponentInputEventLatencyOriginal)
21491                }
21492                "COMPONENT_INPUT_EVENT_LATENCY_UI" => {
21493                    Some(Self::ComponentInputEventLatencyUi)
21494                }
21495                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN" => {
21496                    Some(Self::ComponentInputEventLatencyRendererMain)
21497                }
21498                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN" => {
21499                    Some(Self::ComponentInputEventLatencyRenderingScheduledMain)
21500                }
21501                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL" => {
21502                    Some(Self::ComponentInputEventLatencyRenderingScheduledImpl)
21503                }
21504                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT" => {
21505                    Some(Self::ComponentInputEventLatencyScrollUpdateLastEvent)
21506                }
21507                "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH" => {
21508                    Some(Self::ComponentInputEventLatencyAckRwh)
21509                }
21510                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP" => {
21511                    Some(Self::ComponentInputEventLatencyRendererSwap)
21512                }
21513                "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME" => {
21514                    Some(Self::ComponentDisplayCompositorReceivedFrame)
21515                }
21516                "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER" => {
21517                    Some(Self::ComponentInputEventGpuSwapBuffer)
21518                }
21519                "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP" => {
21520                    Some(Self::ComponentInputEventLatencyFrameSwap)
21521                }
21522                _ => None,
21523            }
21524        }
21525    }
21526    #[derive(
21527        Clone,
21528        Copy,
21529        Debug,
21530        PartialEq,
21531        Eq,
21532        Hash,
21533        PartialOrd,
21534        Ord,
21535        ::prost::Enumeration
21536    )]
21537    #[repr(i32)]
21538    pub enum InputType {
21539        UnspecifiedOrOther = 0,
21540        TouchMoved = 1,
21541        GestureScrollBegin = 2,
21542        GestureScrollUpdate = 3,
21543        GestureScrollEnd = 4,
21544        GestureTap = 5,
21545        GestureTapCancel = 6,
21546    }
21547    impl InputType {
21548        /// String value of the enum field names used in the ProtoBuf definition.
21549        ///
21550        /// The values are not transformed in any way and thus are considered stable
21551        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21552        pub fn as_str_name(&self) -> &'static str {
21553            match self {
21554                Self::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
21555                Self::TouchMoved => "TOUCH_MOVED",
21556                Self::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
21557                Self::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
21558                Self::GestureScrollEnd => "GESTURE_SCROLL_END",
21559                Self::GestureTap => "GESTURE_TAP",
21560                Self::GestureTapCancel => "GESTURE_TAP_CANCEL",
21561            }
21562        }
21563        /// Creates an enum from field names used in the ProtoBuf definition.
21564        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21565            match value {
21566                "UNSPECIFIED_OR_OTHER" => Some(Self::UnspecifiedOrOther),
21567                "TOUCH_MOVED" => Some(Self::TouchMoved),
21568                "GESTURE_SCROLL_BEGIN" => Some(Self::GestureScrollBegin),
21569                "GESTURE_SCROLL_UPDATE" => Some(Self::GestureScrollUpdate),
21570                "GESTURE_SCROLL_END" => Some(Self::GestureScrollEnd),
21571                "GESTURE_TAP" => Some(Self::GestureTap),
21572                "GESTURE_TAP_CANCEL" => Some(Self::GestureTapCancel),
21573                _ => None,
21574            }
21575        }
21576    }
21577}
21578/// Details about a legacy Chrome IPC message that is either sent by the event.
21579/// TODO(eseckler): Also use this message on the receiving side?
21580#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21581pub struct ChromeLegacyIpc {
21582    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
21583    /// enum, e.g. FrameMsgStart,
21584    #[prost(enumeration = "chrome_legacy_ipc::MessageClass", optional, tag = "1")]
21585    pub message_class: ::core::option::Option<i32>,
21586    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
21587    /// IPC_MESSAGE_START macros.
21588    #[prost(uint32, optional, tag = "2")]
21589    pub message_line: ::core::option::Option<u32>,
21590}
21591/// Nested message and enum types in `ChromeLegacyIpc`.
21592pub mod chrome_legacy_ipc {
21593    #[derive(
21594        Clone,
21595        Copy,
21596        Debug,
21597        PartialEq,
21598        Eq,
21599        Hash,
21600        PartialOrd,
21601        Ord,
21602        ::prost::Enumeration
21603    )]
21604    #[repr(i32)]
21605    pub enum MessageClass {
21606        ClassUnspecified = 0,
21607        ClassAutomation = 1,
21608        ClassFrame = 2,
21609        ClassPage = 3,
21610        ClassView = 4,
21611        ClassWidget = 5,
21612        ClassInput = 6,
21613        ClassTest = 7,
21614        ClassWorker = 8,
21615        ClassNacl = 9,
21616        ClassGpuChannel = 10,
21617        ClassMedia = 11,
21618        ClassPpapi = 12,
21619        ClassChrome = 13,
21620        ClassDrag = 14,
21621        ClassPrint = 15,
21622        ClassExtension = 16,
21623        ClassTextInputClient = 17,
21624        ClassBlinkTest = 18,
21625        ClassAccessibility = 19,
21626        ClassPrerender = 20,
21627        ClassChromoting = 21,
21628        ClassBrowserPlugin = 22,
21629        ClassAndroidWebView = 23,
21630        ClassNaclHost = 24,
21631        ClassEncryptedMedia = 25,
21632        ClassCast = 26,
21633        ClassGinJavaBridge = 27,
21634        ClassChromeUtilityPrinting = 28,
21635        ClassOzoneGpu = 29,
21636        ClassWebTest = 30,
21637        ClassNetworkHints = 31,
21638        ClassExtensionsGuestView = 32,
21639        ClassGuestView = 33,
21640        ClassMediaPlayerDelegate = 34,
21641        ClassExtensionWorker = 35,
21642        ClassSubresourceFilter = 36,
21643        ClassUnfreezableFrame = 37,
21644    }
21645    impl MessageClass {
21646        /// String value of the enum field names used in the ProtoBuf definition.
21647        ///
21648        /// The values are not transformed in any way and thus are considered stable
21649        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21650        pub fn as_str_name(&self) -> &'static str {
21651            match self {
21652                Self::ClassUnspecified => "CLASS_UNSPECIFIED",
21653                Self::ClassAutomation => "CLASS_AUTOMATION",
21654                Self::ClassFrame => "CLASS_FRAME",
21655                Self::ClassPage => "CLASS_PAGE",
21656                Self::ClassView => "CLASS_VIEW",
21657                Self::ClassWidget => "CLASS_WIDGET",
21658                Self::ClassInput => "CLASS_INPUT",
21659                Self::ClassTest => "CLASS_TEST",
21660                Self::ClassWorker => "CLASS_WORKER",
21661                Self::ClassNacl => "CLASS_NACL",
21662                Self::ClassGpuChannel => "CLASS_GPU_CHANNEL",
21663                Self::ClassMedia => "CLASS_MEDIA",
21664                Self::ClassPpapi => "CLASS_PPAPI",
21665                Self::ClassChrome => "CLASS_CHROME",
21666                Self::ClassDrag => "CLASS_DRAG",
21667                Self::ClassPrint => "CLASS_PRINT",
21668                Self::ClassExtension => "CLASS_EXTENSION",
21669                Self::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
21670                Self::ClassBlinkTest => "CLASS_BLINK_TEST",
21671                Self::ClassAccessibility => "CLASS_ACCESSIBILITY",
21672                Self::ClassPrerender => "CLASS_PRERENDER",
21673                Self::ClassChromoting => "CLASS_CHROMOTING",
21674                Self::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
21675                Self::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
21676                Self::ClassNaclHost => "CLASS_NACL_HOST",
21677                Self::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
21678                Self::ClassCast => "CLASS_CAST",
21679                Self::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
21680                Self::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
21681                Self::ClassOzoneGpu => "CLASS_OZONE_GPU",
21682                Self::ClassWebTest => "CLASS_WEB_TEST",
21683                Self::ClassNetworkHints => "CLASS_NETWORK_HINTS",
21684                Self::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
21685                Self::ClassGuestView => "CLASS_GUEST_VIEW",
21686                Self::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
21687                Self::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
21688                Self::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
21689                Self::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
21690            }
21691        }
21692        /// Creates an enum from field names used in the ProtoBuf definition.
21693        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21694            match value {
21695                "CLASS_UNSPECIFIED" => Some(Self::ClassUnspecified),
21696                "CLASS_AUTOMATION" => Some(Self::ClassAutomation),
21697                "CLASS_FRAME" => Some(Self::ClassFrame),
21698                "CLASS_PAGE" => Some(Self::ClassPage),
21699                "CLASS_VIEW" => Some(Self::ClassView),
21700                "CLASS_WIDGET" => Some(Self::ClassWidget),
21701                "CLASS_INPUT" => Some(Self::ClassInput),
21702                "CLASS_TEST" => Some(Self::ClassTest),
21703                "CLASS_WORKER" => Some(Self::ClassWorker),
21704                "CLASS_NACL" => Some(Self::ClassNacl),
21705                "CLASS_GPU_CHANNEL" => Some(Self::ClassGpuChannel),
21706                "CLASS_MEDIA" => Some(Self::ClassMedia),
21707                "CLASS_PPAPI" => Some(Self::ClassPpapi),
21708                "CLASS_CHROME" => Some(Self::ClassChrome),
21709                "CLASS_DRAG" => Some(Self::ClassDrag),
21710                "CLASS_PRINT" => Some(Self::ClassPrint),
21711                "CLASS_EXTENSION" => Some(Self::ClassExtension),
21712                "CLASS_TEXT_INPUT_CLIENT" => Some(Self::ClassTextInputClient),
21713                "CLASS_BLINK_TEST" => Some(Self::ClassBlinkTest),
21714                "CLASS_ACCESSIBILITY" => Some(Self::ClassAccessibility),
21715                "CLASS_PRERENDER" => Some(Self::ClassPrerender),
21716                "CLASS_CHROMOTING" => Some(Self::ClassChromoting),
21717                "CLASS_BROWSER_PLUGIN" => Some(Self::ClassBrowserPlugin),
21718                "CLASS_ANDROID_WEB_VIEW" => Some(Self::ClassAndroidWebView),
21719                "CLASS_NACL_HOST" => Some(Self::ClassNaclHost),
21720                "CLASS_ENCRYPTED_MEDIA" => Some(Self::ClassEncryptedMedia),
21721                "CLASS_CAST" => Some(Self::ClassCast),
21722                "CLASS_GIN_JAVA_BRIDGE" => Some(Self::ClassGinJavaBridge),
21723                "CLASS_CHROME_UTILITY_PRINTING" => Some(Self::ClassChromeUtilityPrinting),
21724                "CLASS_OZONE_GPU" => Some(Self::ClassOzoneGpu),
21725                "CLASS_WEB_TEST" => Some(Self::ClassWebTest),
21726                "CLASS_NETWORK_HINTS" => Some(Self::ClassNetworkHints),
21727                "CLASS_EXTENSIONS_GUEST_VIEW" => Some(Self::ClassExtensionsGuestView),
21728                "CLASS_GUEST_VIEW" => Some(Self::ClassGuestView),
21729                "CLASS_MEDIA_PLAYER_DELEGATE" => Some(Self::ClassMediaPlayerDelegate),
21730                "CLASS_EXTENSION_WORKER" => Some(Self::ClassExtensionWorker),
21731                "CLASS_SUBRESOURCE_FILTER" => Some(Self::ClassSubresourceFilter),
21732                "CLASS_UNFREEZABLE_FRAME" => Some(Self::ClassUnfreezableFrame),
21733                _ => None,
21734            }
21735        }
21736    }
21737}
21738/// Details about Chrome message pump events
21739#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21740pub struct ChromeMessagePump {
21741    /// True if there are sent messages in the queue.
21742    #[prost(bool, optional, tag = "1")]
21743    pub sent_messages_in_queue: ::core::option::Option<bool>,
21744    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
21745    /// invoke.
21746    #[prost(uint64, optional, tag = "2")]
21747    pub io_handler_location_iid: ::core::option::Option<u64>,
21748}
21749/// Contains information to identify mojo handling events. The trace events in
21750/// mojo are common for all mojo interfaces and this information is used to
21751/// identify who is the caller or callee.
21752#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21753pub struct ChromeMojoEventInfo {
21754    /// Contains the interface name or the file name of the creator of a mojo
21755    /// handle watcher, recorded when an event if notified to the watcher. The code
21756    /// that runs within the track event belongs to the interface.
21757    #[prost(string, optional, tag = "1")]
21758    pub watcher_notify_interface_tag: ::core::option::Option<
21759        ::prost::alloc::string::String,
21760    >,
21761    /// The hash of the IPC message that is being handled.
21762    #[prost(uint32, optional, tag = "2")]
21763    pub ipc_hash: ::core::option::Option<u32>,
21764    /// A static string representing the mojo interface name of the message that is
21765    /// being handled.
21766    #[prost(string, optional, tag = "3")]
21767    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
21768    /// Refers to an interned UnsymbolizedSourceLocation.
21769    /// The UnsymbolizedSourceLocation contains the interface method that's being
21770    /// handled, represented as a native symbol.
21771    /// The native symbol can be symbolized after the trace is recorded.
21772    /// Not using a symbolized source location for official Chromium builds to
21773    /// reduce binary size - emitting file/function names as strings into the
21774    /// trace requires storing them in the binary, which causes a significant
21775    /// binary size bloat for Chromium.
21776    #[prost(uint64, optional, tag = "4")]
21777    pub mojo_interface_method_iid: ::core::option::Option<u64>,
21778    /// Indicate whether this is a message or reply.
21779    #[prost(bool, optional, tag = "5")]
21780    pub is_reply: ::core::option::Option<bool>,
21781    /// The payload size of the message being sent through mojo messages.
21782    #[prost(uint64, optional, tag = "6")]
21783    pub payload_size: ::core::option::Option<u64>,
21784    /// Represents the size of the message. Includes all headers and user payload.
21785    #[prost(uint64, optional, tag = "7")]
21786    pub data_num_bytes: ::core::option::Option<u64>,
21787}
21788#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21789pub struct ChromeRendererSchedulerState {
21790    #[prost(enumeration = "ChromeRailMode", optional, tag = "1")]
21791    pub rail_mode: ::core::option::Option<i32>,
21792    #[prost(bool, optional, tag = "2")]
21793    pub is_backgrounded: ::core::option::Option<bool>,
21794    #[prost(bool, optional, tag = "3")]
21795    pub is_hidden: ::core::option::Option<bool>,
21796}
21797/// Details about a UI interaction initiated by the user, such as opening or
21798/// closing a tab or a context menu.
21799#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21800pub struct ChromeUserEvent {
21801    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
21802    /// Chrome, these are usually static strings known at compile time, or
21803    /// concatenations of multiple such static strings).
21804    #[prost(string, optional, tag = "1")]
21805    pub action: ::core::option::Option<::prost::alloc::string::String>,
21806    /// MD5 hash of the action string.
21807    #[prost(uint64, optional, tag = "2")]
21808    pub action_hash: ::core::option::Option<u64>,
21809}
21810/// Details about HWNDMessageHandler trace events.
21811#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21812pub struct ChromeWindowHandleEventInfo {
21813    #[prost(uint32, optional, tag = "1")]
21814    pub dpi: ::core::option::Option<u32>,
21815    #[prost(uint32, optional, tag = "2")]
21816    pub message_id: ::core::option::Option<u32>,
21817    #[prost(fixed64, optional, tag = "3")]
21818    pub hwnd_ptr: ::core::option::Option<u64>,
21819}
21820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21821pub struct Screenshot {
21822    /// The JPEG (Joint Photographic Experts Group) file format.
21823    #[prost(bytes = "vec", optional, tag = "1")]
21824    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21825    /// The PAM (Portable Arbitrary Map) file format.
21826    #[prost(bytes = "vec", optional, tag = "2")]
21827    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21828    /// The PPM (Portable Pixmap) file format.
21829    #[prost(bytes = "vec", optional, tag = "3")]
21830    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21831}
21832/// TrackEvent arguments describing the execution of a task.
21833#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21834pub struct TaskExecution {
21835    /// Source location that the task was posted from.
21836    /// interned SourceLocation.
21837    #[prost(uint64, optional, tag = "1")]
21838    pub posted_from_iid: ::core::option::Option<u64>,
21839}
21840/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
21841/// which describe activity on a track, such as a thread or asynchronous event
21842/// track. The track is specified using separate TrackDescriptor messages and
21843/// referred to via the track's UUID.
21844///
21845/// A simple TrackEvent packet specifies a timestamp, category, name and type:
21846/// ```protobuf
21847///    trace_packet {
21848///      timestamp: 1000
21849///      track_event {
21850///        categories: \["my_cat"\]
21851///        name: "my_event"
21852///        type: TYPE_INSTANT
21853///       }
21854///     }
21855/// ```
21856///
21857/// To associate an event with a custom track (e.g. a thread), the track is
21858/// defined in a separate packet and referred to from the TrackEvent by its UUID:
21859/// ```protobuf
21860///    trace_packet {
21861///      track_descriptor {
21862///        track_uuid: 1234
21863///        name: "my_track"
21864///
21865///        // Optionally, associate the track with a thread.
21866///        thread_descriptor {
21867///          pid: 10
21868///          tid: 10
21869///          ..
21870///        }
21871///      }
21872///    }
21873/// ```
21874///
21875/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
21876///
21877/// ```protobuf
21878///    trace_packet {
21879///      timestamp: 1200
21880///      track_event {
21881///        track_uuid: 1234
21882///        categories: \["my_cat"\]
21883///        name: "my_slice"
21884///        type: TYPE_SLICE_BEGIN
21885///      }
21886///    }
21887///    trace_packet {
21888///      timestamp: 1400
21889///      track_event {
21890///        track_uuid: 1234
21891///        type: TYPE_SLICE_END
21892///      }
21893///    }
21894/// ```
21895/// TrackEvents also support optimizations to reduce data repetition and encoded
21896/// data size, e.g. through data interning (names, categories, ...) and delta
21897/// encoding of timestamps/counters. For details, see the InternedData message.
21898/// Further, default values for attributes of events on the same sequence (e.g.
21899/// their default track association) can be emitted as part of a
21900/// TrackEventDefaults message.
21901///
21902/// Next reserved id: 13 (up to 15). Next id: 58.
21903#[derive(Clone, PartialEq, ::prost::Message)]
21904pub struct TrackEvent {
21905    /// Names of categories of the event. In the client library, categories are a
21906    /// way to turn groups of individual events on or off.
21907    /// interned EventCategoryName.
21908    #[prost(uint64, repeated, packed = "false", tag = "3")]
21909    pub category_iids: ::prost::alloc::vec::Vec<u64>,
21910    /// non-interned variant.
21911    #[prost(string, repeated, tag = "22")]
21912    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21913    #[prost(enumeration = "track_event::Type", optional, tag = "9")]
21914    pub r#type: ::core::option::Option<i32>,
21915    /// Identifies the track of the event. The default value may be overridden
21916    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
21917    /// sequence (in most cases sequence = one thread). If no value is specified
21918    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
21919    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
21920    #[prost(uint64, optional, tag = "11")]
21921    pub track_uuid: ::core::option::Option<u64>,
21922    /// To encode counter values more efficiently, we support attaching additional
21923    /// counter values to a TrackEvent of any type. All values will share the same
21924    /// timestamp specified in the TracePacket. The value at
21925    /// extra_counter_values\[N\] is for the counter track referenced by
21926    /// extra_counter_track_uuids\[N\].
21927    ///
21928    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
21929    /// should always be equal or more uuids than values. It is valid to set more
21930    /// uuids (e.g. via defaults) than values. If uuids are specified in
21931    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
21932    /// default uuid list.
21933    ///
21934    /// For example, this allows snapshotting the thread time clock at each
21935    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
21936    #[prost(uint64, repeated, packed = "false", tag = "31")]
21937    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21938    #[prost(int64, repeated, packed = "false", tag = "12")]
21939    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
21940    /// Counter snapshots using floating point instead of integer values.
21941    #[prost(uint64, repeated, packed = "false", tag = "45")]
21942    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
21943    #[prost(double, repeated, packed = "false", tag = "46")]
21944    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
21945    /// IDs of flows originating, passing through, or ending at this event.
21946    /// Flow IDs are global within a trace.
21947    ///
21948    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
21949    /// an input event may be handled on one thread but cause another event on
21950    /// a different thread - a flow between the two events can associate them.
21951    ///
21952    /// The direction of the flows between events is inferred from the events'
21953    /// timestamps. The earliest event with the same flow ID becomes the source
21954    /// of the flow. Any events thereafter are intermediate steps of the flow,
21955    /// until the flow terminates at the last event with the flow ID.
21956    ///
21957    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
21958    /// that the same ID can later be reused for another flow.
21959    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
21960    #[deprecated]
21961    #[prost(uint64, repeated, packed = "false", tag = "36")]
21962    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
21963    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
21964    /// consumption.
21965    #[prost(fixed64, repeated, packed = "false", tag = "47")]
21966    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
21967    /// List of flow ids which should terminate on this event, otherwise same as
21968    /// |flow_ids|.
21969    /// Any one flow ID should be either listed as part of |flow_ids| OR
21970    /// |terminating_flow_ids|, not both.
21971    /// DEPRECATED. Only kept for backwards compatibility.  Use
21972    /// |terminating_flow_ids|.
21973    #[deprecated]
21974    #[prost(uint64, repeated, packed = "false", tag = "42")]
21975    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
21976    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
21977    /// "terminating_flow_ids" to reduce memory consumption.
21978    #[prost(fixed64, repeated, packed = "false", tag = "48")]
21979    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
21980    /// An optional additive value attributed to this callstack occurrence. When
21981    /// present, weighted callstack aggregations only include occurrences which
21982    /// have this field set; they do not mix weighted and unweighted samples.
21983    /// Consumers can use sample count as a separate fallback measure when no
21984    /// weighted occurrences are available.
21985    #[prost(double, optional, tag = "57")]
21986    pub callstack_weight: ::core::option::Option<f64>,
21987    /// Debug annotations associated with this event. These are arbitrary key-value
21988    /// pairs that can be used to attach additional information to the event.
21989    /// See DebugAnnotation message for details on supported value types.
21990    ///
21991    /// For example, debug annotations can be used to attach a URL or resource
21992    /// identifier to a network request event. Arrays, dictionaries and full
21993    /// nested structures (e.g. arrays of dictionaries of dictionaries)
21994    /// are supported.
21995    #[prost(message, repeated, tag = "4")]
21996    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
21997    /// Typed event arguments:
21998    #[prost(message, optional, tag = "5")]
21999    pub task_execution: ::core::option::Option<TaskExecution>,
22000    #[prost(message, optional, tag = "21")]
22001    pub log_message: ::core::option::Option<LogMessage>,
22002    #[prost(message, optional, tag = "24")]
22003    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
22004    #[prost(message, optional, tag = "25")]
22005    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
22006    #[prost(message, optional, tag = "26")]
22007    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
22008    #[prost(message, optional, tag = "27")]
22009    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
22010    #[prost(message, optional, tag = "28")]
22011    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
22012    #[prost(message, optional, tag = "29")]
22013    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
22014    /// DEPRECATED. Only kept for backwards compatibility. Use the
22015    /// |ChromeTrackEvent.frame_reporter| extension in
22016    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
22017    /// instead.
22018    #[deprecated]
22019    #[prost(message, optional, tag = "32")]
22020    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
22021    #[prost(message, optional, tag = "39")]
22022    pub chrome_application_state_info: ::core::option::Option<
22023        ChromeApplicationStateInfo,
22024    >,
22025    #[prost(message, optional, tag = "40")]
22026    pub chrome_renderer_scheduler_state: ::core::option::Option<
22027        ChromeRendererSchedulerState,
22028    >,
22029    #[prost(message, optional, tag = "41")]
22030    pub chrome_window_handle_event_info: ::core::option::Option<
22031        ChromeWindowHandleEventInfo,
22032    >,
22033    #[prost(message, optional, tag = "43")]
22034    pub chrome_content_settings_event_info: ::core::option::Option<
22035        ChromeContentSettingsEventInfo,
22036    >,
22037    #[prost(message, optional, tag = "49")]
22038    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
22039    #[prost(message, optional, tag = "50")]
22040    pub screenshot: ::core::option::Option<Screenshot>,
22041    #[prost(message, optional, tag = "35")]
22042    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
22043    #[prost(message, optional, tag = "38")]
22044    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
22045    #[prost(message, optional, tag = "6")]
22046    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
22047    /// Optional name of the event for its display in trace viewer. May be left
22048    /// unspecified for events with typed arguments.
22049    ///
22050    /// Note that metrics should not rely on event names, as they are prone to
22051    /// changing. Instead, they should use typed arguments to identify the events
22052    /// they are interested in.
22053    #[prost(oneof = "track_event::NameField", tags = "10, 23")]
22054    pub name_field: ::core::option::Option<track_event::NameField>,
22055    /// A new value for a counter track. |track_uuid| should refer to a track with
22056    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22057    /// efficient encoding of counter values that are sampled at the beginning/end
22058    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22059    /// Counter values can optionally be encoded in as delta values (positive or
22060    /// negative) on each packet sequence (see CounterIncrementalBase).
22061    #[prost(oneof = "track_event::CounterValueField", tags = "30, 44")]
22062    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
22063    /// An opaque identifier to correlate this slice with other slices that are
22064    /// considered part of the same logical operation, even if they are not
22065    /// causally connected. Examples uses of a correlation id might be the number
22066    /// of frame going through various stages of rendering in a GPU, the id for an
22067    /// RPC request going through a distributed system, or the id of a network
22068    /// request going through various stages of processing by the kernel.
22069    ///
22070    /// NOTE: if the events *are* causually connected, you probably want to use
22071    /// flows instead of OR in addition to correlation ids.
22072    ///
22073    /// UIs can use this identifier to visually link these slices, for instance,
22074    /// by assigning them a consistent color or highlighting the entire correlated
22075    /// set when one slice is hovered.
22076    ///
22077    /// Only one field within this 'oneof' should be set to define the correlation.
22078    #[prost(oneof = "track_event::CorrelationIdField", tags = "52, 53, 54")]
22079    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
22080    /// Callstack associated with this event. This captures the program stack at
22081    /// the time the event occurred, useful for understanding what code path led
22082    /// to the event.
22083    ///
22084    /// Two variants are supported:
22085    /// - callstack: Inline callstack data (simpler when trace size is not a
22086    ///    concern or callstacks are unique)
22087    /// - callstack_iid: Reference to an interned Callstack in InternedData
22088    ///    (efficient for repeated callstacks)
22089    ///
22090    /// Only one of these fields should be set.
22091    #[prost(oneof = "track_event::CallstackField", tags = "55, 56")]
22092    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
22093    /// This field is used only if the source location represents the function that
22094    /// executes during this event.
22095    #[prost(oneof = "track_event::SourceLocationField", tags = "33, 34")]
22096    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
22097    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22098    /// TracePacket instead.
22099    ///
22100    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22101    #[prost(oneof = "track_event::Timestamp", tags = "1, 16")]
22102    pub timestamp: ::core::option::Option<track_event::Timestamp>,
22103    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22104    /// encode thread time instead.
22105    ///
22106    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22107    /// microseconds.
22108    #[prost(oneof = "track_event::ThreadTime", tags = "2, 17")]
22109    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
22110    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22111    /// encode thread instruction count instead.
22112    ///
22113    /// Value of the instruction counter for the current thread.
22114    #[prost(oneof = "track_event::ThreadInstructionCount", tags = "8, 20")]
22115    pub thread_instruction_count: ::core::option::Option<
22116        track_event::ThreadInstructionCount,
22117    >,
22118}
22119/// Nested message and enum types in `TrackEvent`.
22120pub mod track_event {
22121    /// Inline callstack for TrackEvents when interning is not needed.
22122    /// This is a simplified version of the profiling Callstack/Frame messages,
22123    /// designed for cases where trace size is not critical or callstacks are
22124    /// unique.
22125    ///
22126    /// Use this for simple callstacks with function names and source locations.
22127    /// For binary/library information (mappings, build IDs, relative PCs), use
22128    /// interned callstacks via callstack_iid instead.
22129    #[derive(Clone, PartialEq, ::prost::Message)]
22130    pub struct InlineCallstack {
22131        /// Frames of this callstack, ordered from bottom (outermost) to top
22132        /// (innermost). For example, if main() calls foo() which calls bar(), the
22133        /// frames would be: \[main, foo, bar\]
22134        #[prost(message, repeated, tag = "1")]
22135        pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
22136    }
22137    /// Nested message and enum types in `InlineCallstack`.
22138    pub mod inline_callstack {
22139        /// Frame within an inline callstack.
22140        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22141        pub struct Frame {
22142            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
22143            #[prost(string, optional, tag = "1")]
22144            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
22145            /// Optional: Source file path, e.g., "/src/foo.cc"
22146            #[prost(string, optional, tag = "2")]
22147            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
22148            /// Optional: Line number in the source file
22149            #[prost(uint32, optional, tag = "3")]
22150            pub line_number: ::core::option::Option<u32>,
22151        }
22152    }
22153    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
22154    /// event attributes are initially simply proxied for conversion to a JSON
22155    /// trace. We intend to gradually transition these attributes to similar native
22156    /// features in TrackEvent (e.g. async + flow events), or deprecate them
22157    /// without replacement where transition is unsuitable.
22158    ///
22159    /// Next reserved id: 16 (up to 16).
22160    /// Next id: 20.
22161    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22162    pub struct LegacyEvent {
22163        /// Deprecated, use TrackEvent::name(_iid) instead.
22164        /// interned EventName.
22165        #[prost(uint64, optional, tag = "1")]
22166        pub name_iid: ::core::option::Option<u64>,
22167        #[prost(int32, optional, tag = "2")]
22168        pub phase: ::core::option::Option<i32>,
22169        #[prost(int64, optional, tag = "3")]
22170        pub duration_us: ::core::option::Option<i64>,
22171        #[prost(int64, optional, tag = "4")]
22172        pub thread_duration_us: ::core::option::Option<i64>,
22173        /// Elapsed retired instruction count during the event.
22174        #[prost(int64, optional, tag = "15")]
22175        pub thread_instruction_delta: ::core::option::Option<i64>,
22176        /// Additional optional scope for |id|.
22177        #[prost(string, optional, tag = "7")]
22178        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
22179        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
22180        #[prost(bool, optional, tag = "9")]
22181        pub use_async_tts: ::core::option::Option<bool>,
22182        /// Idenfifies a flow. Flow events with the same bind_id are connected.
22183        #[prost(uint64, optional, tag = "8")]
22184        pub bind_id: ::core::option::Option<u64>,
22185        /// Use the enclosing slice as binding point for a flow end event instead of
22186        /// the next slice. Flow start/step events always bind to the enclosing
22187        /// slice.
22188        #[prost(bool, optional, tag = "12")]
22189        pub bind_to_enclosing: ::core::option::Option<bool>,
22190        #[prost(enumeration = "legacy_event::FlowDirection", optional, tag = "13")]
22191        pub flow_direction: ::core::option::Option<i32>,
22192        #[prost(enumeration = "legacy_event::InstantEventScope", optional, tag = "14")]
22193        pub instant_event_scope: ::core::option::Option<i32>,
22194        /// Override the pid/tid if the writer needs to emit events on behalf of
22195        /// another process/thread. This should be the exception. Normally, the
22196        /// pid+tid from ThreadDescriptor is used.
22197        #[prost(int32, optional, tag = "18")]
22198        pub pid_override: ::core::option::Option<i32>,
22199        #[prost(int32, optional, tag = "19")]
22200        pub tid_override: ::core::option::Option<i32>,
22201        #[prost(oneof = "legacy_event::Id", tags = "6, 10, 11")]
22202        pub id: ::core::option::Option<legacy_event::Id>,
22203    }
22204    /// Nested message and enum types in `LegacyEvent`.
22205    pub mod legacy_event {
22206        #[derive(
22207            Clone,
22208            Copy,
22209            Debug,
22210            PartialEq,
22211            Eq,
22212            Hash,
22213            PartialOrd,
22214            Ord,
22215            ::prost::Enumeration
22216        )]
22217        #[repr(i32)]
22218        pub enum FlowDirection {
22219            FlowUnspecified = 0,
22220            FlowIn = 1,
22221            FlowOut = 2,
22222            FlowInout = 3,
22223        }
22224        impl FlowDirection {
22225            /// String value of the enum field names used in the ProtoBuf definition.
22226            ///
22227            /// The values are not transformed in any way and thus are considered stable
22228            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22229            pub fn as_str_name(&self) -> &'static str {
22230                match self {
22231                    Self::FlowUnspecified => "FLOW_UNSPECIFIED",
22232                    Self::FlowIn => "FLOW_IN",
22233                    Self::FlowOut => "FLOW_OUT",
22234                    Self::FlowInout => "FLOW_INOUT",
22235                }
22236            }
22237            /// Creates an enum from field names used in the ProtoBuf definition.
22238            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22239                match value {
22240                    "FLOW_UNSPECIFIED" => Some(Self::FlowUnspecified),
22241                    "FLOW_IN" => Some(Self::FlowIn),
22242                    "FLOW_OUT" => Some(Self::FlowOut),
22243                    "FLOW_INOUT" => Some(Self::FlowInout),
22244                    _ => None,
22245                }
22246            }
22247        }
22248        #[derive(
22249            Clone,
22250            Copy,
22251            Debug,
22252            PartialEq,
22253            Eq,
22254            Hash,
22255            PartialOrd,
22256            Ord,
22257            ::prost::Enumeration
22258        )]
22259        #[repr(i32)]
22260        pub enum InstantEventScope {
22261            ScopeUnspecified = 0,
22262            ScopeGlobal = 1,
22263            ScopeProcess = 2,
22264            ScopeThread = 3,
22265        }
22266        impl InstantEventScope {
22267            /// String value of the enum field names used in the ProtoBuf definition.
22268            ///
22269            /// The values are not transformed in any way and thus are considered stable
22270            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22271            pub fn as_str_name(&self) -> &'static str {
22272                match self {
22273                    Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
22274                    Self::ScopeGlobal => "SCOPE_GLOBAL",
22275                    Self::ScopeProcess => "SCOPE_PROCESS",
22276                    Self::ScopeThread => "SCOPE_THREAD",
22277                }
22278            }
22279            /// Creates an enum from field names used in the ProtoBuf definition.
22280            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22281                match value {
22282                    "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
22283                    "SCOPE_GLOBAL" => Some(Self::ScopeGlobal),
22284                    "SCOPE_PROCESS" => Some(Self::ScopeProcess),
22285                    "SCOPE_THREAD" => Some(Self::ScopeThread),
22286                    _ => None,
22287                }
22288            }
22289        }
22290        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22291        pub enum Id {
22292            #[prost(uint64, tag = "6")]
22293            UnscopedId(u64),
22294            #[prost(uint64, tag = "10")]
22295            LocalId(u64),
22296            #[prost(uint64, tag = "11")]
22297            GlobalId(u64),
22298        }
22299    }
22300    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
22301    #[derive(
22302        Clone,
22303        Copy,
22304        Debug,
22305        PartialEq,
22306        Eq,
22307        Hash,
22308        PartialOrd,
22309        Ord,
22310        ::prost::Enumeration
22311    )]
22312    #[repr(i32)]
22313    pub enum Type {
22314        Unspecified = 0,
22315        /// Slice events are events that have a begin and end timestamp, i.e. a
22316        /// duration. They can be nested similar to a callstack: If, on the same
22317        /// track, event B begins after event A, but before A ends, B is a child
22318        /// event of A and will be drawn as a nested event underneath A in the UI.
22319        /// Note that child events should always end before their parents (e.g. B
22320        /// before A).
22321        ///
22322        /// Each slice event is formed by a pair of BEGIN + END events. The END event
22323        /// does not need to repeat any TrackEvent fields it has in common with its
22324        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
22325        /// END pair will be merged during trace import.
22326        ///
22327        /// Note that we deliberately chose not to support COMPLETE events (which
22328        /// would specify a duration directly) since clients would need to delay
22329        /// writing them until the slice is completed, which can result in reordered
22330        /// events in the trace and loss of unfinished events at the end of a trace.
22331        SliceBegin = 1,
22332        SliceEnd = 2,
22333        /// Instant events are nestable events without duration. They can be children
22334        /// of slice events on the same track.
22335        Instant = 3,
22336        /// Event that provides a value for a counter track. |track_uuid| should
22337        /// refer to a counter track and |counter_value| set to the new value. Note
22338        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
22339        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
22340        Counter = 4,
22341        /// Event that provides a state value update for a state track. Think of this
22342        /// as a symbolic counter (a TYPE_COUNTER with literals rather then numbers).
22343        /// |track_uuid| should refer to a state track, and the state value update is
22344        /// carried in the |state| field. An empty or unset state field indicates "no
22345        /// state" / "idle". For more details, see
22346        /// [RFC-0023](<https://github.com/google/perfetto/discussions/5549>).
22347        State = 5,
22348    }
22349    impl Type {
22350        /// String value of the enum field names used in the ProtoBuf definition.
22351        ///
22352        /// The values are not transformed in any way and thus are considered stable
22353        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22354        pub fn as_str_name(&self) -> &'static str {
22355            match self {
22356                Self::Unspecified => "TYPE_UNSPECIFIED",
22357                Self::SliceBegin => "TYPE_SLICE_BEGIN",
22358                Self::SliceEnd => "TYPE_SLICE_END",
22359                Self::Instant => "TYPE_INSTANT",
22360                Self::Counter => "TYPE_COUNTER",
22361                Self::State => "TYPE_STATE",
22362            }
22363        }
22364        /// Creates an enum from field names used in the ProtoBuf definition.
22365        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22366            match value {
22367                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
22368                "TYPE_SLICE_BEGIN" => Some(Self::SliceBegin),
22369                "TYPE_SLICE_END" => Some(Self::SliceEnd),
22370                "TYPE_INSTANT" => Some(Self::Instant),
22371                "TYPE_COUNTER" => Some(Self::Counter),
22372                "TYPE_STATE" => Some(Self::State),
22373                _ => None,
22374            }
22375        }
22376    }
22377    /// Optional name of the event for its display in trace viewer. May be left
22378    /// unspecified for events with typed arguments.
22379    ///
22380    /// Note that metrics should not rely on event names, as they are prone to
22381    /// changing. Instead, they should use typed arguments to identify the events
22382    /// they are interested in.
22383    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22384    pub enum NameField {
22385        /// interned EventName.
22386        #[prost(uint64, tag = "10")]
22387        NameIid(u64),
22388        /// non-interned variant.
22389        #[prost(string, tag = "23")]
22390        Name(::prost::alloc::string::String),
22391    }
22392    /// A new value for a counter track. |track_uuid| should refer to a track with
22393    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
22394    /// efficient encoding of counter values that are sampled at the beginning/end
22395    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
22396    /// Counter values can optionally be encoded in as delta values (positive or
22397    /// negative) on each packet sequence (see CounterIncrementalBase).
22398    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
22399    pub enum CounterValueField {
22400        #[prost(int64, tag = "30")]
22401        CounterValue(i64),
22402        #[prost(double, tag = "44")]
22403        DoubleCounterValue(f64),
22404    }
22405    /// An opaque identifier to correlate this slice with other slices that are
22406    /// considered part of the same logical operation, even if they are not
22407    /// causally connected. Examples uses of a correlation id might be the number
22408    /// of frame going through various stages of rendering in a GPU, the id for an
22409    /// RPC request going through a distributed system, or the id of a network
22410    /// request going through various stages of processing by the kernel.
22411    ///
22412    /// NOTE: if the events *are* causually connected, you probably want to use
22413    /// flows instead of OR in addition to correlation ids.
22414    ///
22415    /// UIs can use this identifier to visually link these slices, for instance,
22416    /// by assigning them a consistent color or highlighting the entire correlated
22417    /// set when one slice is hovered.
22418    ///
22419    /// Only one field within this 'oneof' should be set to define the correlation.
22420    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22421    pub enum CorrelationIdField {
22422        /// A 64-bit unsigned integer used as the correlation ID.
22423        ///
22424        /// Best for performance and compact traces if the identifier is naturally
22425        /// numerical or can be easily mapped to one by the trace producer.
22426        #[prost(uint64, tag = "52")]
22427        CorrelationId(u64),
22428        /// A string value used as the correlation ID.
22429        ///
22430        /// Offers maximum flexibility for human-readable or complex identifiers
22431        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
22432        /// size. For frequently repeated string identifiers, consider
22433        /// 'correlation_id_string_iid'.
22434        #[prost(string, tag = "53")]
22435        CorrelationIdStr(::prost::alloc::string::String),
22436        /// An interned string identifier (an IID) for correlation.
22437        ///
22438        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
22439        /// field within the packet sequence's InternedData. This approach combines
22440        /// the descriptiveness and uniqueness of strings with the efficiency of
22441        /// integer IDs for storage and comparison, especially for identifiers that
22442        /// repeat across many events.
22443        #[prost(uint64, tag = "54")]
22444        CorrelationIdStrIid(u64),
22445    }
22446    /// Callstack associated with this event. This captures the program stack at
22447    /// the time the event occurred, useful for understanding what code path led
22448    /// to the event.
22449    ///
22450    /// Two variants are supported:
22451    /// - callstack: Inline callstack data (simpler when trace size is not a
22452    ///    concern or callstacks are unique)
22453    /// - callstack_iid: Reference to an interned Callstack in InternedData
22454    ///    (efficient for repeated callstacks)
22455    ///
22456    /// Only one of these fields should be set.
22457    #[derive(Clone, PartialEq, ::prost::Oneof)]
22458    pub enum CallstackField {
22459        /// Inline callstack data. Use this for simplicity when interning is not
22460        /// needed (e.g., for unique callstacks or when trace size is not critical).
22461        #[prost(message, tag = "55")]
22462        Callstack(InlineCallstack),
22463        /// Reference to interned Callstack (see InternedData.callstacks).
22464        /// This is the efficient option when callstacks are repeated.
22465        ///
22466        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
22467        #[prost(uint64, tag = "56")]
22468        CallstackIid(u64),
22469    }
22470    /// This field is used only if the source location represents the function that
22471    /// executes during this event.
22472    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22473    pub enum SourceLocationField {
22474        /// Non-interned field.
22475        #[prost(message, tag = "33")]
22476        SourceLocation(super::SourceLocation),
22477        /// Interned field.
22478        #[prost(uint64, tag = "34")]
22479        SourceLocationIid(u64),
22480    }
22481    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
22482    /// TracePacket instead.
22483    ///
22484    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
22485    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22486    pub enum Timestamp {
22487        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22488        /// calculate the absolute timestamp value, sum up all delta values of the
22489        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22490        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22491        /// be positive.
22492        #[prost(int64, tag = "1")]
22493        TimestampDeltaUs(i64),
22494        /// Absolute value (e.g. a manually specified timestamp in the macro).
22495        /// This is a one-off value that does not affect delta timestamp computation
22496        /// in subsequent TrackEvents.
22497        #[prost(int64, tag = "16")]
22498        TimestampAbsoluteUs(i64),
22499    }
22500    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22501    /// encode thread time instead.
22502    ///
22503    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
22504    /// microseconds.
22505    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22506    pub enum ThreadTime {
22507        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
22508        /// calculate the absolute timestamp value, sum up all delta values of the
22509        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
22510        /// the |reference_timestamp| in ThreadDescriptor. This value should always
22511        /// be positive.
22512        #[prost(int64, tag = "2")]
22513        ThreadTimeDeltaUs(i64),
22514        /// This is a one-off absolute value that does not affect delta timestamp
22515        /// computation in subsequent TrackEvents.
22516        #[prost(int64, tag = "17")]
22517        ThreadTimeAbsoluteUs(i64),
22518    }
22519    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
22520    /// encode thread instruction count instead.
22521    ///
22522    /// Value of the instruction counter for the current thread.
22523    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
22524    pub enum ThreadInstructionCount {
22525        /// Same encoding as |thread_time| field above.
22526        #[prost(int64, tag = "8")]
22527        ThreadInstructionCountDelta(i64),
22528        #[prost(int64, tag = "20")]
22529        ThreadInstructionCountAbsolute(i64),
22530    }
22531}
22532/// Default values for fields of all TrackEvents on the same packet sequence.
22533/// Should be emitted as part of TracePacketDefaults whenever incremental state
22534/// is cleared. It's defined here because field IDs should match those of the
22535/// corresponding fields in TrackEvent.
22536#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22537pub struct TrackEventDefaults {
22538    #[prost(uint64, optional, tag = "11")]
22539    pub track_uuid: ::core::option::Option<u64>,
22540    #[prost(uint64, repeated, packed = "false", tag = "31")]
22541    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22542    #[prost(uint64, repeated, packed = "false", tag = "45")]
22543    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
22544}
22545#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22546pub struct EventCategory {
22547    #[prost(uint64, optional, tag = "1")]
22548    pub iid: ::core::option::Option<u64>,
22549    #[prost(string, optional, tag = "2")]
22550    pub name: ::core::option::Option<::prost::alloc::string::String>,
22551}
22552#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22553pub struct EventName {
22554    #[prost(uint64, optional, tag = "1")]
22555    pub iid: ::core::option::Option<u64>,
22556    #[prost(string, optional, tag = "2")]
22557    pub name: ::core::option::Option<::prost::alloc::string::String>,
22558}
22559/// Message that contains new entries for the interning indices of a packet
22560/// sequence.
22561///
22562/// The writer will usually emit new entries in the same TracePacket that first
22563/// refers to them (since the last reset of interning state). They may also be
22564/// emitted proactively in advance of referring to them in later packets.
22565///
22566/// Next reserved id: 8 (up to 15).
22567/// Next id: 51.
22568///
22569/// TODO(eseckler): Replace iid fields inside interned messages with
22570/// map<iid, message> type fields in InternedData.
22571#[derive(Clone, PartialEq, ::prost::Message)]
22572pub struct InternedData {
22573    ///
22574    /// == STABLE PUBLIC API: TrackEvent ==
22575    ///
22576    /// Interning for the stable TrackEvent API (see trace_packet.proto and
22577    /// docs/instrumentation/track-events.md).
22578    #[prost(message, repeated, tag = "1")]
22579    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
22580    #[prost(message, repeated, tag = "2")]
22581    pub event_names: ::prost::alloc::vec::Vec<EventName>,
22582    #[prost(message, repeated, tag = "3")]
22583    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
22584    #[prost(message, repeated, tag = "27")]
22585    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<
22586        DebugAnnotationValueTypeName,
22587    >,
22588    /// Interned string values in the DebugAnnotation proto.
22589    #[prost(message, repeated, tag = "29")]
22590    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
22591    /// Interned correlation ids in track_event.
22592    #[prost(message, repeated, tag = "43")]
22593    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
22594    ///
22595    /// == STABLE PUBLIC API: Callstacks and symbolization ==
22596    ///
22597    /// Interned callstacks, frames, mappings and symbol strings. Referenced by the
22598    /// stable TrackEvent callstack fields (TrackEvent.callstack_iid) and by the
22599    /// StackSample API.
22600    ///
22601    /// Build IDs of exectuable files.
22602    #[prost(message, repeated, tag = "16")]
22603    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
22604    /// Paths to executable files.
22605    #[prost(message, repeated, tag = "17")]
22606    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
22607    /// Paths to source files.
22608    #[prost(message, repeated, tag = "18")]
22609    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
22610    /// Names of functions used in frames below.
22611    #[prost(message, repeated, tag = "5")]
22612    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
22613    /// Executable files mapped into processes.
22614    #[prost(message, repeated, tag = "19")]
22615    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
22616    /// Frames of callstacks of a program.
22617    #[prost(message, repeated, tag = "6")]
22618    pub frames: ::prost::alloc::vec::Vec<Frame>,
22619    /// A callstack of a program.
22620    #[prost(message, repeated, tag = "7")]
22621    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
22622    ///
22623    /// == STABLE PUBLIC API: StackSample ==
22624    ///
22625    /// Interned StackSample context and descriptors, referenced by iid from
22626    /// StackSample. See protos/perfetto/trace/profiling/stack_sample.proto.
22627    #[prost(message, repeated, tag = "48")]
22628    pub stack_sample_task_contexts: ::prost::alloc::vec::Vec<stack_sample::TaskContext>,
22629    #[prost(message, repeated, tag = "49")]
22630    pub stack_sample_execution_contexts: ::prost::alloc::vec::Vec<
22631        stack_sample::ExecutionContext,
22632    >,
22633    #[prost(message, repeated, tag = "50")]
22634    pub stack_sample_counter_descriptors: ::prost::alloc::vec::Vec<
22635        stack_sample::CounterDescriptor,
22636    >,
22637    #[prost(message, repeated, tag = "51")]
22638    pub stack_sample_async_context_descriptors: ::prost::alloc::vec::Vec<
22639        stack_sample::AsyncContextDescriptor,
22640    >,
22641    /// Interning for the non-stable TrackEvent arguments below the "NOT part of
22642    /// the stable public API" line in track_event.proto: source_location,
22643    /// log_message and chrome_histogram_sample (Chrome/Android internal).
22644    #[prost(message, repeated, tag = "4")]
22645    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
22646    #[prost(message, repeated, tag = "28")]
22647    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<
22648        UnsymbolizedSourceLocation,
22649    >,
22650    #[prost(message, repeated, tag = "20")]
22651    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
22652    #[prost(message, repeated, tag = "25")]
22653    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
22654    /// Additional Vulkan information sent in a VulkanMemoryEvent message
22655    #[prost(message, repeated, tag = "22")]
22656    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
22657    /// Graphics context of a render stage event.  This represent the GL
22658    /// context for an OpenGl app or the VkDevice for a Vulkan app.
22659    #[prost(message, repeated, tag = "23")]
22660    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
22661    /// Description of a GPU hardware queue or render stage.
22662    #[prost(message, repeated, tag = "24")]
22663    pub gpu_specifications: ::prost::alloc::vec::Vec<
22664        InternedGpuRenderStageSpecification,
22665    >,
22666    /// Description of GPU counters available in a data source.
22667    #[prost(message, repeated, tag = "47")]
22668    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
22669    /// This is set when FtraceConfig.symbolize_ksyms = true.
22670    /// The id of each symbol the number that will be reported in ftrace events
22671    /// like sched_block_reason.caller and is obtained from a monotonic counter.
22672    /// The same symbol can have different indexes in different bundles.
22673    /// This is is NOT the real address. This is to avoid disclosing KASLR through
22674    /// traces.
22675    #[prost(message, repeated, tag = "26")]
22676    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
22677    /// Interned name of a js function. We only intern js functions as there is a
22678    /// lot of duplication for them, but less so for other strings in the V8 data
22679    /// source.
22680    #[prost(message, repeated, tag = "31")]
22681    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
22682    /// Js functions can be emitted multiple times for various compilation tiers,
22683    /// so it makes sense to deduplicate all this.
22684    #[prost(message, repeated, tag = "32")]
22685    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
22686    /// Interned JS script (there is one associated with each JS function)
22687    #[prost(message, repeated, tag = "33")]
22688    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
22689    /// Interned Wasm script (there is one associated with each Wasm function)
22690    #[prost(message, repeated, tag = "34")]
22691    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
22692    /// Every V8 event is associated with an isolate, intern the isolate to remove
22693    /// duplication.
22694    #[prost(message, repeated, tag = "35")]
22695    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
22696}
22697/// A journald log event packet, collected from the Linux systemd journal.
22698/// Emitted by the "linux.systemd_journald" data source in traced_probes.
22699/// Next field id: 13, statistics starting at 20
22700#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22701pub struct SystemdJournaldEvent {
22702    /// _PID: PID of the process that wrote the log entry (trusted).
22703    #[prost(uint32, optional, tag = "1")]
22704    pub pid: ::core::option::Option<u32>,
22705    /// _TID: thread ID of the logging thread (trusted, set by journald for
22706    /// native journal protocol entries). Absent for syslog, stdout-piped, and
22707    /// kernel entries.
22708    #[prost(uint32, optional, tag = "2")]
22709    pub tid: ::core::option::Option<u32>,
22710    /// _UID: user ID of the process (trusted).
22711    #[prost(uint32, optional, tag = "3")]
22712    pub uid: ::core::option::Option<u32>,
22713    /// _GID: group ID of the process (trusted).
22714    #[prost(uint32, optional, tag = "4")]
22715    pub gid: ::core::option::Option<u32>,
22716    /// PRIORITY: syslog priority level 0 (EMERG) .. 7 (DEBUG).
22717    #[prost(uint32, optional, tag = "5")]
22718    pub prio: ::core::option::Option<u32>,
22719    /// SYSLOG_IDENTIFIER: program name / tag, set by the logging application.
22720    #[prost(string, optional, tag = "6")]
22721    pub tag: ::core::option::Option<::prost::alloc::string::String>,
22722    /// MESSAGE: the human-readable log message text.
22723    #[prost(string, optional, tag = "7")]
22724    pub message: ::core::option::Option<::prost::alloc::string::String>,
22725    /// _COMM: short process name as known to the kernel (trusted).
22726    #[prost(string, optional, tag = "8")]
22727    pub comm: ::core::option::Option<::prost::alloc::string::String>,
22728    /// _EXE: full executable path (trusted).
22729    #[prost(string, optional, tag = "9")]
22730    pub exe: ::core::option::Option<::prost::alloc::string::String>,
22731    /// _SYSTEMD_UNIT: the systemd unit that owns this process (trusted).
22732    #[prost(string, optional, tag = "10")]
22733    pub systemd_unit: ::core::option::Option<::prost::alloc::string::String>,
22734    /// _HOSTNAME: hostname of the machine (trusted).
22735    #[prost(string, optional, tag = "11")]
22736    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
22737    /// _TRANSPORT: how the entry was received by journald (trusted).
22738    /// Values: "audit", "driver", "syslog", "journal", "stdout", "kernel".
22739    #[prost(string, optional, tag = "12")]
22740    pub transport: ::core::option::Option<::prost::alloc::string::String>,
22741    /// These statistics emitted once on Flush()
22742    #[prost(uint64, optional, tag = "20")]
22743    pub num_total: ::core::option::Option<u64>,
22744    #[prost(uint64, optional, tag = "21")]
22745    pub num_failed: ::core::option::Option<u64>,
22746}
22747#[derive(Clone, PartialEq, ::prost::Message)]
22748pub struct MemoryTrackerSnapshot {
22749    /// Unique ID that represents the global memory dump.
22750    #[prost(uint64, optional, tag = "1")]
22751    pub global_dump_id: ::core::option::Option<u64>,
22752    #[prost(enumeration = "memory_tracker_snapshot::LevelOfDetail", optional, tag = "2")]
22753    pub level_of_detail: ::core::option::Option<i32>,
22754    #[prost(message, repeated, tag = "3")]
22755    pub process_memory_dumps: ::prost::alloc::vec::Vec<
22756        memory_tracker_snapshot::ProcessSnapshot,
22757    >,
22758}
22759/// Nested message and enum types in `MemoryTrackerSnapshot`.
22760pub mod memory_tracker_snapshot {
22761    /// Memory snapshot of a process. The snapshot contains memory data that is
22762    /// from 2 different sources, namely system stats and instrumentation stats.
22763    /// The system memory usage stats come from the OS based on standard API
22764    /// available in the platform to query memory usage. The instrumentation stats
22765    /// are added by instrumenting specific piece of code which tracks memory
22766    /// allocations and deallocations made by a small sub-system within the
22767    /// application.
22768    /// The system stats of the global memory snapshot are recorded as part of
22769    /// ProcessStats and SmapsPacket fields in trace packet with the same
22770    /// timestamp.
22771    #[derive(Clone, PartialEq, ::prost::Message)]
22772    pub struct ProcessSnapshot {
22773        /// Process ID of the process
22774        #[prost(int32, optional, tag = "1")]
22775        pub pid: ::core::option::Option<i32>,
22776        #[prost(message, repeated, tag = "2")]
22777        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
22778        #[prost(message, repeated, tag = "3")]
22779        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
22780    }
22781    /// Nested message and enum types in `ProcessSnapshot`.
22782    pub mod process_snapshot {
22783        /// A single node in the memory graph.
22784        #[derive(Clone, PartialEq, ::prost::Message)]
22785        pub struct MemoryNode {
22786            /// Unique ID of the node across all processes involved in the global
22787            /// memory dump. The ID is only unique within this particular global dump
22788            /// identified by GlobalMemoryDumpPacket.global_dump_id.
22789            #[prost(uint64, optional, tag = "1")]
22790            pub id: ::core::option::Option<u64>,
22791            /// Absolute name is a unique name for the memory node within the process
22792            /// with ProcessMemoryDump.pid. The name can contain multiple parts
22793            /// separated by '/', which traces the edges of the node from the root
22794            /// node.
22795            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
22796            /// node "buffer1" in a graph structure of:
22797            ///    root -> partition_allocator -> array_buffers -> buffer1.
22798            #[prost(string, optional, tag = "2")]
22799            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
22800            /// A weak node means that the instrumentation that added the current node
22801            /// is unsure about the existence of the actual memory. Unless a "strong"
22802            /// (non-weak is default) node that has an edge to the current node exists
22803            /// in the current global dump, the current node will be discarded.
22804            #[prost(bool, optional, tag = "3")]
22805            pub weak: ::core::option::Option<bool>,
22806            /// Size of the node in bytes, used to compute the effective size of the
22807            /// nodes without double counting.
22808            #[prost(uint64, optional, tag = "4")]
22809            pub size_bytes: ::core::option::Option<u64>,
22810            #[prost(message, repeated, tag = "5")]
22811            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
22812        }
22813        /// Nested message and enum types in `MemoryNode`.
22814        pub mod memory_node {
22815            /// Entries in the memory node that contain statistics and additional
22816            /// debuggable information about the memory. The size of the node is
22817            /// tracked separately in the |size_bytes| field.
22818            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22819            pub struct MemoryNodeEntry {
22820                #[prost(string, optional, tag = "1")]
22821                pub name: ::core::option::Option<::prost::alloc::string::String>,
22822                #[prost(enumeration = "memory_node_entry::Units", optional, tag = "2")]
22823                pub units: ::core::option::Option<i32>,
22824                /// Contains either one of uint64 or string value.
22825                #[prost(uint64, optional, tag = "3")]
22826                pub value_uint64: ::core::option::Option<u64>,
22827                #[prost(string, optional, tag = "4")]
22828                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
22829            }
22830            /// Nested message and enum types in `MemoryNodeEntry`.
22831            pub mod memory_node_entry {
22832                #[derive(
22833                    Clone,
22834                    Copy,
22835                    Debug,
22836                    PartialEq,
22837                    Eq,
22838                    Hash,
22839                    PartialOrd,
22840                    Ord,
22841                    ::prost::Enumeration
22842                )]
22843                #[repr(i32)]
22844                pub enum Units {
22845                    Unspecified = 0,
22846                    Bytes = 1,
22847                    Count = 2,
22848                }
22849                impl Units {
22850                    /// String value of the enum field names used in the ProtoBuf definition.
22851                    ///
22852                    /// The values are not transformed in any way and thus are considered stable
22853                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22854                    pub fn as_str_name(&self) -> &'static str {
22855                        match self {
22856                            Self::Unspecified => "UNSPECIFIED",
22857                            Self::Bytes => "BYTES",
22858                            Self::Count => "COUNT",
22859                        }
22860                    }
22861                    /// Creates an enum from field names used in the ProtoBuf definition.
22862                    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22863                        match value {
22864                            "UNSPECIFIED" => Some(Self::Unspecified),
22865                            "BYTES" => Some(Self::Bytes),
22866                            "COUNT" => Some(Self::Count),
22867                            _ => None,
22868                        }
22869                    }
22870                }
22871            }
22872        }
22873        /// A directed edge that connects any 2 nodes in the graph above. These are
22874        /// in addition to the inherent edges added due to the tree structure of the
22875        /// node's absolute names.
22876        /// Node with id |source_id| owns the node with id |target_id|, and has the
22877        /// effect of attributing the memory usage of target to source. |importance|
22878        /// is optional and relevant only for the cases of co-ownership, where it
22879        /// acts as a z-index: the owner with the highest importance will be
22880        /// attributed target's memory.
22881        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22882        pub struct MemoryEdge {
22883            #[prost(uint64, optional, tag = "1")]
22884            pub source_id: ::core::option::Option<u64>,
22885            #[prost(uint64, optional, tag = "2")]
22886            pub target_id: ::core::option::Option<u64>,
22887            #[prost(uint32, optional, tag = "3")]
22888            pub importance: ::core::option::Option<u32>,
22889            #[prost(bool, optional, tag = "4")]
22890            pub overridable: ::core::option::Option<bool>,
22891        }
22892    }
22893    #[derive(
22894        Clone,
22895        Copy,
22896        Debug,
22897        PartialEq,
22898        Eq,
22899        Hash,
22900        PartialOrd,
22901        Ord,
22902        ::prost::Enumeration
22903    )]
22904    #[repr(i32)]
22905    pub enum LevelOfDetail {
22906        DetailFull = 0,
22907        DetailLight = 1,
22908        DetailBackground = 2,
22909    }
22910    impl LevelOfDetail {
22911        /// String value of the enum field names used in the ProtoBuf definition.
22912        ///
22913        /// The values are not transformed in any way and thus are considered stable
22914        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22915        pub fn as_str_name(&self) -> &'static str {
22916            match self {
22917                Self::DetailFull => "DETAIL_FULL",
22918                Self::DetailLight => "DETAIL_LIGHT",
22919                Self::DetailBackground => "DETAIL_BACKGROUND",
22920            }
22921        }
22922        /// Creates an enum from field names used in the ProtoBuf definition.
22923        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22924            match value {
22925                "DETAIL_FULL" => Some(Self::DetailFull),
22926                "DETAIL_LIGHT" => Some(Self::DetailLight),
22927                "DETAIL_BACKGROUND" => Some(Self::DetailBackground),
22928                _ => None,
22929            }
22930        }
22931    }
22932}
22933/// Emitted by the tracing service to record a state change of another tracing
22934/// session that was active while this trace was being recorded. Opt-in via
22935/// TraceConfig.BuiltinDataSource.enable_concurrent_session_events.
22936///
22937/// One packet per state change; its time is carried by the enclosing
22938/// TracePacket's timestamp (CLOCK_BOOTTIME). Events of the same session share
22939/// the same |session_id|. The trace UUID is deliberately not included.
22940///
22941/// Introduced in v58 / Android 26Q3+.
22942#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22943pub struct ConcurrentSessionEvent {
22944    /// The state the session transitioned to at this timestamp.
22945    #[prost(enumeration = "concurrent_session_event::State", optional, tag = "1")]
22946    pub state: ::core::option::Option<i32>,
22947    /// unique_session_name from the session's TraceConfig. May be empty.
22948    #[prost(string, optional, tag = "2")]
22949    pub session_name: ::core::option::Option<::prost::alloc::string::String>,
22950    /// Service-local monotonic counter identifying the session. Shared by all
22951    /// state changes of one session, never reused within a service instance.
22952    #[prost(uint64, optional, tag = "3")]
22953    pub session_id: ::core::option::Option<u64>,
22954    /// Unix uid of the consumer that started the session.
22955    #[prost(int32, optional, tag = "4")]
22956    pub consumer_uid: ::core::option::Option<i32>,
22957    /// Number of data sources in the session at the time of the state change.
22958    #[prost(uint32, optional, tag = "5")]
22959    pub num_data_sources: ::core::option::Option<u32>,
22960}
22961/// Nested message and enum types in `ConcurrentSessionEvent`.
22962pub mod concurrent_session_event {
22963    /// Mirrors the tracing service's internal session state machine
22964    /// (TracingSession::State in the service): keep these two enums in sync.
22965    /// These values are part of the trace wire format and must stay stable: never
22966    /// renumber or reuse an existing value, only append new ones at the end.
22967    #[derive(
22968        Clone,
22969        Copy,
22970        Debug,
22971        PartialEq,
22972        Eq,
22973        Hash,
22974        PartialOrd,
22975        Ord,
22976        ::prost::Enumeration
22977    )]
22978    #[repr(i32)]
22979    pub enum State {
22980        Unspecified = 0,
22981        /// Not recording (initial and final state).
22982        Disabled = 1,
22983        /// Configured but waiting for a start signal (e.g. a trigger).
22984        Configured = 2,
22985        /// Actively recording data.
22986        Started = 3,
22987        /// Stopping, waiting for data sources to ack and drain their final data.
22988        DisablingWaitingStopAcks = 4,
22989        /// A read-only snapshot of another session, created by a clone operation.
22990        ClonedReadOnly = 5,
22991    }
22992    impl State {
22993        /// String value of the enum field names used in the ProtoBuf definition.
22994        ///
22995        /// The values are not transformed in any way and thus are considered stable
22996        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22997        pub fn as_str_name(&self) -> &'static str {
22998            match self {
22999                Self::Unspecified => "STATE_UNSPECIFIED",
23000                Self::Disabled => "STATE_DISABLED",
23001                Self::Configured => "STATE_CONFIGURED",
23002                Self::Started => "STATE_STARTED",
23003                Self::DisablingWaitingStopAcks => "STATE_DISABLING_WAITING_STOP_ACKS",
23004                Self::ClonedReadOnly => "STATE_CLONED_READ_ONLY",
23005            }
23006        }
23007        /// Creates an enum from field names used in the ProtoBuf definition.
23008        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23009            match value {
23010                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
23011                "STATE_DISABLED" => Some(Self::Disabled),
23012                "STATE_CONFIGURED" => Some(Self::Configured),
23013                "STATE_STARTED" => Some(Self::Started),
23014                "STATE_DISABLING_WAITING_STOP_ACKS" => {
23015                    Some(Self::DisablingWaitingStopAcks)
23016                }
23017                "STATE_CLONED_READ_ONLY" => Some(Self::ClonedReadOnly),
23018                _ => None,
23019            }
23020        }
23021    }
23022}
23023/// Used to trace the execution of perfetto itself.
23024#[derive(Clone, PartialEq, ::prost::Message)]
23025pub struct PerfettoMetatrace {
23026    /// Only when using |event_id|.
23027    #[prost(uint64, optional, tag = "3")]
23028    pub event_duration_ns: ::core::option::Option<u64>,
23029    /// Only when using |counter_id|.
23030    #[prost(int32, optional, tag = "4")]
23031    pub counter_value: ::core::option::Option<i32>,
23032    /// ID of the thread that emitted the event.
23033    #[prost(uint32, optional, tag = "5")]
23034    pub thread_id: ::core::option::Option<u32>,
23035    /// If true the meta-tracing ring buffer had overruns and hence some data is
23036    /// missing from this point.
23037    #[prost(bool, optional, tag = "6")]
23038    pub has_overruns: ::core::option::Option<bool>,
23039    /// Args for the event.
23040    #[prost(message, repeated, tag = "7")]
23041    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
23042    #[prost(message, repeated, tag = "10")]
23043    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
23044    /// See base/metatrace_events.h for definitions.
23045    #[prost(oneof = "perfetto_metatrace::RecordType", tags = "1, 2, 8, 11, 9")]
23046    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
23047}
23048/// Nested message and enum types in `PerfettoMetatrace`.
23049pub mod perfetto_metatrace {
23050    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23051    pub struct Arg {
23052        #[prost(oneof = "arg::KeyOrInternedKey", tags = "1, 3")]
23053        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
23054        #[prost(oneof = "arg::ValueOrInternedValue", tags = "2, 4")]
23055        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
23056    }
23057    /// Nested message and enum types in `Arg`.
23058    pub mod arg {
23059        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23060        pub enum KeyOrInternedKey {
23061            #[prost(string, tag = "1")]
23062            Key(::prost::alloc::string::String),
23063            #[prost(uint64, tag = "3")]
23064            KeyIid(u64),
23065        }
23066        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23067        pub enum ValueOrInternedValue {
23068            #[prost(string, tag = "2")]
23069            Value(::prost::alloc::string::String),
23070            #[prost(uint64, tag = "4")]
23071            ValueIid(u64),
23072        }
23073    }
23074    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
23075    /// |value_iid| above.
23076    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23077    pub struct InternedString {
23078        #[prost(uint64, optional, tag = "1")]
23079        pub iid: ::core::option::Option<u64>,
23080        #[prost(string, optional, tag = "2")]
23081        pub value: ::core::option::Option<::prost::alloc::string::String>,
23082    }
23083    /// See base/metatrace_events.h for definitions.
23084    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23085    pub enum RecordType {
23086        #[prost(uint32, tag = "1")]
23087        EventId(u32),
23088        #[prost(uint32, tag = "2")]
23089        CounterId(u32),
23090        /// For trace processor metatracing.
23091        #[prost(string, tag = "8")]
23092        EventName(::prost::alloc::string::String),
23093        #[prost(uint64, tag = "11")]
23094        EventNameIid(u64),
23095        #[prost(string, tag = "9")]
23096        CounterName(::prost::alloc::string::String),
23097    }
23098}
23099#[derive(Clone, PartialEq, ::prost::Message)]
23100pub struct TraceProvenance {
23101    #[prost(message, repeated, tag = "2")]
23102    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
23103}
23104/// Nested message and enum types in `TraceProvenance`.
23105pub mod trace_provenance {
23106    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23107    pub struct Sequence {
23108        /// The trusted_packet_sequence_id reported in each TracePacket.
23109        #[prost(uint32, optional, tag = "1")]
23110        pub id: ::core::option::Option<u32>,
23111        /// ID of the producer, as per Producer.id.
23112        #[prost(int32, optional, tag = "2")]
23113        pub producer_id: ::core::option::Option<i32>,
23114    }
23115    /// Describes a trace buffer and all the sequences writing to it.
23116    #[derive(Clone, PartialEq, ::prost::Message)]
23117    pub struct Buffer {
23118        #[prost(message, repeated, tag = "1")]
23119        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
23120    }
23121}
23122/// Events emitted by the tracing service.
23123/// Next id: 12.
23124#[derive(Clone, PartialEq, ::prost::Message)]
23125pub struct TracingServiceEvent {
23126    /// When each of the following booleans are set to true, they report the
23127    /// point in time (through TracePacket's timestamp) where the condition
23128    /// they describe happened.
23129    /// The order of the booleans below matches the timestamp ordering
23130    /// they would generally be expected to have.
23131    #[prost(
23132        oneof = "tracing_service_event::EventType",
23133        tags = "2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11"
23134    )]
23135    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
23136}
23137/// Nested message and enum types in `TracingServiceEvent`.
23138pub mod tracing_service_event {
23139    #[derive(Clone, PartialEq, ::prost::Message)]
23140    pub struct DataSources {
23141        #[prost(message, repeated, tag = "1")]
23142        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
23143    }
23144    /// Nested message and enum types in `DataSources`.
23145    pub mod data_sources {
23146        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23147        pub struct DataSource {
23148            #[prost(string, optional, tag = "1")]
23149            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
23150            #[prost(string, optional, tag = "2")]
23151            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
23152        }
23153    }
23154    /// When each of the following booleans are set to true, they report the
23155    /// point in time (through TracePacket's timestamp) where the condition
23156    /// they describe happened.
23157    /// The order of the booleans below matches the timestamp ordering
23158    /// they would generally be expected to have.
23159    #[derive(Clone, PartialEq, ::prost::Oneof)]
23160    pub enum EventType {
23161        /// Emitted when we start tracing and specifically, this will be before any
23162        /// producer is notified about the existence of this trace. This is always
23163        /// emitted before the all_data_sources_started event. This event is also
23164        /// guaranteed to be seen (byte-offset wise) before any data packets from
23165        /// producers.
23166        #[prost(bool, tag = "2")]
23167        TracingStarted(bool),
23168        /// Emitted after all data sources saw the start event and ACKed it.
23169        /// This identifies the point in time when it's safe to assume that all data
23170        /// sources have been recording events.
23171        #[prost(bool, tag = "1")]
23172        AllDataSourcesStarted(bool),
23173        /// Emitted when a flush is started.
23174        #[prost(bool, tag = "9")]
23175        FlushStarted(bool),
23176        /// Emitted when all data sources have been flushed successfully or with an
23177        /// error (including timeouts). This can generally happen many times over the
23178        /// course of the trace.
23179        #[prost(bool, tag = "3")]
23180        AllDataSourcesFlushed(bool),
23181        /// Emitted when reading back the central tracing buffers has been completed.
23182        /// If |write_into_file| is specified, this can happen many times over the
23183        /// course of the trace.
23184        #[prost(bool, tag = "4")]
23185        ReadTracingBuffersCompleted(bool),
23186        /// Emitted after tracing has been disabled and specifically, this will be
23187        /// after all packets from producers have been included in the central
23188        /// tracing buffer.
23189        #[prost(bool, tag = "5")]
23190        TracingDisabled(bool),
23191        /// Emitted if perfetto --save-for-bugreport was invoked while the current
23192        /// tracing session was running and it had the highest bugreport_score. In
23193        /// this case the original consumer will see a nearly empty trace, because
23194        /// the contents are routed onto the bugreport file. This event flags the
23195        /// situation explicitly. Traces that contain this marker should be discarded
23196        /// by test infrastructures / pipelines.
23197        /// Deprecated since Android U, where --save-for-bugreport uses
23198        /// non-destructive cloning.
23199        #[prost(bool, tag = "6")]
23200        SeizedForBugreport(bool),
23201        /// Emitted when not all data sources in all producers reply to a start
23202        /// request after some time.
23203        #[prost(message, tag = "7")]
23204        SlowStartingDataSources(DataSources),
23205        /// Emitted when the last flush request has failed. Lists data sources that
23206        /// did not reply on time.
23207        #[prost(message, tag = "8")]
23208        LastFlushSlowDataSources(DataSources),
23209        /// If this was a cloned tracing session, emitted when the tracing serice
23210        /// started the clone operation.
23211        #[prost(bool, tag = "10")]
23212        CloneStarted(bool),
23213        /// If this was a cloned tracing session, emitted when the tracing service
23214        /// finished the clone operation (for a specific buffer).
23215        #[prost(uint32, tag = "11")]
23216        BufferCloned(u32),
23217    }
23218}
23219/// Energy consumer based on aidl class:
23220/// android.hardware.power.stats.EnergyConsumer.
23221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23222pub struct AndroidEnergyConsumer {
23223    /// Unique ID of this energy consumer.  Matches the ID in a
23224    /// AndroidEnergyEstimationBreakdown.
23225    #[prost(int32, optional, tag = "1")]
23226    pub energy_consumer_id: ::core::option::Option<i32>,
23227    /// For a group of energy consumers of the same logical type, sorting by
23228    /// ordinal gives their physical order. Ordinals must be consecutive integers
23229    /// starting from 0.
23230    #[prost(int32, optional, tag = "2")]
23231    pub ordinal: ::core::option::Option<i32>,
23232    /// Type of this energy consumer.
23233    #[prost(string, optional, tag = "3")]
23234    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
23235    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
23236    /// framework.
23237    #[prost(string, optional, tag = "4")]
23238    pub name: ::core::option::Option<::prost::alloc::string::String>,
23239}
23240#[derive(Clone, PartialEq, ::prost::Message)]
23241pub struct AndroidEnergyConsumerDescriptor {
23242    #[prost(message, repeated, tag = "1")]
23243    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
23244}
23245/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
23246/// This proto represents the aidl class:
23247/// android.hardware.power.stats.EnergyConsumerResult.
23248#[derive(Clone, PartialEq, ::prost::Message)]
23249pub struct AndroidEnergyEstimationBreakdown {
23250    /// The first trace packet of each session should include a energy consumer
23251    /// descriptor.
23252    #[prost(message, optional, tag = "1")]
23253    pub energy_consumer_descriptor: ::core::option::Option<
23254        AndroidEnergyConsumerDescriptor,
23255    >,
23256    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
23257    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
23258    /// should be sent at the beginning of a trace.
23259    #[prost(int32, optional, tag = "2")]
23260    pub energy_consumer_id: ::core::option::Option<i32>,
23261    /// Total accumulated energy since boot in microwatt-seconds (uWs)
23262    #[prost(int64, optional, tag = "3")]
23263    pub energy_uws: ::core::option::Option<i64>,
23264    /// Optional attributed energy per Android ID / Linux UID for this
23265    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
23266    /// to total accumulated energy.
23267    #[prost(message, repeated, tag = "4")]
23268    pub per_uid_breakdown: ::prost::alloc::vec::Vec<
23269        android_energy_estimation_breakdown::EnergyUidBreakdown,
23270    >,
23271}
23272/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
23273pub mod android_energy_estimation_breakdown {
23274    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23275    pub struct EnergyUidBreakdown {
23276        /// Android ID/Linux UID, the accumulated energy is attributed to.
23277        #[prost(int32, optional, tag = "1")]
23278        pub uid: ::core::option::Option<i32>,
23279        /// Accumulated energy since boot in microwatt-seconds (uWs).
23280        #[prost(int64, optional, tag = "2")]
23281        pub energy_uws: ::core::option::Option<i64>,
23282    }
23283}
23284#[derive(Clone, PartialEq, ::prost::Message)]
23285pub struct EntityStateResidency {
23286    /// This is only emitted at the beginning of the trace.
23287    #[prost(message, repeated, tag = "1")]
23288    pub power_entity_state: ::prost::alloc::vec::Vec<
23289        entity_state_residency::PowerEntityState,
23290    >,
23291    #[prost(message, repeated, tag = "2")]
23292    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
23293}
23294/// Nested message and enum types in `EntityStateResidency`.
23295pub mod entity_state_residency {
23296    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23297    pub struct PowerEntityState {
23298        /// Index corresponding to the entity
23299        #[prost(int32, optional, tag = "1")]
23300        pub entity_index: ::core::option::Option<i32>,
23301        /// Index corresponding to the state
23302        #[prost(int32, optional, tag = "2")]
23303        pub state_index: ::core::option::Option<i32>,
23304        /// Name of the entity. This is device-specific, determined by the PowerStats
23305        /// HAL, and cannot be configured by the user. An example would be
23306        /// "Bluetooth".
23307        #[prost(string, optional, tag = "3")]
23308        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
23309        /// Name of the state. This is device-specific, determined by the PowerStats
23310        /// HAL, and cannot be configured by the user. An example would be
23311        /// "Active".
23312        #[prost(string, optional, tag = "4")]
23313        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
23314    }
23315    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23316    pub struct StateResidency {
23317        /// Index corresponding to PowerEntityState.entity_index
23318        #[prost(int32, optional, tag = "1")]
23319        pub entity_index: ::core::option::Option<i32>,
23320        /// Index corresponding to PowerEntityState.state_index
23321        #[prost(int32, optional, tag = "2")]
23322        pub state_index: ::core::option::Option<i32>,
23323        /// Time since boot that this entity has been in this state
23324        #[prost(uint64, optional, tag = "3")]
23325        pub total_time_in_state_ms: ::core::option::Option<u64>,
23326        /// Total number of times since boot that the entity has entered this state
23327        #[prost(uint64, optional, tag = "4")]
23328        pub total_state_entry_count: ::core::option::Option<u64>,
23329        /// Timestamp of the last time the entity entered this state
23330        #[prost(uint64, optional, tag = "5")]
23331        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
23332    }
23333}
23334#[derive(Clone, PartialEq, ::prost::Message)]
23335pub struct BatteryCounters {
23336    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
23337    #[prost(int64, optional, tag = "1")]
23338    pub charge_counter_uah: ::core::option::Option<i64>,
23339    /// Remaining battery capacity percentage of total capacity
23340    #[prost(float, optional, tag = "2")]
23341    pub capacity_percent: ::core::option::Option<f32>,
23342    /// Instantaneous battery current in microamperes(µA).
23343    /// Negative values indicate current being drained from the battery and
23344    /// positive values indicate current feeding the battery from a charge source
23345    /// (USB).
23346    ///
23347    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
23348    #[prost(int64, optional, tag = "3")]
23349    pub current_ua: ::core::option::Option<i64>,
23350    /// Instantaneous battery current in microamperes(µA).
23351    #[prost(int64, optional, tag = "4")]
23352    pub current_avg_ua: ::core::option::Option<i64>,
23353    /// Battery name, emitted only on multiple batteries.
23354    #[prost(string, optional, tag = "5")]
23355    pub name: ::core::option::Option<::prost::alloc::string::String>,
23356    /// Battery capacity in microwatt-hours(µWh).
23357    #[prost(int64, optional, tag = "6")]
23358    pub energy_counter_uwh: ::core::option::Option<i64>,
23359    /// Battery voltage in microvolts(µV).
23360    #[prost(int64, optional, tag = "7")]
23361    pub voltage_uv: ::core::option::Option<i64>,
23362}
23363#[derive(Clone, PartialEq, ::prost::Message)]
23364pub struct PowerRails {
23365    /// This is only emitted at the beginning of the trace.
23366    #[prost(message, repeated, tag = "1")]
23367    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
23368    #[prost(message, repeated, tag = "2")]
23369    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
23370    /// A unique session id that can be used to match energy data to sets of
23371    /// descriptors. The indices used by rail descriptors and energy data packets
23372    /// are meant to be unique to a given session uuid. When multiple data sources
23373    /// are running in parallel, each data source should use a unique id.
23374    #[prost(uint64, optional, tag = "3")]
23375    pub session_uuid: ::core::option::Option<u64>,
23376}
23377/// Nested message and enum types in `PowerRails`.
23378pub mod power_rails {
23379    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23380    pub struct RailDescriptor {
23381        /// Index corresponding to the rail
23382        #[prost(uint32, optional, tag = "1")]
23383        pub index: ::core::option::Option<u32>,
23384        /// Name of the rail
23385        #[prost(string, optional, tag = "2")]
23386        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
23387        /// Name of the subsystem to which this rail belongs
23388        #[prost(string, optional, tag = "3")]
23389        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
23390        /// Hardware sampling rate (Hz).
23391        #[prost(uint32, optional, tag = "4")]
23392        pub sampling_rate: ::core::option::Option<u32>,
23393    }
23394    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23395    pub struct EnergyData {
23396        /// Index corresponding to RailDescriptor.index
23397        #[prost(uint32, optional, tag = "1")]
23398        pub index: ::core::option::Option<u32>,
23399        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
23400        #[prost(uint64, optional, tag = "2")]
23401        pub timestamp_ms: ::core::option::Option<u64>,
23402        /// Accumulated energy since device boot in microwatt-seconds (uWs).
23403        #[prost(uint64, optional, tag = "3")]
23404        pub energy: ::core::option::Option<u64>,
23405    }
23406}
23407#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23408pub struct JavaFrame {
23409    #[prost(string, optional, tag = "1")]
23410    pub method_name: ::core::option::Option<::prost::alloc::string::String>,
23411    #[prost(string, optional, tag = "2")]
23412    pub source_file: ::core::option::Option<::prost::alloc::string::String>,
23413    #[prost(int32, optional, tag = "3")]
23414    pub line_number: ::core::option::Option<i32>,
23415}
23416#[derive(Clone, PartialEq, ::prost::Message)]
23417pub struct JavaStack {
23418    #[prost(message, repeated, tag = "1")]
23419    pub frames: ::prost::alloc::vec::Vec<JavaFrame>,
23420}
23421#[derive(Clone, PartialEq, ::prost::Message)]
23422pub struct ArtProcessMetadata {
23423    #[prost(int32, optional, tag = "1")]
23424    pub pid: ::core::option::Option<i32>,
23425    #[prost(int32, optional, tag = "2")]
23426    pub uid: ::core::option::Option<i32>,
23427    /// /proc/self/cmdline argv0
23428    #[prost(string, optional, tag = "3")]
23429    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
23430    /// Set by VMRuntime.setProcessPackageName
23431    #[prost(string, optional, tag = "4")]
23432    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
23433    /// OutOfMemoryError details (if heap dump was triggered by an OOM)
23434    /// The size of the allocation that ended up failing with OOME
23435    #[prost(uint64, optional, tag = "5")]
23436    pub oom_allocation_size: ::core::option::Option<u64>,
23437    /// Amount of free memory until the runtime would need to grow the heap
23438    #[prost(uint64, optional, tag = "6")]
23439    pub oom_total_bytes_free: ::core::option::Option<u64>,
23440    /// Amount of memory remaining until the max heap size supported
23441    #[prost(uint64, optional, tag = "7")]
23442    pub oom_free_bytes_until_oom: ::core::option::Option<u64>,
23443    /// Stacktrace for the thread doing the failing allocation
23444    #[prost(message, optional, tag = "8")]
23445    pub oom_thread_java_stack: ::core::option::Option<JavaStack>,
23446    /// Full OOME exception message
23447    #[prost(string, optional, tag = "9")]
23448    pub oom_error_msg: ::core::option::Option<::prost::alloc::string::String>,
23449}
23450#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23451pub struct ObfuscatedMember {
23452    /// This is the obfuscated field name relative to the class containing the
23453    /// ObfuscatedMember.
23454    #[prost(string, optional, tag = "1")]
23455    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23456    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
23457    /// field name including its class. Otherwise, this is this the unqualified
23458    /// deobfuscated field name relative to the class containing this
23459    /// ObfuscatedMember.
23460    #[prost(string, optional, tag = "2")]
23461    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23462    /// R8 inline method support: line number ranges for disambiguation.
23463    /// When multiple methods map to the same obfuscated name, the line number
23464    /// from the stack frame is used to select the correct mapping.
23465    ///
23466    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
23467    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
23468    /// - source_line_start/end = 10:12 (line range in original source)
23469    ///
23470    /// Methods with the same obfuscated_name and overlapping obfuscated line
23471    /// ranges form an inline chain, ordered innermost (inlined) first.
23472    #[prost(uint32, optional, tag = "3")]
23473    pub obfuscated_line_start: ::core::option::Option<u32>,
23474    #[prost(uint32, optional, tag = "4")]
23475    pub obfuscated_line_end: ::core::option::Option<u32>,
23476    #[prost(uint32, optional, tag = "5")]
23477    pub source_line_start: ::core::option::Option<u32>,
23478    #[prost(uint32, optional, tag = "6")]
23479    pub source_line_end: ::core::option::Option<u32>,
23480}
23481#[derive(Clone, PartialEq, ::prost::Message)]
23482pub struct ObfuscatedClass {
23483    #[prost(string, optional, tag = "1")]
23484    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23485    #[prost(string, optional, tag = "2")]
23486    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
23487    /// fields.
23488    #[prost(message, repeated, tag = "3")]
23489    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23490    #[prost(message, repeated, tag = "4")]
23491    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
23492}
23493#[derive(Clone, PartialEq, ::prost::Message)]
23494pub struct DeobfuscationMapping {
23495    #[prost(string, optional, tag = "1")]
23496    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
23497    #[prost(int64, optional, tag = "2")]
23498    pub version_code: ::core::option::Option<i64>,
23499    #[prost(message, repeated, tag = "3")]
23500    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
23501}
23502/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
23503/// involve more than one ProfilePacket if the snapshot is big (when |continued|
23504/// is true). The cardinality and grouping is as follows:
23505/// A ProfilePacket contains:
23506///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
23507///     one heap per process (the main malloc/free heap), but there can be more if
23508///     the process is using the heapprofd API to profile custom allocators.
23509///   - Globally interned strings, mappings and frames (to allow de-duplicating
23510///     frames/mapping in common between different processes).
23511/// A ProcessHeapSamples contains:
23512///   - The process and heap identifier.
23513///   - A number of HeapSample, one for each callsite that had some alloc/frees.
23514///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
23515/// A HeapSample contains statistics about callsites:
23516///   - Total number of bytes allocated and freed from that callsite.
23517///   - Total number of alloc/free calls sampled.
23518///   - Stats at the local maximum when dump_at_max = true.
23519/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
23520#[derive(Clone, PartialEq, ::prost::Message)]
23521pub struct ProfilePacket {
23522    /// The following interning tables are only used in Android version Q.
23523    /// In newer versions, these tables are in InternedData
23524    /// (see protos/perfetto/trace/interned_data) and are shared across
23525    /// multiple ProfilePackets.
23526    /// For backwards compatibility, consumers need to first look up interned
23527    /// data in the tables within the ProfilePacket, and then, if they are empty,
23528    /// look up in the InternedData instead.
23529    #[prost(message, repeated, tag = "1")]
23530    pub strings: ::prost::alloc::vec::Vec<InternedString>,
23531    #[prost(message, repeated, tag = "4")]
23532    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
23533    #[prost(message, repeated, tag = "2")]
23534    pub frames: ::prost::alloc::vec::Vec<Frame>,
23535    #[prost(message, repeated, tag = "3")]
23536    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
23537    #[prost(message, repeated, tag = "5")]
23538    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
23539    /// If this is true, the next ProfilePacket in this package_sequence_id is a
23540    /// continuation of this one.
23541    /// To get all samples for a process, accummulate its
23542    /// ProcessHeapSamples.samples until you see continued=false.
23543    #[prost(bool, optional, tag = "6")]
23544    pub continued: ::core::option::Option<bool>,
23545    /// Index of this ProfilePacket on its package_sequence_id. Can be used
23546    /// to detect dropped data.
23547    /// Verify these are consecutive.
23548    #[prost(uint64, optional, tag = "7")]
23549    pub index: ::core::option::Option<u64>,
23550}
23551/// Nested message and enum types in `ProfilePacket`.
23552pub mod profile_packet {
23553    /// Next ID: 9
23554    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23555    pub struct HeapSample {
23556        #[prost(uint64, optional, tag = "1")]
23557        pub callstack_id: ::core::option::Option<u64>,
23558        /// bytes allocated at this callstack.
23559        #[prost(uint64, optional, tag = "2")]
23560        pub self_allocated: ::core::option::Option<u64>,
23561        /// bytes allocated at this callstack that have been freed.
23562        #[prost(uint64, optional, tag = "3")]
23563        pub self_freed: ::core::option::Option<u64>,
23564        /// Bytes allocated by this callstack but not freed at the time the malloc
23565        /// heap usage of this process was maximal. This is only set if dump_at_max
23566        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
23567        /// self_idle will not be set.
23568        #[prost(uint64, optional, tag = "8")]
23569        pub self_max: ::core::option::Option<u64>,
23570        /// Number of allocations that were sampled at this callstack but not freed
23571        /// at the time the malloc heap usage of this process was maximal. This is
23572        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
23573        /// self_allocated, self_freed and self_idle will not be set.
23574        #[prost(uint64, optional, tag = "9")]
23575        pub self_max_count: ::core::option::Option<u64>,
23576        /// timestamp \[opt\]
23577        #[prost(uint64, optional, tag = "4")]
23578        pub timestamp: ::core::option::Option<u64>,
23579        /// Number of allocations that were sampled at this callstack.
23580        #[prost(uint64, optional, tag = "5")]
23581        pub alloc_count: ::core::option::Option<u64>,
23582        /// Number of allocations that were sampled at this callstack that have been
23583        /// freed.
23584        #[prost(uint64, optional, tag = "6")]
23585        pub free_count: ::core::option::Option<u64>,
23586    }
23587    #[derive(Clone, PartialEq, ::prost::Message)]
23588    pub struct Histogram {
23589        #[prost(message, repeated, tag = "1")]
23590        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
23591    }
23592    /// Nested message and enum types in `Histogram`.
23593    pub mod histogram {
23594        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23595        pub struct Bucket {
23596            /// This bucket counts values from the previous bucket's (or -infinity if
23597            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
23598            /// (exclusive).
23599            #[prost(uint64, optional, tag = "1")]
23600            pub upper_limit: ::core::option::Option<u64>,
23601            /// This is the highest bucket. This is set instead of the upper_limit. Any
23602            /// values larger or equal to the previous bucket's upper_limit are counted
23603            /// in this bucket.
23604            #[prost(bool, optional, tag = "2")]
23605            pub max_bucket: ::core::option::Option<bool>,
23606            /// Number of values that fall into this range.
23607            #[prost(uint64, optional, tag = "3")]
23608            pub count: ::core::option::Option<u64>,
23609        }
23610    }
23611    #[derive(Clone, PartialEq, ::prost::Message)]
23612    pub struct ProcessStats {
23613        #[prost(uint64, optional, tag = "1")]
23614        pub unwinding_errors: ::core::option::Option<u64>,
23615        #[prost(uint64, optional, tag = "2")]
23616        pub heap_samples: ::core::option::Option<u64>,
23617        #[prost(uint64, optional, tag = "3")]
23618        pub map_reparses: ::core::option::Option<u64>,
23619        #[prost(message, optional, tag = "4")]
23620        pub unwinding_time_us: ::core::option::Option<Histogram>,
23621        #[prost(uint64, optional, tag = "5")]
23622        pub total_unwinding_time_us: ::core::option::Option<u64>,
23623        #[prost(uint64, optional, tag = "6")]
23624        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
23625    }
23626    #[derive(Clone, PartialEq, ::prost::Message)]
23627    pub struct ProcessHeapSamples {
23628        #[prost(uint64, optional, tag = "1")]
23629        pub pid: ::core::option::Option<u64>,
23630        /// This process was profiled from startup.
23631        /// If false, this process was already running when profiling started.
23632        #[prost(bool, optional, tag = "3")]
23633        pub from_startup: ::core::option::Option<bool>,
23634        /// This process was not profiled because a concurrent session was active.
23635        /// If this is true, samples will be empty.
23636        #[prost(bool, optional, tag = "4")]
23637        pub rejected_concurrent: ::core::option::Option<bool>,
23638        /// This process disconnected while it was profiled.
23639        /// If false, the process outlived the profiling session.
23640        #[prost(bool, optional, tag = "6")]
23641        pub disconnected: ::core::option::Option<bool>,
23642        /// If disconnected, this disconnect was caused by the client overrunning
23643        /// the buffer.
23644        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
23645        /// on new S builds.
23646        #[prost(bool, optional, tag = "7")]
23647        pub buffer_overran: ::core::option::Option<bool>,
23648        #[prost(enumeration = "process_heap_samples::ClientError", optional, tag = "14")]
23649        pub client_error: ::core::option::Option<i32>,
23650        /// If disconnected, this disconnected was caused by the shared memory
23651        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
23652        /// MEMORY CORRUPTION.
23653        #[prost(bool, optional, tag = "8")]
23654        pub buffer_corrupted: ::core::option::Option<bool>,
23655        /// If disconnected, this disconnect was caused by heapprofd exceeding
23656        /// guardrails during this profiling session.
23657        #[prost(bool, optional, tag = "10")]
23658        pub hit_guardrail: ::core::option::Option<bool>,
23659        #[prost(string, optional, tag = "11")]
23660        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
23661        #[prost(uint64, optional, tag = "12")]
23662        pub sampling_interval_bytes: ::core::option::Option<u64>,
23663        #[prost(uint64, optional, tag = "13")]
23664        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
23665        /// Timestamp of the state of the target process that this dump represents,
23666        /// i.e. the end of the interval covered by the dump (|start_timestamp| is
23667        /// the start). This can be different to the timestamp of the TracePackets
23668        /// for various reasons:
23669        /// * If disconnected is set above, this is the timestamp of last state
23670        ///    heapprofd had of the process before it disconnected.
23671        /// * Otherwise, if the rate of events produced by the process is high,
23672        ///    heapprofd might be behind.
23673        ///
23674        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
23675        ///                to have a type enum that we can reuse here.
23676        #[prost(uint64, optional, tag = "9")]
23677        pub timestamp: ::core::option::Option<u64>,
23678        /// Start of the interval this dump covers (|timestamp| is the end): the
23679        /// profiling start for the first dump, the previous dump's timestamp
23680        /// afterwards. Same clock as |timestamp|. Unset on older producers.
23681        #[prost(uint64, optional, tag = "15")]
23682        pub start_timestamp: ::core::option::Option<u64>,
23683        /// Metadata about heapprofd.
23684        #[prost(message, optional, tag = "5")]
23685        pub stats: ::core::option::Option<ProcessStats>,
23686        #[prost(message, repeated, tag = "2")]
23687        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
23688    }
23689    /// Nested message and enum types in `ProcessHeapSamples`.
23690    pub mod process_heap_samples {
23691        #[derive(
23692            Clone,
23693            Copy,
23694            Debug,
23695            PartialEq,
23696            Eq,
23697            Hash,
23698            PartialOrd,
23699            Ord,
23700            ::prost::Enumeration
23701        )]
23702        #[repr(i32)]
23703        pub enum ClientError {
23704            None = 0,
23705            HitTimeout = 1,
23706            InvalidStackBounds = 2,
23707        }
23708        impl ClientError {
23709            /// String value of the enum field names used in the ProtoBuf definition.
23710            ///
23711            /// The values are not transformed in any way and thus are considered stable
23712            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23713            pub fn as_str_name(&self) -> &'static str {
23714                match self {
23715                    Self::None => "CLIENT_ERROR_NONE",
23716                    Self::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
23717                    Self::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
23718                }
23719            }
23720            /// Creates an enum from field names used in the ProtoBuf definition.
23721            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23722                match value {
23723                    "CLIENT_ERROR_NONE" => Some(Self::None),
23724                    "CLIENT_ERROR_HIT_TIMEOUT" => Some(Self::HitTimeout),
23725                    "CLIENT_ERROR_INVALID_STACK_BOUNDS" => Some(Self::InvalidStackBounds),
23726                    _ => None,
23727                }
23728            }
23729        }
23730    }
23731}
23732/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23733/// testing. Doesn't report the callsite.
23734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23735pub struct StreamingAllocation {
23736    /// TODO(fmayer): Add callstack.
23737    #[prost(uint64, repeated, packed = "false", tag = "1")]
23738    pub address: ::prost::alloc::vec::Vec<u64>,
23739    #[prost(uint64, repeated, packed = "false", tag = "2")]
23740    pub size: ::prost::alloc::vec::Vec<u64>,
23741    #[prost(uint64, repeated, packed = "false", tag = "3")]
23742    pub sample_size: ::prost::alloc::vec::Vec<u64>,
23743    #[prost(uint64, repeated, packed = "false", tag = "4")]
23744    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
23745    #[prost(uint32, repeated, packed = "false", tag = "5")]
23746    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23747    #[prost(uint64, repeated, packed = "false", tag = "6")]
23748    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23749}
23750/// Packet emitted by heapprofd when stream_allocations = true. Only for local
23751/// testing. Doesn't report the callsite.
23752#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23753pub struct StreamingFree {
23754    /// TODO(fmayer): Add callstack.
23755    #[prost(uint64, repeated, packed = "false", tag = "1")]
23756    pub address: ::prost::alloc::vec::Vec<u64>,
23757    #[prost(uint32, repeated, packed = "false", tag = "2")]
23758    pub heap_id: ::prost::alloc::vec::Vec<u32>,
23759    #[prost(uint64, repeated, packed = "false", tag = "3")]
23760    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
23761}
23762/// Packet emitted by the chromium in-process signal-based callstack sampler.
23763/// Represents a series of individual stack samples (sampled at discrete points
23764/// in time), rather than aggregated over an interval.
23765#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23766pub struct StreamingProfilePacket {
23767    /// Index into InternedData.callstacks
23768    #[prost(uint64, repeated, packed = "false", tag = "1")]
23769    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
23770    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
23771    /// this with ClockSnapshot-based delta encoding instead.
23772    #[prost(int64, repeated, packed = "false", tag = "2")]
23773    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
23774    #[prost(int32, optional, tag = "3")]
23775    pub process_priority: ::core::option::Option<i32>,
23776}
23777/// Namespace for the contained enums.
23778#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23779pub struct Profiling {}
23780/// Nested message and enum types in `Profiling`.
23781pub mod profiling {
23782    #[derive(
23783        Clone,
23784        Copy,
23785        Debug,
23786        PartialEq,
23787        Eq,
23788        Hash,
23789        PartialOrd,
23790        Ord,
23791        ::prost::Enumeration
23792    )]
23793    #[repr(i32)]
23794    pub enum CpuMode {
23795        ModeUnknown = 0,
23796        ModeKernel = 1,
23797        ModeUser = 2,
23798        /// The following values aren't expected, but included for completeness:
23799        ModeHypervisor = 3,
23800        ModeGuestKernel = 4,
23801        ModeGuestUser = 5,
23802    }
23803    impl CpuMode {
23804        /// String value of the enum field names used in the ProtoBuf definition.
23805        ///
23806        /// The values are not transformed in any way and thus are considered stable
23807        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23808        pub fn as_str_name(&self) -> &'static str {
23809            match self {
23810                Self::ModeUnknown => "MODE_UNKNOWN",
23811                Self::ModeKernel => "MODE_KERNEL",
23812                Self::ModeUser => "MODE_USER",
23813                Self::ModeHypervisor => "MODE_HYPERVISOR",
23814                Self::ModeGuestKernel => "MODE_GUEST_KERNEL",
23815                Self::ModeGuestUser => "MODE_GUEST_USER",
23816            }
23817        }
23818        /// Creates an enum from field names used in the ProtoBuf definition.
23819        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23820            match value {
23821                "MODE_UNKNOWN" => Some(Self::ModeUnknown),
23822                "MODE_KERNEL" => Some(Self::ModeKernel),
23823                "MODE_USER" => Some(Self::ModeUser),
23824                "MODE_HYPERVISOR" => Some(Self::ModeHypervisor),
23825                "MODE_GUEST_KERNEL" => Some(Self::ModeGuestKernel),
23826                "MODE_GUEST_USER" => Some(Self::ModeGuestUser),
23827                _ => None,
23828            }
23829        }
23830    }
23831    /// Enumeration of libunwindstack's error codes.
23832    /// NB: the integral representations of the two enums are different.
23833    #[derive(
23834        Clone,
23835        Copy,
23836        Debug,
23837        PartialEq,
23838        Eq,
23839        Hash,
23840        PartialOrd,
23841        Ord,
23842        ::prost::Enumeration
23843    )]
23844    #[repr(i32)]
23845    pub enum StackUnwindError {
23846        UnwindErrorUnknown = 0,
23847        UnwindErrorNone = 1,
23848        UnwindErrorMemoryInvalid = 2,
23849        UnwindErrorUnwindInfo = 3,
23850        UnwindErrorUnsupported = 4,
23851        UnwindErrorInvalidMap = 5,
23852        UnwindErrorMaxFramesExceeded = 6,
23853        UnwindErrorRepeatedFrame = 7,
23854        UnwindErrorInvalidElf = 8,
23855        UnwindErrorSystemCall = 9,
23856        UnwindErrorThreadTimeout = 10,
23857        UnwindErrorThreadDoesNotExist = 11,
23858        UnwindErrorBadArch = 12,
23859        UnwindErrorMapsParse = 13,
23860        UnwindErrorInvalidParameter = 14,
23861        UnwindErrorPtraceCall = 15,
23862    }
23863    impl StackUnwindError {
23864        /// String value of the enum field names used in the ProtoBuf definition.
23865        ///
23866        /// The values are not transformed in any way and thus are considered stable
23867        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23868        pub fn as_str_name(&self) -> &'static str {
23869            match self {
23870                Self::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
23871                Self::UnwindErrorNone => "UNWIND_ERROR_NONE",
23872                Self::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
23873                Self::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
23874                Self::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
23875                Self::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
23876                Self::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
23877                Self::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
23878                Self::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
23879                Self::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
23880                Self::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
23881                Self::UnwindErrorThreadDoesNotExist => {
23882                    "UNWIND_ERROR_THREAD_DOES_NOT_EXIST"
23883                }
23884                Self::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
23885                Self::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
23886                Self::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
23887                Self::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
23888            }
23889        }
23890        /// Creates an enum from field names used in the ProtoBuf definition.
23891        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23892            match value {
23893                "UNWIND_ERROR_UNKNOWN" => Some(Self::UnwindErrorUnknown),
23894                "UNWIND_ERROR_NONE" => Some(Self::UnwindErrorNone),
23895                "UNWIND_ERROR_MEMORY_INVALID" => Some(Self::UnwindErrorMemoryInvalid),
23896                "UNWIND_ERROR_UNWIND_INFO" => Some(Self::UnwindErrorUnwindInfo),
23897                "UNWIND_ERROR_UNSUPPORTED" => Some(Self::UnwindErrorUnsupported),
23898                "UNWIND_ERROR_INVALID_MAP" => Some(Self::UnwindErrorInvalidMap),
23899                "UNWIND_ERROR_MAX_FRAMES_EXCEEDED" => {
23900                    Some(Self::UnwindErrorMaxFramesExceeded)
23901                }
23902                "UNWIND_ERROR_REPEATED_FRAME" => Some(Self::UnwindErrorRepeatedFrame),
23903                "UNWIND_ERROR_INVALID_ELF" => Some(Self::UnwindErrorInvalidElf),
23904                "UNWIND_ERROR_SYSTEM_CALL" => Some(Self::UnwindErrorSystemCall),
23905                "UNWIND_ERROR_THREAD_TIMEOUT" => Some(Self::UnwindErrorThreadTimeout),
23906                "UNWIND_ERROR_THREAD_DOES_NOT_EXIST" => {
23907                    Some(Self::UnwindErrorThreadDoesNotExist)
23908                }
23909                "UNWIND_ERROR_BAD_ARCH" => Some(Self::UnwindErrorBadArch),
23910                "UNWIND_ERROR_MAPS_PARSE" => Some(Self::UnwindErrorMapsParse),
23911                "UNWIND_ERROR_INVALID_PARAMETER" => {
23912                    Some(Self::UnwindErrorInvalidParameter)
23913                }
23914                "UNWIND_ERROR_PTRACE_CALL" => Some(Self::UnwindErrorPtraceCall),
23915                _ => None,
23916            }
23917        }
23918    }
23919}
23920/// Packet emitted by the traced_perf sampling performance profiler, which
23921/// gathers data via the perf_event_open syscall. Each packet contains an
23922/// individual sample with a counter value, and optionally a
23923/// callstack.
23924///
23925/// Timestamps are within the root packet. The config can specify the clock, or
23926/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
23927/// timeframe, the default was CLOCK_BOOTTIME.
23928///
23929/// There are several distinct views of this message:
23930/// * indication of kernel buffer data loss (kernel_records_lost set)
23931/// * indication of skipped samples (sample_skipped_reason set)
23932/// * notable event in the sampling implementation (producer_event set)
23933/// * normal sample (timebase_count set, typically also callstack_iid)
23934#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23935pub struct PerfSample {
23936    #[prost(uint32, optional, tag = "1")]
23937    pub cpu: ::core::option::Option<u32>,
23938    #[prost(uint32, optional, tag = "2")]
23939    pub pid: ::core::option::Option<u32>,
23940    #[prost(uint32, optional, tag = "3")]
23941    pub tid: ::core::option::Option<u32>,
23942    /// Execution state that the process was sampled at.
23943    #[prost(enumeration = "profiling::CpuMode", optional, tag = "5")]
23944    pub cpu_mode: ::core::option::Option<i32>,
23945    /// Value of the timebase counter (since the event was configured, no deltas).
23946    #[prost(uint64, optional, tag = "6")]
23947    pub timebase_count: ::core::option::Option<u64>,
23948    /// Value of the followers counter (since the event was configured, no deltas).
23949    #[prost(uint64, repeated, packed = "false", tag = "7")]
23950    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
23951    /// Unwound callstack. Might be partial, in which case a synthetic "error"
23952    /// frame is appended, and |unwind_error| is set accordingly.
23953    #[prost(uint64, optional, tag = "4")]
23954    pub callstack_iid: ::core::option::Option<u64>,
23955    /// If set, indicates that this message is not a sample, but rather an
23956    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
23957    /// loss occurs when the kernel has insufficient ring buffer capacity to write
23958    /// a record (which gets discarded). A record in this context is an individual
23959    /// ring buffer entry, and counts more than just sample records.
23960    ///
23961    /// The |timestamp| of the packet corresponds to the time that the producer
23962    /// wrote the packet for trace-sorting purposes alone, and should not be
23963    /// interpreted relative to the sample timestamps. This field is sufficient to
23964    /// detect that *some* kernel data loss happened within the trace, but not the
23965    /// specific time bounds of that loss (which would require tracking precedessor
23966    /// & successor timestamps, which is not deemed necessary at the moment).
23967    #[prost(uint64, optional, tag = "17")]
23968    pub kernel_records_lost: ::core::option::Option<u64>,
23969    #[prost(message, optional, tag = "19")]
23970    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
23971    /// If set, stack unwinding was incomplete due to an error.
23972    /// Unset values should be treated as UNWIND_ERROR_NONE.
23973    #[prost(oneof = "perf_sample::OptionalUnwindError", tags = "16")]
23974    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
23975    #[prost(oneof = "perf_sample::OptionalSampleSkippedReason", tags = "18")]
23976    pub optional_sample_skipped_reason: ::core::option::Option<
23977        perf_sample::OptionalSampleSkippedReason,
23978    >,
23979}
23980/// Nested message and enum types in `PerfSample`.
23981pub mod perf_sample {
23982    /// A notable event within the sampling implementation.
23983    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23984    pub struct ProducerEvent {
23985        #[prost(oneof = "producer_event::OptionalSourceStopReason", tags = "1")]
23986        pub optional_source_stop_reason: ::core::option::Option<
23987            producer_event::OptionalSourceStopReason,
23988        >,
23989    }
23990    /// Nested message and enum types in `ProducerEvent`.
23991    pub mod producer_event {
23992        #[derive(
23993            Clone,
23994            Copy,
23995            Debug,
23996            PartialEq,
23997            Eq,
23998            Hash,
23999            PartialOrd,
24000            Ord,
24001            ::prost::Enumeration
24002        )]
24003        #[repr(i32)]
24004        pub enum DataSourceStopReason {
24005            ProfilerStopUnknown = 0,
24006            ProfilerStopGuardrail = 1,
24007        }
24008        impl DataSourceStopReason {
24009            /// String value of the enum field names used in the ProtoBuf definition.
24010            ///
24011            /// The values are not transformed in any way and thus are considered stable
24012            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24013            pub fn as_str_name(&self) -> &'static str {
24014                match self {
24015                    Self::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
24016                    Self::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
24017                }
24018            }
24019            /// Creates an enum from field names used in the ProtoBuf definition.
24020            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24021                match value {
24022                    "PROFILER_STOP_UNKNOWN" => Some(Self::ProfilerStopUnknown),
24023                    "PROFILER_STOP_GUARDRAIL" => Some(Self::ProfilerStopGuardrail),
24024                    _ => None,
24025                }
24026            }
24027        }
24028        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24029        pub enum OptionalSourceStopReason {
24030            #[prost(enumeration = "DataSourceStopReason", tag = "1")]
24031            SourceStopReason(i32),
24032        }
24033    }
24034    /// If set, indicates that the profiler encountered a sample that was relevant,
24035    /// but was skipped.
24036    #[derive(
24037        Clone,
24038        Copy,
24039        Debug,
24040        PartialEq,
24041        Eq,
24042        Hash,
24043        PartialOrd,
24044        Ord,
24045        ::prost::Enumeration
24046    )]
24047    #[repr(i32)]
24048    pub enum SampleSkipReason {
24049        ProfilerSkipUnknown = 0,
24050        ProfilerSkipReadStage = 1,
24051        ProfilerSkipUnwindStage = 2,
24052        ProfilerSkipUnwindEnqueue = 3,
24053        ProfilerSkipNotInScope = 4,
24054    }
24055    impl SampleSkipReason {
24056        /// String value of the enum field names used in the ProtoBuf definition.
24057        ///
24058        /// The values are not transformed in any way and thus are considered stable
24059        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24060        pub fn as_str_name(&self) -> &'static str {
24061            match self {
24062                Self::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
24063                Self::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
24064                Self::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
24065                Self::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
24066                Self::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
24067            }
24068        }
24069        /// Creates an enum from field names used in the ProtoBuf definition.
24070        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24071            match value {
24072                "PROFILER_SKIP_UNKNOWN" => Some(Self::ProfilerSkipUnknown),
24073                "PROFILER_SKIP_READ_STAGE" => Some(Self::ProfilerSkipReadStage),
24074                "PROFILER_SKIP_UNWIND_STAGE" => Some(Self::ProfilerSkipUnwindStage),
24075                "PROFILER_SKIP_UNWIND_ENQUEUE" => Some(Self::ProfilerSkipUnwindEnqueue),
24076                "PROFILER_SKIP_NOT_IN_SCOPE" => Some(Self::ProfilerSkipNotInScope),
24077                _ => None,
24078            }
24079        }
24080    }
24081    /// If set, stack unwinding was incomplete due to an error.
24082    /// Unset values should be treated as UNWIND_ERROR_NONE.
24083    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24084    pub enum OptionalUnwindError {
24085        #[prost(enumeration = "super::profiling::StackUnwindError", tag = "16")]
24086        UnwindError(i32),
24087    }
24088    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24089    pub enum OptionalSampleSkippedReason {
24090        #[prost(enumeration = "SampleSkipReason", tag = "18")]
24091        SampleSkippedReason(i32),
24092    }
24093}
24094/// Submessage for TracePacketDefaults.
24095#[derive(Clone, PartialEq, ::prost::Message)]
24096pub struct PerfSampleDefaults {
24097    /// The sampling timebase. Might not be identical to the data source config if
24098    /// the implementation decided to default/override some parameters.
24099    #[prost(message, optional, tag = "1")]
24100    pub timebase: ::core::option::Option<perf_events::Timebase>,
24101    /// Description of followers event
24102    #[prost(message, repeated, tag = "4")]
24103    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
24104    /// If the config requested process sharding, report back the count and which
24105    /// of those bins was selected. Never changes for the duration of a trace.
24106    #[prost(uint32, optional, tag = "2")]
24107    pub process_shard_count: ::core::option::Option<u32>,
24108    #[prost(uint32, optional, tag = "3")]
24109    pub chosen_process_shard: ::core::option::Option<u32>,
24110}
24111#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24112pub struct SmapsEntry {
24113    #[prost(string, optional, tag = "1")]
24114    pub path: ::core::option::Option<::prost::alloc::string::String>,
24115    #[prost(uint64, optional, tag = "2")]
24116    pub size_kb: ::core::option::Option<u64>,
24117    #[prost(uint64, optional, tag = "3")]
24118    pub private_dirty_kb: ::core::option::Option<u64>,
24119    #[prost(uint64, optional, tag = "4")]
24120    pub swap_kb: ::core::option::Option<u64>,
24121    /// for field upload (instead of path).
24122    #[prost(string, optional, tag = "5")]
24123    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
24124    /// Fields below added and used only for Chromium memory infra, see
24125    /// crbug.com/1098746.
24126    #[prost(uint64, optional, tag = "6")]
24127    pub start_address: ::core::option::Option<u64>,
24128    #[prost(uint64, optional, tag = "7")]
24129    pub module_timestamp: ::core::option::Option<u64>,
24130    #[prost(string, optional, tag = "8")]
24131    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
24132    #[prost(string, optional, tag = "9")]
24133    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
24134    #[prost(uint32, optional, tag = "10")]
24135    pub protection_flags: ::core::option::Option<u32>,
24136    #[prost(uint64, optional, tag = "11")]
24137    pub private_clean_resident_kb: ::core::option::Option<u64>,
24138    #[prost(uint64, optional, tag = "12")]
24139    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
24140    #[prost(uint64, optional, tag = "13")]
24141    pub shared_clean_resident_kb: ::core::option::Option<u64>,
24142    #[prost(uint64, optional, tag = "14")]
24143    pub locked_kb: ::core::option::Option<u64>,
24144    #[prost(uint64, optional, tag = "15")]
24145    pub proportional_resident_kb: ::core::option::Option<u64>,
24146}
24147/// Structure-of-arrays style smaps packet of a single process. All packed
24148/// repeated fields, if set, must have the same length.
24149#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24150pub struct PackedSmaps {
24151    /// Table of path names. Notes:
24152    /// * first element is the empty string, serialised explicitly.
24153    /// * the table might contain duplicates.
24154    #[prost(string, repeated, tag = "1")]
24155    pub string_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24156    /// Interned file paths as an index into |string_table|.
24157    /// Note: the "(deleted)" suffix is kept as part of the string_table entry, and
24158    /// is to be handled during trace import stage.
24159    /// Written only if config.unaggregated == true. Otherwise the string_table is
24160    /// exactly the ordered names of the aggregated mappings.
24161    #[prost(uint32, repeated, tag = "2")]
24162    pub name_id: ::prost::alloc::vec::Vec<u32>,
24163    /// How many mappings were merged by name, summing the values below.
24164    /// Written only if config.unaggregated == false.
24165    #[prost(uint32, repeated, tag = "3")]
24166    pub aggregate_count: ::prost::alloc::vec::Vec<u32>,
24167    #[prost(uint64, repeated, tag = "4")]
24168    pub size_kb: ::prost::alloc::vec::Vec<u64>,
24169    #[prost(uint64, repeated, tag = "5")]
24170    pub rss_kb: ::prost::alloc::vec::Vec<u64>,
24171    #[prost(uint64, repeated, tag = "6")]
24172    pub anonymous_kb: ::prost::alloc::vec::Vec<u64>,
24173    #[prost(uint64, repeated, tag = "7")]
24174    pub swap_kb: ::prost::alloc::vec::Vec<u64>,
24175    #[prost(uint64, repeated, tag = "8")]
24176    pub shared_clean_kb: ::prost::alloc::vec::Vec<u64>,
24177    #[prost(uint64, repeated, tag = "9")]
24178    pub shared_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24179    #[prost(uint64, repeated, tag = "10")]
24180    pub private_clean_kb: ::prost::alloc::vec::Vec<u64>,
24181    #[prost(uint64, repeated, tag = "11")]
24182    pub private_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24183    #[prost(uint64, repeated, tag = "12")]
24184    pub locked_kb: ::prost::alloc::vec::Vec<u64>,
24185    #[prost(uint64, repeated, tag = "13")]
24186    pub pss_kb: ::prost::alloc::vec::Vec<u64>,
24187    #[prost(uint64, repeated, tag = "14")]
24188    pub pss_dirty_kb: ::prost::alloc::vec::Vec<u64>,
24189    #[prost(uint64, repeated, tag = "15")]
24190    pub swap_pss_kb: ::prost::alloc::vec::Vec<u64>,
24191}
24192#[derive(Clone, PartialEq, ::prost::Message)]
24193pub struct SmapsPacket {
24194    #[prost(uint32, optional, tag = "1")]
24195    pub pid: ::core::option::Option<u32>,
24196    #[prost(message, repeated, tag = "2")]
24197    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
24198    #[prost(message, optional, tag = "3")]
24199    pub packed_entries: ::core::option::Option<PackedSmaps>,
24200    #[prost(enumeration = "smaps_packet::RecordingType", optional, tag = "4")]
24201    pub recording_type: ::core::option::Option<i32>,
24202}
24203/// Nested message and enum types in `SmapsPacket`.
24204pub mod smaps_packet {
24205    /// Records how the snapshot was generated, as the message is shared by
24206    /// multiple smaps writers.
24207    /// If populating |packed_entries|, set explicitly to RECORDING_TYPE_STANDALONE
24208    /// as otherwise the trace importer might transform the data.
24209    #[derive(
24210        Clone,
24211        Copy,
24212        Debug,
24213        PartialEq,
24214        Eq,
24215        Hash,
24216        PartialOrd,
24217        Ord,
24218        ::prost::Enumeration
24219    )]
24220    #[repr(i32)]
24221    pub enum RecordingType {
24222        Unknown = 0,
24223        /// Normal recording.
24224        Standalone = 1,
24225        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
24226        /// heap dump. Recording is done inside of a forked child process, which
24227        /// means private/shared and pss fields are misleading as there is
24228        /// copy-on-write page sharing with the forked child.
24229        ArtHprofPostfork = 2,
24230        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
24231        /// heap dump, but with the original smaps calculated before forking in the
24232        /// plugin.
24233        ArtHprofPrefork = 3,
24234    }
24235    impl RecordingType {
24236        /// String value of the enum field names used in the ProtoBuf definition.
24237        ///
24238        /// The values are not transformed in any way and thus are considered stable
24239        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24240        pub fn as_str_name(&self) -> &'static str {
24241            match self {
24242                Self::Unknown => "RECORDING_TYPE_UNKNOWN",
24243                Self::Standalone => "RECORDING_TYPE_STANDALONE",
24244                Self::ArtHprofPostfork => "RECORDING_TYPE_ART_HPROF_POSTFORK",
24245                Self::ArtHprofPrefork => "RECORDING_TYPE_ART_HPROF_PREFORK",
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                "RECORDING_TYPE_UNKNOWN" => Some(Self::Unknown),
24252                "RECORDING_TYPE_STANDALONE" => Some(Self::Standalone),
24253                "RECORDING_TYPE_ART_HPROF_POSTFORK" => Some(Self::ArtHprofPostfork),
24254                "RECORDING_TYPE_ART_HPROF_PREFORK" => Some(Self::ArtHprofPrefork),
24255                _ => None,
24256            }
24257        }
24258    }
24259}
24260/// Per-process periodically sampled stats. These samples are wrapped in a
24261/// dedicated message (as opposite to be fields in process_tree.proto) because
24262/// they are dumped at a different rate than cmdline and thread list.
24263/// Note: not all of these stats will be present in every ProcessStats message
24264/// and sometimes processes may be missing. This is because counters are
24265/// cached to reduce emission of counters which do not change.
24266#[derive(Clone, PartialEq, ::prost::Message)]
24267pub struct ProcessStats {
24268    #[prost(message, repeated, tag = "1")]
24269    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
24270    /// The time at which we finish collecting this batch of samples;
24271    /// the top-level packet timestamp is the time at which
24272    /// we begin collection.
24273    #[prost(uint64, optional, tag = "2")]
24274    pub collection_end_timestamp: ::core::option::Option<u64>,
24275}
24276/// Nested message and enum types in `ProcessStats`.
24277pub mod process_stats {
24278    /// Per-thread periodically sampled stats.
24279    /// Note: not all of these stats will be present in every message. See the note
24280    /// for ProcessStats.
24281    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24282    pub struct Thread {
24283        #[prost(int32, optional, tag = "1")]
24284        pub tid: ::core::option::Option<i32>,
24285    }
24286    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24287    pub struct FdInfo {
24288        #[prost(uint64, optional, tag = "1")]
24289        pub fd: ::core::option::Option<u64>,
24290        #[prost(string, optional, tag = "2")]
24291        pub path: ::core::option::Option<::prost::alloc::string::String>,
24292    }
24293    #[derive(Clone, PartialEq, ::prost::Message)]
24294    pub struct Process {
24295        #[prost(int32, optional, tag = "1")]
24296        pub pid: ::core::option::Option<i32>,
24297        #[prost(message, repeated, tag = "11")]
24298        pub threads: ::prost::alloc::vec::Vec<Thread>,
24299        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
24300        #[prost(uint64, optional, tag = "2")]
24301        pub vm_size_kb: ::core::option::Option<u64>,
24302        #[prost(uint64, optional, tag = "3")]
24303        pub vm_rss_kb: ::core::option::Option<u64>,
24304        #[prost(uint64, optional, tag = "4")]
24305        pub rss_anon_kb: ::core::option::Option<u64>,
24306        #[prost(uint64, optional, tag = "5")]
24307        pub rss_file_kb: ::core::option::Option<u64>,
24308        #[prost(uint64, optional, tag = "6")]
24309        pub rss_shmem_kb: ::core::option::Option<u64>,
24310        #[prost(uint64, optional, tag = "7")]
24311        pub vm_swap_kb: ::core::option::Option<u64>,
24312        #[prost(uint64, optional, tag = "8")]
24313        pub vm_locked_kb: ::core::option::Option<u64>,
24314        /// When adding a new field remember to update kProcMemCounterSize in
24315        /// the trace processor.
24316        #[prost(uint64, optional, tag = "9")]
24317        pub vm_hwm_kb: ::core::option::Option<u64>,
24318        #[prost(int64, optional, tag = "10")]
24319        pub oom_score_adj: ::core::option::Option<i64>,
24320        /// The peak resident set size is resettable in newer Posix kernels.
24321        /// This field specifies if reset is supported and if the writer had reset
24322        /// the peaks after each process stats recording.
24323        #[prost(bool, optional, tag = "12")]
24324        pub is_peak_rss_resettable: ::core::option::Option<bool>,
24325        /// Private, shared and swap footprint of the process as measured by
24326        /// Chrome. To know more about these metrics refer to:
24327        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
24328        #[prost(uint32, optional, tag = "13")]
24329        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
24330        #[prost(uint32, optional, tag = "14")]
24331        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
24332        #[prost(message, repeated, tag = "15")]
24333        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
24334        /// These fields are set only when scan_smaps_rollup=true
24335        #[prost(uint64, optional, tag = "16")]
24336        pub smr_rss_kb: ::core::option::Option<u64>,
24337        #[prost(uint64, optional, tag = "17")]
24338        pub smr_pss_kb: ::core::option::Option<u64>,
24339        #[prost(uint64, optional, tag = "18")]
24340        pub smr_pss_anon_kb: ::core::option::Option<u64>,
24341        #[prost(uint64, optional, tag = "19")]
24342        pub smr_pss_file_kb: ::core::option::Option<u64>,
24343        #[prost(uint64, optional, tag = "20")]
24344        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
24345        #[prost(uint64, optional, tag = "23")]
24346        pub smr_swap_pss_kb: ::core::option::Option<u64>,
24347        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
24348        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24349        /// Resolution of "clock ticks", usually 10ms.
24350        #[prost(uint64, optional, tag = "21")]
24351        pub runtime_user_mode: ::core::option::Option<u64>,
24352        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
24353        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
24354        /// Resolution of "clock ticks", usually 10ms.
24355        #[prost(uint64, optional, tag = "22")]
24356        pub runtime_kernel_mode: ::core::option::Option<u64>,
24357        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
24358        #[prost(uint64, optional, tag = "24")]
24359        pub dmabuf_rss_kb: ::core::option::Option<u64>,
24360    }
24361}
24362/// Metadata about the processes and threads in the trace.
24363/// Note: this proto was designed to be filled in by traced_probes and should
24364/// only be populated with accurate information coming from the system. Other
24365/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
24366/// in TrackDescriptor.
24367#[derive(Clone, PartialEq, ::prost::Message)]
24368pub struct ProcessTree {
24369    /// List of processes and threads in the client. These lists are incremental
24370    /// and not exhaustive. A process and its threads might show up separately in
24371    /// different ProcessTree messages. A thread might event not show up at all, if
24372    /// no sched_switch activity was detected, for instance:
24373    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{pid: 11, tgid: 10}\] }
24374    /// #1 { threads: \[{pid: 12, tgid: 10}\] }
24375    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{pid: 13, tgid: 10}\] }
24376    #[prost(message, repeated, tag = "1")]
24377    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
24378    #[prost(message, repeated, tag = "2")]
24379    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
24380    /// The time at which we finish collecting this process tree;
24381    /// the top-level packet timestamp is the time at which
24382    /// we begin collection.
24383    #[prost(uint64, optional, tag = "3")]
24384    pub collection_end_timestamp: ::core::option::Option<u64>,
24385}
24386/// Nested message and enum types in `ProcessTree`.
24387pub mod process_tree {
24388    /// Representation of a thread.
24389    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24390    pub struct Thread {
24391        /// The thread ID (as per gettid()) in the root PID namespace.
24392        #[prost(int32, optional, tag = "1")]
24393        pub tid: ::core::option::Option<i32>,
24394        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
24395        #[prost(int32, optional, tag = "3")]
24396        pub tgid: ::core::option::Option<i32>,
24397        /// The name of the thread.
24398        #[prost(string, optional, tag = "2")]
24399        pub name: ::core::option::Option<::prost::alloc::string::String>,
24400        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
24401        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
24402        /// level thread ID) omitted.
24403        #[prost(int32, repeated, packed = "false", tag = "4")]
24404        pub nstid: ::prost::alloc::vec::Vec<i32>,
24405    }
24406    /// Representation of a process.
24407    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24408    pub struct Process {
24409        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
24410        /// PID namespace.
24411        #[prost(int32, optional, tag = "1")]
24412        pub pid: ::core::option::Option<i32>,
24413        /// The parent process ID, as per getppid().
24414        #[prost(int32, optional, tag = "2")]
24415        pub ppid: ::core::option::Option<i32>,
24416        /// The command line for the process, as per /proc/pid/cmdline, broken up on
24417        /// NUL bytes.
24418        /// If it is a kernel thread or a zombie, there will only be one cmdline
24419        /// field and it will contain /proc/pid/comm.
24420        #[prost(string, repeated, tag = "3")]
24421        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24422        /// If true, the |cmdline| field was filled with the main thread's "comm"
24423        /// field instead.
24424        /// Introduced in: perfetto v50.
24425        #[prost(bool, optional, tag = "9")]
24426        pub cmdline_is_comm: ::core::option::Option<bool>,
24427        /// The uid for the process, as per /proc/pid/status.
24428        #[prost(int32, optional, tag = "5")]
24429        pub uid: ::core::option::Option<i32>,
24430        /// The non-root-level process IDs if the process runs in a PID namespace.
24431        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
24432        /// (root-level process ID) omitted.
24433        #[prost(int32, repeated, packed = "false", tag = "6")]
24434        pub nspid: ::prost::alloc::vec::Vec<i32>,
24435        /// Timestamp of when the process was created, in nanoseconds
24436        /// from boot. Parsed from starttime in /proc/pid/stat.
24437        /// Recorded if record_process_age config option is set.
24438        /// Resolution of "clock ticks", usually 10ms.
24439        #[prost(uint64, optional, tag = "7")]
24440        pub process_start_from_boot: ::core::option::Option<u64>,
24441        /// If true, the process is a kernel thread.
24442        /// Set only on linux v6.4+. For traces from older devices, it is possible to
24443        /// infer most kthreads by checking that they're a descendant of kthreadd
24444        /// (pid=2), or are the idle process (pid=0).
24445        /// Introduced in: perfetto v50.
24446        #[prost(bool, optional, tag = "8")]
24447        pub is_kthread: ::core::option::Option<bool>,
24448    }
24449}
24450/// Records the parameters for aligning clock readings between machines.
24451#[derive(Clone, PartialEq, ::prost::Message)]
24452pub struct RemoteClockSync {
24453    #[prost(message, repeated, tag = "1")]
24454    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
24455}
24456/// Nested message and enum types in `RemoteClockSync`.
24457pub mod remote_clock_sync {
24458    /// Synchronized clock snapshots taken on both sides of the relay port (the
24459    /// tracing service and the relay service). A round of clock synchronization
24460    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
24461    /// snapshot -> client snapshot -> host snapshot.
24462    #[derive(Clone, PartialEq, ::prost::Message)]
24463    pub struct SyncedClocks {
24464        #[prost(message, optional, tag = "2")]
24465        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
24466        #[prost(message, optional, tag = "3")]
24467        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
24468    }
24469}
24470/// Deliberate empty message. See comment on StatsdAtom#atom below.
24471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24472pub struct Atom {}
24473/// One or more statsd atoms. This must continue to match:
24474/// perfetto/protos/third_party/statsd/shell_data.proto
24475/// So that we can efficiently add data from statsd directly to the
24476/// trace.
24477#[derive(Clone, PartialEq, ::prost::Message)]
24478pub struct StatsdAtom {
24479    /// Atom should be filled with an Atom proto from:
24480    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
24481    /// We don't reference Atom directly here since we don't want to import
24482    /// Atom.proto and all its transitive dependencies into Perfetto.
24483    /// atom and timestamp_nanos have the same cardinality
24484    #[prost(message, repeated, tag = "1")]
24485    pub atom: ::prost::alloc::vec::Vec<Atom>,
24486    #[prost(int64, repeated, packed = "false", tag = "2")]
24487    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
24488}
24489/// Various Linux system stat counters from /proc.
24490/// The fields in this message can be reported at different rates and with
24491/// different granularity. See sys_stats_config.proto.
24492#[derive(Clone, PartialEq, ::prost::Message)]
24493pub struct SysStats {
24494    #[prost(message, repeated, tag = "1")]
24495    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
24496    #[prost(message, repeated, tag = "2")]
24497    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
24498    /// One entry per cpu.
24499    #[prost(message, repeated, tag = "3")]
24500    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
24501    /// Num processes forked since boot.
24502    /// Populated only if FORK_COUNT in config.stat_counters.
24503    #[prost(uint64, optional, tag = "4")]
24504    pub num_forks: ::core::option::Option<u64>,
24505    /// Total num of irqs serviced since boot.
24506    #[prost(uint64, optional, tag = "5")]
24507    pub num_irq_total: ::core::option::Option<u64>,
24508    #[prost(message, repeated, tag = "6")]
24509    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24510    /// Total num of softirqs since boot.
24511    #[prost(uint64, optional, tag = "7")]
24512    pub num_softirq_total: ::core::option::Option<u64>,
24513    /// Per-softirq count.
24514    #[prost(message, repeated, tag = "8")]
24515    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
24516    /// The time at which we finish collecting this set of samples;
24517    /// the top-level packet timestamp is the time at which
24518    /// we begin collection.
24519    #[prost(uint64, optional, tag = "9")]
24520    pub collection_end_timestamp: ::core::option::Option<u64>,
24521    /// One entry per device.
24522    #[prost(message, repeated, tag = "10")]
24523    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
24524    /// Cpu current frequency from
24525    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
24526    /// One entry per cpu. Report 0 for offline cpu
24527    #[prost(uint32, repeated, packed = "false", tag = "11")]
24528    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
24529    /// One entry per each node's zones.
24530    #[prost(message, repeated, tag = "12")]
24531    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
24532    /// One entry per disk device.
24533    #[prost(message, repeated, tag = "13")]
24534    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
24535    /// One entry per PsiResource type.
24536    #[prost(message, repeated, tag = "14")]
24537    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
24538    #[prost(message, repeated, tag = "15")]
24539    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
24540    #[prost(message, repeated, tag = "16")]
24541    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
24542    /// Read GPU frequency info on Intel/AMD devices.
24543    #[prost(uint64, repeated, packed = "false", tag = "17")]
24544    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
24545    #[prost(message, repeated, tag = "18")]
24546    pub slab_info: ::prost::alloc::vec::Vec<sys_stats::SlabInfo>,
24547}
24548/// Nested message and enum types in `SysStats`.
24549pub mod sys_stats {
24550    /// Counters from /proc/meminfo. Values are in KB.
24551    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24552    pub struct MeminfoValue {
24553        #[prost(enumeration = "super::MeminfoCounters", optional, tag = "1")]
24554        pub key: ::core::option::Option<i32>,
24555        #[prost(uint64, optional, tag = "2")]
24556        pub value: ::core::option::Option<u64>,
24557    }
24558    /// Counter from /proc/vmstat. Units are often pages, not KB.
24559    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24560    pub struct VmstatValue {
24561        #[prost(enumeration = "super::VmstatCounters", optional, tag = "1")]
24562        pub key: ::core::option::Option<i32>,
24563        #[prost(uint64, optional, tag = "2")]
24564        pub value: ::core::option::Option<u64>,
24565    }
24566    /// Times in each mode, since boot. Unit: nanoseconds.
24567    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24568    pub struct CpuTimes {
24569        #[prost(uint32, optional, tag = "1")]
24570        pub cpu_id: ::core::option::Option<u32>,
24571        /// Time spent in user mode.
24572        #[prost(uint64, optional, tag = "2")]
24573        pub user_ns: ::core::option::Option<u64>,
24574        /// Time spent in user mode (low prio).
24575        #[prost(uint64, optional, tag = "3")]
24576        pub user_nice_ns: ::core::option::Option<u64>,
24577        /// Time spent in system mode.
24578        #[prost(uint64, optional, tag = "4")]
24579        pub system_mode_ns: ::core::option::Option<u64>,
24580        /// Time spent in the idle task.
24581        #[prost(uint64, optional, tag = "5")]
24582        pub idle_ns: ::core::option::Option<u64>,
24583        /// Time spent waiting for I/O.
24584        #[prost(uint64, optional, tag = "6")]
24585        pub io_wait_ns: ::core::option::Option<u64>,
24586        /// Time spent servicing interrupts.
24587        #[prost(uint64, optional, tag = "7")]
24588        pub irq_ns: ::core::option::Option<u64>,
24589        /// Time spent servicing softirqs.
24590        #[prost(uint64, optional, tag = "8")]
24591        pub softirq_ns: ::core::option::Option<u64>,
24592        /// Time spent executing something else on host than this guest.
24593        #[prost(uint64, optional, tag = "9")]
24594        pub steal_ns: ::core::option::Option<u64>,
24595    }
24596    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24597    pub struct InterruptCount {
24598        #[prost(int32, optional, tag = "1")]
24599        pub irq: ::core::option::Option<i32>,
24600        #[prost(uint64, optional, tag = "2")]
24601        pub count: ::core::option::Option<u64>,
24602    }
24603    /// Frequencies for /sys/class/devfreq/ entries in kHz.
24604    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24605    pub struct DevfreqValue {
24606        #[prost(string, optional, tag = "1")]
24607        pub key: ::core::option::Option<::prost::alloc::string::String>,
24608        #[prost(uint64, optional, tag = "2")]
24609        pub value: ::core::option::Option<u64>,
24610    }
24611    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24612    pub struct BuddyInfo {
24613        #[prost(string, optional, tag = "1")]
24614        pub node: ::core::option::Option<::prost::alloc::string::String>,
24615        #[prost(string, optional, tag = "2")]
24616        pub zone: ::core::option::Option<::prost::alloc::string::String>,
24617        #[prost(uint32, repeated, packed = "false", tag = "3")]
24618        pub order_pages: ::prost::alloc::vec::Vec<u32>,
24619    }
24620    /// Counters from /proc/diskstats.
24621    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24622    pub struct DiskStat {
24623        #[prost(string, optional, tag = "1")]
24624        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
24625        #[prost(uint64, optional, tag = "2")]
24626        pub read_sectors: ::core::option::Option<u64>,
24627        #[prost(uint64, optional, tag = "3")]
24628        pub read_time_ms: ::core::option::Option<u64>,
24629        #[prost(uint64, optional, tag = "4")]
24630        pub write_sectors: ::core::option::Option<u64>,
24631        #[prost(uint64, optional, tag = "5")]
24632        pub write_time_ms: ::core::option::Option<u64>,
24633        #[prost(uint64, optional, tag = "6")]
24634        pub discard_sectors: ::core::option::Option<u64>,
24635        #[prost(uint64, optional, tag = "7")]
24636        pub discard_time_ms: ::core::option::Option<u64>,
24637        #[prost(uint64, optional, tag = "8")]
24638        pub flush_count: ::core::option::Option<u64>,
24639        #[prost(uint64, optional, tag = "9")]
24640        pub flush_time_ms: ::core::option::Option<u64>,
24641    }
24642    /// Reading from /proc/pressure/*.
24643    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24644    pub struct PsiSample {
24645        #[prost(enumeration = "psi_sample::PsiResource", optional, tag = "1")]
24646        pub resource: ::core::option::Option<i32>,
24647        /// Total absolute stall time (in nanos) for a given resource.
24648        /// While PSI readings are in micros, we store in nanos for consistency with
24649        /// most other time-based counters.
24650        #[prost(uint64, optional, tag = "2")]
24651        pub total_ns: ::core::option::Option<u64>,
24652    }
24653    /// Nested message and enum types in `PsiSample`.
24654    pub mod psi_sample {
24655        /// Type of resource that may have exhibited pressure stalls.
24656        ///     * _SOME indicates some resource tasks stalled.
24657        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
24658        #[derive(
24659            Clone,
24660            Copy,
24661            Debug,
24662            PartialEq,
24663            Eq,
24664            Hash,
24665            PartialOrd,
24666            Ord,
24667            ::prost::Enumeration
24668        )]
24669        #[repr(i32)]
24670        pub enum PsiResource {
24671            Unspecified = 0,
24672            CpuSome = 1,
24673            CpuFull = 2,
24674            IoSome = 3,
24675            IoFull = 4,
24676            MemorySome = 5,
24677            MemoryFull = 6,
24678        }
24679        impl PsiResource {
24680            /// String value of the enum field names used in the ProtoBuf definition.
24681            ///
24682            /// The values are not transformed in any way and thus are considered stable
24683            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24684            pub fn as_str_name(&self) -> &'static str {
24685                match self {
24686                    Self::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
24687                    Self::CpuSome => "PSI_RESOURCE_CPU_SOME",
24688                    Self::CpuFull => "PSI_RESOURCE_CPU_FULL",
24689                    Self::IoSome => "PSI_RESOURCE_IO_SOME",
24690                    Self::IoFull => "PSI_RESOURCE_IO_FULL",
24691                    Self::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
24692                    Self::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
24693                }
24694            }
24695            /// Creates an enum from field names used in the ProtoBuf definition.
24696            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24697                match value {
24698                    "PSI_RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
24699                    "PSI_RESOURCE_CPU_SOME" => Some(Self::CpuSome),
24700                    "PSI_RESOURCE_CPU_FULL" => Some(Self::CpuFull),
24701                    "PSI_RESOURCE_IO_SOME" => Some(Self::IoSome),
24702                    "PSI_RESOURCE_IO_FULL" => Some(Self::IoFull),
24703                    "PSI_RESOURCE_MEMORY_SOME" => Some(Self::MemorySome),
24704                    "PSI_RESOURCE_MEMORY_FULL" => Some(Self::MemoryFull),
24705                    _ => None,
24706                }
24707            }
24708        }
24709    }
24710    /// Reading from /sys/class/thermal/*.
24711    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24712    pub struct ThermalZone {
24713        #[prost(string, optional, tag = "1")]
24714        pub name: ::core::option::Option<::prost::alloc::string::String>,
24715        #[prost(uint64, optional, tag = "2")]
24716        pub temp: ::core::option::Option<u64>,
24717        #[prost(string, optional, tag = "3")]
24718        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
24719    }
24720    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
24721    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24722    pub struct CpuIdleStateEntry {
24723        /// Name of the idle state, e.g. C1-C10
24724        #[prost(string, optional, tag = "1")]
24725        pub state: ::core::option::Option<::prost::alloc::string::String>,
24726        #[prost(uint64, optional, tag = "2")]
24727        pub duration_us: ::core::option::Option<u64>,
24728    }
24729    #[derive(Clone, PartialEq, ::prost::Message)]
24730    pub struct CpuIdleState {
24731        #[prost(uint32, optional, tag = "1")]
24732        pub cpu_id: ::core::option::Option<u32>,
24733        #[prost(message, repeated, tag = "2")]
24734        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
24735    }
24736    /// Reading from /proc/slabinfo.
24737    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24738    pub struct SlabInfo {
24739        #[prost(string, optional, tag = "1")]
24740        pub name: ::core::option::Option<::prost::alloc::string::String>,
24741        #[prost(uint32, optional, tag = "2")]
24742        pub pages_per_slab: ::core::option::Option<u32>,
24743        #[prost(uint32, optional, tag = "3")]
24744        pub num_slabs: ::core::option::Option<u32>,
24745    }
24746}
24747/// Information about CPUs from procfs and sysfs.
24748#[derive(Clone, PartialEq, ::prost::Message)]
24749pub struct CpuInfo {
24750    /// Describes available CPUs, one entry per CPU.
24751    #[prost(message, repeated, tag = "1")]
24752    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
24753}
24754/// Nested message and enum types in `CpuInfo`.
24755pub mod cpu_info {
24756    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24757    pub struct ArmCpuIdentifier {
24758        /// Implementer code
24759        #[prost(uint32, optional, tag = "1")]
24760        pub implementer: ::core::option::Option<u32>,
24761        /// Architecture code
24762        #[prost(uint32, optional, tag = "2")]
24763        pub architecture: ::core::option::Option<u32>,
24764        /// CPU variant
24765        #[prost(uint32, optional, tag = "3")]
24766        pub variant: ::core::option::Option<u32>,
24767        /// CPU part
24768        #[prost(uint32, optional, tag = "4")]
24769        pub part: ::core::option::Option<u32>,
24770        /// CPU revision
24771        #[prost(uint32, optional, tag = "5")]
24772        pub revision: ::core::option::Option<u32>,
24773    }
24774    /// Information about a single CPU.
24775    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24776    pub struct Cpu {
24777        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
24778        /// Example: "AArch64 Processor rev 12 (aarch64)"
24779        #[prost(string, optional, tag = "1")]
24780        pub processor: ::core::option::Option<::prost::alloc::string::String>,
24781        /// Frequencies from
24782        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
24783        /// where X is the index of this CPU.
24784        #[prost(uint32, repeated, packed = "false", tag = "2")]
24785        pub frequencies: ::prost::alloc::vec::Vec<u32>,
24786        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
24787        /// the index of this CPU.
24788        #[prost(uint32, optional, tag = "3")]
24789        pub capacity: ::core::option::Option<u32>,
24790        /// Features is a bitmap containing a bit set for each feature defined in
24791        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
24792        /// index.
24793        #[prost(uint64, optional, tag = "5")]
24794        pub features: ::core::option::Option<u64>,
24795        /// Code to identify the CPU
24796        #[prost(oneof = "cpu::Identifier", tags = "4")]
24797        pub identifier: ::core::option::Option<cpu::Identifier>,
24798    }
24799    /// Nested message and enum types in `Cpu`.
24800    pub mod cpu {
24801        /// Code to identify the CPU
24802        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
24803        pub enum Identifier {
24804            #[prost(message, tag = "4")]
24805            ArmIdentifier(super::ArmCpuIdentifier),
24806        }
24807    }
24808}
24809/// Information about GPUs on the device.
24810#[derive(Clone, PartialEq, ::prost::Message)]
24811pub struct GpuInfo {
24812    /// Describes available GPUs, one entry per GPU. The index in the list
24813    /// corresponds to the gpu_id used elsewhere in the trace.
24814    #[prost(message, repeated, tag = "1")]
24815    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
24816}
24817/// Nested message and enum types in `GpuInfo`.
24818pub mod gpu_info {
24819    /// Information about a single GPU.
24820    #[derive(Clone, PartialEq, ::prost::Message)]
24821    pub struct Gpu {
24822        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
24823        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
24824        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
24825        /// share the same name, consider appending an index to distinguish them
24826        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
24827        #[prost(string, optional, tag = "1")]
24828        pub name: ::core::option::Option<::prost::alloc::string::String>,
24829        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
24830        #[prost(string, optional, tag = "2")]
24831        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
24832        /// GPU model/product identifier.
24833        #[prost(string, optional, tag = "3")]
24834        pub model: ::core::option::Option<::prost::alloc::string::String>,
24835        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
24836        #[prost(string, optional, tag = "4")]
24837        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
24838        /// 16-byte device UUID when available.
24839        #[prost(bytes = "vec", optional, tag = "5")]
24840        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
24841        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
24842        #[prost(string, optional, tag = "7")]
24843        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
24844        #[prost(message, repeated, tag = "6")]
24845        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
24846    }
24847    /// Nested message and enum types in `Gpu`.
24848    pub mod gpu {
24849        /// Arbitrary key-value pairs for vendor-specific info
24850        /// (driver version, memory size, compute capability, clock speeds, etc.).
24851        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24852        pub struct KeyValue {
24853            #[prost(string, optional, tag = "1")]
24854            pub key: ::core::option::Option<::prost::alloc::string::String>,
24855            #[prost(string, optional, tag = "2")]
24856            pub value: ::core::option::Option<::prost::alloc::string::String>,
24857        }
24858    }
24859}
24860/// Hardware interrupt (IRQ) ID-to-name mappings collected from
24861/// /proc/interrupts at the start of a trace.
24862/// Emitted by the linux.system_info data source when irq_names: true is set
24863/// in SystemInfoConfig.
24864#[derive(Clone, PartialEq, ::prost::Message)]
24865pub struct InterruptInfo {
24866    /// One entry per hardware IRQ found in /proc/interrupts.
24867    #[prost(message, repeated, tag = "1")]
24868    pub irq_mapping: ::prost::alloc::vec::Vec<interrupt_info::InterruptMapping>,
24869}
24870/// Nested message and enum types in `InterruptInfo`.
24871pub mod interrupt_info {
24872    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24873    pub struct InterruptMapping {
24874        /// Numeric IRQ identifier.
24875        #[prost(uint32, optional, tag = "1")]
24876        pub irq_id: ::core::option::Option<u32>,
24877        /// Human-readable name for the IRQ (e.g. "arch_timer", "arm-pmu").
24878        #[prost(string, optional, tag = "2")]
24879        pub name: ::core::option::Option<::prost::alloc::string::String>,
24880    }
24881}
24882/// Event used by testing code.
24883#[derive(Clone, PartialEq, ::prost::Message)]
24884pub struct TestEvent {
24885    /// Arbitrary string used in tests.
24886    #[prost(string, optional, tag = "1")]
24887    pub str: ::core::option::Option<::prost::alloc::string::String>,
24888    /// The current value of the random number sequence used in tests.
24889    #[prost(uint32, optional, tag = "2")]
24890    pub seq_value: ::core::option::Option<u32>,
24891    /// Monotonically increased on each packet.
24892    #[prost(uint64, optional, tag = "3")]
24893    pub counter: ::core::option::Option<u64>,
24894    /// No more packets should follow (from the current sequence).
24895    #[prost(bool, optional, tag = "4")]
24896    pub is_last: ::core::option::Option<bool>,
24897    #[prost(message, optional, tag = "5")]
24898    pub payload: ::core::option::Option<test_event::TestPayload>,
24899    #[prost(message, optional, tag = "6")]
24900    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
24901    #[prost(message, optional, tag = "7")]
24902    pub protovm_incremental_state: ::core::option::Option<
24903        test_event::ProtoVmIncrementalState,
24904    >,
24905}
24906/// Nested message and enum types in `TestEvent`.
24907pub mod test_event {
24908    #[derive(Clone, PartialEq, ::prost::Message)]
24909    pub struct TestPayload {
24910        #[prost(string, repeated, tag = "1")]
24911        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
24912        #[prost(message, repeated, tag = "2")]
24913        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
24914        #[prost(string, optional, tag = "4")]
24915        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
24916        #[prost(int32, optional, tag = "5")]
24917        pub single_int: ::core::option::Option<i32>,
24918        #[prost(int32, repeated, packed = "false", tag = "6")]
24919        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
24920        /// When 0 this is the bottom-most nested message.
24921        #[prost(uint32, optional, tag = "3")]
24922        pub remaining_nesting_depth: ::core::option::Option<u32>,
24923        #[prost(message, repeated, tag = "7")]
24924        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
24925    }
24926    /// Simple ProtoVm patch and incremental state formats used for testing
24927    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24928    pub struct ProtoVmMessage {
24929        #[prost(uint32, optional, tag = "1")]
24930        pub id: ::core::option::Option<u32>,
24931        #[prost(message, optional, tag = "2")]
24932        pub submessage: ::core::option::Option<proto_vm_message::ProtoVmSubmessage>,
24933    }
24934    /// Nested message and enum types in `ProtoVmMessage`.
24935    pub mod proto_vm_message {
24936        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24937        pub struct ProtoVmSubmessage {
24938            #[prost(uint32, optional, tag = "1")]
24939            pub single_int: ::core::option::Option<u32>,
24940        }
24941    }
24942    #[derive(Clone, PartialEq, ::prost::Message)]
24943    pub struct ProtoVmPatch {
24944        #[prost(string, optional, tag = "1")]
24945        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
24946        #[prost(int32, optional, tag = "2")]
24947        pub int_to_merge: ::core::option::Option<i32>,
24948        #[prost(message, optional, tag = "3")]
24949        pub single_message: ::core::option::Option<ProtoVmMessage>,
24950        #[prost(message, repeated, tag = "4")]
24951        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
24952        #[prost(uint32, repeated, packed = "false", tag = "5")]
24953        pub delete_message_ids: ::prost::alloc::vec::Vec<u32>,
24954    }
24955    #[derive(Clone, PartialEq, ::prost::Message)]
24956    pub struct ProtoVmIncrementalState {
24957        #[prost(string, optional, tag = "1")]
24958        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
24959        #[prost(int32, optional, tag = "2")]
24960        pub int_merged: ::core::option::Option<i32>,
24961        #[prost(message, optional, tag = "3")]
24962        pub single_message: ::core::option::Option<ProtoVmMessage>,
24963        #[prost(message, repeated, tag = "4")]
24964        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
24965    }
24966}
24967/// Default values for TracePacket fields that hold for a particular TraceWriter
24968/// packet sequence. This message contains a subset of the TracePacket fields
24969/// with matching IDs. When provided, these fields define the default values
24970/// that should be applied, at import time, to all TracePacket(s) with the same
24971/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
24972///
24973/// Should be reemitted whenever incremental state is cleared on the sequence.
24974#[derive(Clone, PartialEq, ::prost::Message)]
24975pub struct TracePacketDefaults {
24976    #[prost(uint32, optional, tag = "58")]
24977    pub timestamp_clock_id: ::core::option::Option<u32>,
24978    /// Default values for TrackEvents (e.g. default track).
24979    #[prost(message, optional, tag = "11")]
24980    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
24981    /// Defaults for perf profiler packets (PerfSample).
24982    #[prost(message, optional, tag = "12")]
24983    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
24984    /// Defaults for transport-neutral stack sampling packets (StackSample).
24985    #[prost(message, optional, tag = "100")]
24986    pub stack_sample_defaults: ::core::option::Option<StackSampleDefaults>,
24987    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
24988    /// V8RegexpCode)
24989    #[prost(message, optional, tag = "99")]
24990    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
24991}
24992/// A random unique ID that identifies the trace.
24993/// This message has been introduced in v32. Prior to that, the UUID was
24994/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
24995/// This has been moved to a standalone packet to deal with new use-cases for
24996/// go/gapless-aot, where the same tracing session can be serialized several
24997/// times, in which case the UUID is changed on each snapshot and does not match
24998/// the one in the TraceConfig.
24999#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25000pub struct TraceUuid {
25001    #[prost(int64, optional, tag = "1")]
25002    pub msb: ::core::option::Option<i64>,
25003    #[prost(int64, optional, tag = "2")]
25004    pub lsb: ::core::option::Option<i64>,
25005}
25006/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
25007/// usually by the process's main thread.
25008///
25009/// Next id: 9.
25010#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25011pub struct ProcessDescriptor {
25012    #[prost(int32, optional, tag = "1")]
25013    pub pid: ::core::option::Option<i32>,
25014    #[prost(string, repeated, tag = "2")]
25015    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25016    #[prost(string, optional, tag = "6")]
25017    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
25018    #[prost(int32, optional, tag = "5")]
25019    pub process_priority: ::core::option::Option<i32>,
25020    /// Process start time in nanoseconds.
25021    /// The timestamp refers to the trace clock by default. Other clock IDs
25022    /// provided in TracePacket are not supported.
25023    #[prost(int64, optional, tag = "7")]
25024    pub start_timestamp_ns: ::core::option::Option<i64>,
25025    #[prost(enumeration = "process_descriptor::ChromeProcessType", optional, tag = "4")]
25026    pub chrome_process_type: ::core::option::Option<i32>,
25027    /// To support old UI. New UI should determine default sorting by process_type.
25028    #[prost(int32, optional, tag = "3")]
25029    pub legacy_sort_index: ::core::option::Option<i32>,
25030    /// Labels can be used to further describe properties of the work performed by
25031    /// the process. For example, these can be used by Chrome renderer process to
25032    /// provide titles of frames being rendered.
25033    #[prost(string, repeated, tag = "8")]
25034    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25035}
25036/// Nested message and enum types in `ProcessDescriptor`.
25037pub mod process_descriptor {
25038    /// See chromium's content::ProcessType.
25039    #[derive(
25040        Clone,
25041        Copy,
25042        Debug,
25043        PartialEq,
25044        Eq,
25045        Hash,
25046        PartialOrd,
25047        Ord,
25048        ::prost::Enumeration
25049    )]
25050    #[repr(i32)]
25051    pub enum ChromeProcessType {
25052        ProcessUnspecified = 0,
25053        ProcessBrowser = 1,
25054        ProcessRenderer = 2,
25055        ProcessUtility = 3,
25056        ProcessZygote = 4,
25057        ProcessSandboxHelper = 5,
25058        ProcessGpu = 6,
25059        ProcessPpapiPlugin = 7,
25060        ProcessPpapiBroker = 8,
25061    }
25062    impl ChromeProcessType {
25063        /// String value of the enum field names used in the ProtoBuf definition.
25064        ///
25065        /// The values are not transformed in any way and thus are considered stable
25066        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25067        pub fn as_str_name(&self) -> &'static str {
25068            match self {
25069                Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
25070                Self::ProcessBrowser => "PROCESS_BROWSER",
25071                Self::ProcessRenderer => "PROCESS_RENDERER",
25072                Self::ProcessUtility => "PROCESS_UTILITY",
25073                Self::ProcessZygote => "PROCESS_ZYGOTE",
25074                Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
25075                Self::ProcessGpu => "PROCESS_GPU",
25076                Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
25077                Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
25078            }
25079        }
25080        /// Creates an enum from field names used in the ProtoBuf definition.
25081        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25082            match value {
25083                "PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
25084                "PROCESS_BROWSER" => Some(Self::ProcessBrowser),
25085                "PROCESS_RENDERER" => Some(Self::ProcessRenderer),
25086                "PROCESS_UTILITY" => Some(Self::ProcessUtility),
25087                "PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
25088                "PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
25089                "PROCESS_GPU" => Some(Self::ProcessGpu),
25090                "PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
25091                "PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
25092                _ => None,
25093            }
25094        }
25095    }
25096}
25097/// This message specifies the "range of interest" for track events. With the
25098/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
25099/// Trace Processor drops track events outside of this range.
25100#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25101pub struct TrackEventRangeOfInterest {
25102    #[prost(int64, optional, tag = "1")]
25103    pub start_us: ::core::option::Option<i64>,
25104}
25105/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
25106/// usually by the thread's trace writer.
25107///
25108/// Next id: 9.
25109#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25110pub struct ThreadDescriptor {
25111    #[prost(int32, optional, tag = "1")]
25112    pub pid: ::core::option::Option<i32>,
25113    #[prost(int64, optional, tag = "2")]
25114    pub tid: ::core::option::Option<i64>,
25115    #[prost(string, optional, tag = "5")]
25116    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
25117    #[prost(enumeration = "thread_descriptor::ChromeThreadType", optional, tag = "4")]
25118    pub chrome_thread_type: ::core::option::Option<i32>,
25119    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
25120    /// and timestamp_clock_id fields instead.
25121    #[prost(int64, optional, tag = "6")]
25122    pub reference_timestamp_us: ::core::option::Option<i64>,
25123    /// Absolute reference values. Clock values in subsequent TrackEvents can be
25124    /// encoded accumulatively and relative to these. This reduces their var-int
25125    /// encoding size.
25126    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
25127    #[prost(int64, optional, tag = "7")]
25128    pub reference_thread_time_us: ::core::option::Option<i64>,
25129    #[prost(int64, optional, tag = "8")]
25130    pub reference_thread_instruction_count: ::core::option::Option<i64>,
25131    /// To support old UI. New UI should determine default sorting by thread_type.
25132    #[prost(int32, optional, tag = "3")]
25133    pub legacy_sort_index: ::core::option::Option<i32>,
25134}
25135/// Nested message and enum types in `ThreadDescriptor`.
25136pub mod thread_descriptor {
25137    #[derive(
25138        Clone,
25139        Copy,
25140        Debug,
25141        PartialEq,
25142        Eq,
25143        Hash,
25144        PartialOrd,
25145        Ord,
25146        ::prost::Enumeration
25147    )]
25148    #[repr(i32)]
25149    pub enum ChromeThreadType {
25150        ChromeThreadUnspecified = 0,
25151        ChromeThreadMain = 1,
25152        ChromeThreadIo = 2,
25153        /// Scheduler:
25154        ChromeThreadPoolBgWorker = 3,
25155        ChromeThreadPoolFgWorker = 4,
25156        ChromeThreadPoolFbBlocking = 5,
25157        ChromeThreadPoolBgBlocking = 6,
25158        ChromeThreadPoolService = 7,
25159        /// Compositor:
25160        ChromeThreadCompositor = 8,
25161        ChromeThreadVizCompositor = 9,
25162        ChromeThreadCompositorWorker = 10,
25163        /// Renderer:
25164        ChromeThreadServiceWorker = 11,
25165        /// Tracing related threads:
25166        ChromeThreadMemoryInfra = 50,
25167        ChromeThreadSamplingProfiler = 51,
25168    }
25169    impl ChromeThreadType {
25170        /// String value of the enum field names used in the ProtoBuf definition.
25171        ///
25172        /// The values are not transformed in any way and thus are considered stable
25173        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25174        pub fn as_str_name(&self) -> &'static str {
25175            match self {
25176                Self::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
25177                Self::ChromeThreadMain => "CHROME_THREAD_MAIN",
25178                Self::ChromeThreadIo => "CHROME_THREAD_IO",
25179                Self::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
25180                Self::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
25181                Self::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
25182                Self::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
25183                Self::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
25184                Self::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
25185                Self::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
25186                Self::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
25187                Self::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
25188                Self::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
25189                Self::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
25190            }
25191        }
25192        /// Creates an enum from field names used in the ProtoBuf definition.
25193        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25194            match value {
25195                "CHROME_THREAD_UNSPECIFIED" => Some(Self::ChromeThreadUnspecified),
25196                "CHROME_THREAD_MAIN" => Some(Self::ChromeThreadMain),
25197                "CHROME_THREAD_IO" => Some(Self::ChromeThreadIo),
25198                "CHROME_THREAD_POOL_BG_WORKER" => Some(Self::ChromeThreadPoolBgWorker),
25199                "CHROME_THREAD_POOL_FG_WORKER" => Some(Self::ChromeThreadPoolFgWorker),
25200                "CHROME_THREAD_POOL_FB_BLOCKING" => {
25201                    Some(Self::ChromeThreadPoolFbBlocking)
25202                }
25203                "CHROME_THREAD_POOL_BG_BLOCKING" => {
25204                    Some(Self::ChromeThreadPoolBgBlocking)
25205                }
25206                "CHROME_THREAD_POOL_SERVICE" => Some(Self::ChromeThreadPoolService),
25207                "CHROME_THREAD_COMPOSITOR" => Some(Self::ChromeThreadCompositor),
25208                "CHROME_THREAD_VIZ_COMPOSITOR" => Some(Self::ChromeThreadVizCompositor),
25209                "CHROME_THREAD_COMPOSITOR_WORKER" => {
25210                    Some(Self::ChromeThreadCompositorWorker)
25211                }
25212                "CHROME_THREAD_SERVICE_WORKER" => Some(Self::ChromeThreadServiceWorker),
25213                "CHROME_THREAD_MEMORY_INFRA" => Some(Self::ChromeThreadMemoryInfra),
25214                "CHROME_THREAD_SAMPLING_PROFILER" => {
25215                    Some(Self::ChromeThreadSamplingProfiler)
25216                }
25217                _ => None,
25218            }
25219        }
25220    }
25221}
25222/// Describes the attributes for a Chrome process. Must be paired with a
25223/// ProcessDescriptor in the same TrackDescriptor.
25224///
25225/// Next id: 6.
25226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25227pub struct ChromeProcessDescriptor {
25228    /// This is a chrome_enums::ProcessType from
25229    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
25230    /// be imported here because of a dependency loop.
25231    #[prost(int32, optional, tag = "1")]
25232    pub process_type: ::core::option::Option<i32>,
25233    #[prost(int32, optional, tag = "2")]
25234    pub process_priority: ::core::option::Option<i32>,
25235    /// To support old UI. New UI should determine default sorting by process_type.
25236    #[prost(int32, optional, tag = "3")]
25237    pub legacy_sort_index: ::core::option::Option<i32>,
25238    /// Name of the hosting app for WebView. Used to match renderer processes to
25239    /// their hosting apps.
25240    #[prost(string, optional, tag = "4")]
25241    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
25242    /// The ID to link crashes to trace.
25243    /// Notes:
25244    /// * The ID is per process. So, each trace may contain many IDs, and you need
25245    ///    to look for the ID from crashed process to find the crash report.
25246    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
25247    ///    get an uploaded trace, since uploads could have failed.
25248    /// * On the other hand, if there was a crash during the session and trace was
25249    ///    uploaded, it is very likely to find a crash report with the trace ID.
25250    /// * This is not crash ID or trace ID. It is just a random 64-bit number
25251    ///    recorded in both traces and crashes. It is possible to have collisions,
25252    ///    though very rare.
25253    #[prost(uint64, optional, tag = "5")]
25254    pub crash_trace_id: ::core::option::Option<u64>,
25255}
25256/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
25257/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
25258/// in the same TrackDescriptor.
25259///
25260/// Next id: 3.
25261#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25262pub struct ChromeThreadDescriptor {
25263    /// This is a chrome_enums::ThreadType from
25264    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
25265    /// be imported here because of a dependency loop.
25266    #[prost(int32, optional, tag = "1")]
25267    pub thread_type: ::core::option::Option<i32>,
25268    /// To support old UI. New UI should determine default sorting by thread_type.
25269    #[prost(int32, optional, tag = "2")]
25270    pub legacy_sort_index: ::core::option::Option<i32>,
25271    /// Indicates whether the thread's tid specified in the thread descriptor is
25272    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
25273    #[prost(bool, optional, tag = "3")]
25274    pub is_sandboxed_tid: ::core::option::Option<bool>,
25275}
25276/// Defines properties of a counter track, e.g. for built-in counters (thread
25277/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
25278/// a specific app component).
25279///
25280/// Counter tracks only support TYPE_COUNTER track events, which specify new
25281/// values for the counter. For counters that require per-slice values, counter
25282/// values can instead be provided in a more efficient encoding via TrackEvent's
25283/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
25284/// slice-type events cannot be emitted onto a counter track.
25285///
25286/// Values for counters that are only emitted on a single packet sequence can
25287/// optionally be delta-encoded, see |is_incremental|.
25288///
25289/// Next id: 7.
25290#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25291pub struct CounterDescriptor {
25292    /// For built-in counters (e.g. thread time). Custom user-specified counters
25293    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
25294    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
25295    #[prost(enumeration = "counter_descriptor::BuiltinCounterType", optional, tag = "1")]
25296    pub r#type: ::core::option::Option<i32>,
25297    /// Names of categories of the counter (usually for user-specified counters).
25298    /// In the client library, categories are a way to turn groups of individual
25299    /// counters (or events) on or off.
25300    #[prost(string, repeated, tag = "2")]
25301    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25302    /// Type of the counter's values. Built-in counters imply a value for this
25303    /// field.
25304    #[prost(enumeration = "counter_descriptor::Unit", optional, tag = "3")]
25305    pub unit: ::core::option::Option<i32>,
25306    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
25307    /// name can be used instead.
25308    #[prost(string, optional, tag = "6")]
25309    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
25310    /// Multiplication factor of this counter's values, e.g. to supply
25311    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
25312    #[prost(int64, optional, tag = "4")]
25313    pub unit_multiplier: ::core::option::Option<i64>,
25314    /// Whether values for this counter are provided as delta values. Only
25315    /// supported for counters that are emitted on a single packet-sequence (e.g.
25316    /// thread time). Counter values in subsequent packets on the current packet
25317    /// sequence will be interpreted as delta values from the sequence's most
25318    /// recent value for the counter. When incremental state is cleared, the
25319    /// counter value is considered to be reset to 0. Thus, the first value after
25320    /// incremental state is cleared is effectively an absolute value.
25321    #[prost(bool, optional, tag = "5")]
25322    pub is_incremental: ::core::option::Option<bool>,
25323    /// When visualizing multiple counter tracks, it is often useful to have them
25324    /// share the same Y-axis range. This allows for easy comparison of their
25325    /// values.
25326    ///
25327    /// All counter tracks with the same |y_axis_share_key| and the same parent
25328    /// track (e.g. grouped under the same process track) will share their y-axis
25329    /// range in the UI.
25330    #[prost(string, optional, tag = "7")]
25331    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
25332}
25333/// Nested message and enum types in `CounterDescriptor`.
25334pub mod counter_descriptor {
25335    /// Built-in counters, usually with special meaning in the client library,
25336    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
25337    /// track name from the enum value if none is provided in TrackDescriptor.
25338    #[derive(
25339        Clone,
25340        Copy,
25341        Debug,
25342        PartialEq,
25343        Eq,
25344        Hash,
25345        PartialOrd,
25346        Ord,
25347        ::prost::Enumeration
25348    )]
25349    #[repr(i32)]
25350    pub enum BuiltinCounterType {
25351        CounterUnspecified = 0,
25352        /// implies UNIT_TIME_NS.
25353        CounterThreadTimeNs = 1,
25354        /// implies UNIT_COUNT.
25355        CounterThreadInstructionCount = 2,
25356    }
25357    impl BuiltinCounterType {
25358        /// String value of the enum field names used in the ProtoBuf definition.
25359        ///
25360        /// The values are not transformed in any way and thus are considered stable
25361        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25362        pub fn as_str_name(&self) -> &'static str {
25363            match self {
25364                Self::CounterUnspecified => "COUNTER_UNSPECIFIED",
25365                Self::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
25366                Self::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
25367            }
25368        }
25369        /// Creates an enum from field names used in the ProtoBuf definition.
25370        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25371            match value {
25372                "COUNTER_UNSPECIFIED" => Some(Self::CounterUnspecified),
25373                "COUNTER_THREAD_TIME_NS" => Some(Self::CounterThreadTimeNs),
25374                "COUNTER_THREAD_INSTRUCTION_COUNT" => {
25375                    Some(Self::CounterThreadInstructionCount)
25376                }
25377                _ => None,
25378            }
25379        }
25380    }
25381    /// Type of the values for the counters - to supply lower granularity units,
25382    /// see also |unit_multiplier|.
25383    #[derive(
25384        Clone,
25385        Copy,
25386        Debug,
25387        PartialEq,
25388        Eq,
25389        Hash,
25390        PartialOrd,
25391        Ord,
25392        ::prost::Enumeration
25393    )]
25394    #[repr(i32)]
25395    pub enum Unit {
25396        Unspecified = 0,
25397        TimeNs = 1,
25398        Count = 2,
25399        /// TODO(eseckler): Support more units as necessary.
25400        SizeBytes = 3,
25401    }
25402    impl Unit {
25403        /// String value of the enum field names used in the ProtoBuf definition.
25404        ///
25405        /// The values are not transformed in any way and thus are considered stable
25406        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25407        pub fn as_str_name(&self) -> &'static str {
25408            match self {
25409                Self::Unspecified => "UNIT_UNSPECIFIED",
25410                Self::TimeNs => "UNIT_TIME_NS",
25411                Self::Count => "UNIT_COUNT",
25412                Self::SizeBytes => "UNIT_SIZE_BYTES",
25413            }
25414        }
25415        /// Creates an enum from field names used in the ProtoBuf definition.
25416        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25417            match value {
25418                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
25419                "UNIT_TIME_NS" => Some(Self::TimeNs),
25420                "UNIT_COUNT" => Some(Self::Count),
25421                "UNIT_SIZE_BYTES" => Some(Self::SizeBytes),
25422                _ => None,
25423            }
25424        }
25425    }
25426}
25427/// Descriptor for a state track.
25428///
25429/// For now, this message is empty. It is used to identify a track as a state
25430/// track.
25431#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25432pub struct StateDescriptor {}
25433/// Defines a track for TrackEvents. Slices and instant events on the same track
25434/// will be nested based on their timestamps, see TrackEvent::Type.
25435///
25436/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
25437/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
25438/// when the ring buffer wraps, it should be reemitted whenever incremental state
25439/// is cleared.
25440///
25441/// As a fallback, TrackEvents emitted without an explicit track association will
25442/// be associated with an implicit trace-global track (uuid = 0), see also
25443/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
25444/// TrackDescriptor for this implicit track.
25445///
25446/// Next id: 21.
25447#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25448pub struct TrackDescriptor {
25449    /// Unique ID that identifies this track. This ID is global to the whole trace.
25450    /// Producers should ensure that it is unlikely to clash with IDs emitted by
25451    /// other producers. A value of 0 denotes the implicit trace-global track.
25452    ///
25453    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
25454    /// event id + id_scope, pid, and/or tid to compute this ID.
25455    #[prost(uint64, optional, tag = "1")]
25456    pub uuid: ::core::option::Option<u64>,
25457    /// A parent track reference can be used to describe relationships between
25458    /// tracks. For example, to define an asynchronous track which is scoped to a
25459    /// specific process, specify the uuid for that process's process track here.
25460    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
25461    /// thread, specify the uuid for that thread's thread track here. In general,
25462    /// setting a parent will *nest* that track under the parent in the UI and in
25463    /// the trace processor data model (with the important exception noted below).
25464    ///
25465    /// If not specified, the track will be a root track, i.e. not nested under any
25466    /// other track.
25467    ///
25468    /// Note: if the `thread` or `process` fields are set, this value will be
25469    /// *ignored* as priority is given to those fields.
25470    ///
25471    /// Note: if the parent is set to a track with `thread` or `process` fields
25472    /// set, the track will *not* be nested under the parent in the UI and in the
25473    /// trace processor data model. Instead, the track will inherit the parent's
25474    /// thread/process association and will appear as a *sibling* of the parent.
25475    /// This semantic exists for back-compat reasons as the UI used to work this
25476    /// way for years and changing this leads to a lot of traces subtly breaking.
25477    /// If you want to force nesting, create *another* intermediate track to act as
25478    /// the parent.
25479    #[prost(uint64, optional, tag = "5")]
25480    pub parent_uuid: ::core::option::Option<u64>,
25481    /// A human-readable description of the track providing more context about its
25482    /// data. In the UI, this is shown in a popup when the track's help button is
25483    /// clicked.
25484    #[prost(string, optional, tag = "14")]
25485    pub description: ::core::option::Option<::prost::alloc::string::String>,
25486    /// Associate the track with a process, making it the process-global track.
25487    /// There should only be one such track per process (usually for instant
25488    /// events; trace processor uses this fact to detect pid reuse). If you need
25489    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
25490    ///
25491    /// Trace processor will merge events on a process track with slice-type events
25492    /// from other sources (e.g. ftrace) for the same process into a single
25493    /// timeline view.
25494    #[prost(message, optional, tag = "3")]
25495    pub process: ::core::option::Option<ProcessDescriptor>,
25496    #[prost(message, optional, tag = "6")]
25497    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
25498    /// Associate the track with a thread, indicating that the track's events
25499    /// describe synchronous code execution on the thread. There should only be one
25500    /// such track per thread (trace processor uses this fact to detect tid reuse).
25501    ///
25502    /// Trace processor will merge events on a thread track with slice-type events
25503    /// from other sources (e.g. ftrace) for the same thread into a single timeline
25504    /// view.
25505    #[prost(message, optional, tag = "4")]
25506    pub thread: ::core::option::Option<ThreadDescriptor>,
25507    #[prost(message, optional, tag = "7")]
25508    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
25509    /// Descriptor for a counter track. If set, the track will only support
25510    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
25511    /// |extra_counter_values|).
25512    #[prost(message, optional, tag = "8")]
25513    pub counter: ::core::option::Option<CounterDescriptor>,
25514    /// Descriptor for a state track. If set, the track will support
25515    /// TYPE_STATE TrackEvents.
25516    #[prost(message, optional, tag = "18")]
25517    pub state: ::core::option::Option<StateDescriptor>,
25518    /// If true, forces Trace Processor to use separate tracks for track events
25519    /// and system events for the same thread.
25520    ///
25521    /// Track events timestamps in Chrome have microsecond resolution, while
25522    /// system events use nanoseconds. It results in broken event nesting when
25523    /// track events and system events share a track.
25524    #[prost(bool, optional, tag = "9")]
25525    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
25526    #[prost(enumeration = "track_descriptor::ChildTracksOrdering", optional, tag = "11")]
25527    pub child_ordering: ::core::option::Option<i32>,
25528    /// An opaque value which allows specifying how sibling tracks should be
25529    /// ordered relative to each other: tracks with lower ranks will appear before
25530    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
25531    /// 0.
25532    ///
25533    /// This rank is used in the following scenarios:
25534    /// - For standard child tracks, if the parent track has `child_ordering` set
25535    ///    to `EXPLICIT`.
25536    /// - For process tracks, if the root track descriptor (uuid = 0) has
25537    ///    `process_ordering` set to `PROCESS_ORDERING_EXPLICIT`.
25538    /// - For thread tracks, if the root track descriptor (uuid = 0) has
25539    ///    `thread_ordering` set to `THREAD_ORDERING_EXPLICIT`.
25540    ///
25541    /// In all other cases, this value is ignored.
25542    #[prost(int32, optional, tag = "12")]
25543    pub sibling_order_rank: ::core::option::Option<i32>,
25544    #[prost(
25545        enumeration = "track_descriptor::SiblingMergeBehavior",
25546        optional,
25547        tag = "15"
25548    )]
25549    pub sibling_merge_behavior: ::core::option::Option<i32>,
25550    #[prost(enumeration = "track_descriptor::ProcessOrdering", optional, tag = "19")]
25551    pub process_ordering: ::core::option::Option<i32>,
25552    #[prost(enumeration = "track_descriptor::ThreadOrdering", optional, tag = "20")]
25553    pub thread_ordering: ::core::option::Option<i32>,
25554    /// Name of the track.
25555    ///
25556    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
25557    /// emitted before any `TrackEvent`s on the same track.
25558    ///
25559    /// Note: any name specified here will be *ignored* for the root thread scoped
25560    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
25561    /// case, the name of the track is shared by many different data sources and so
25562    /// is centrally controlled by trace processor.
25563    ///
25564    /// It's strongly recommended to only emit the name for a track uuid *once*. If
25565    /// a descriptor *has* to be emitted multiple times (e.g. between different
25566    /// processes), it's recommended to ensure that the name is consistent across
25567    /// all TrackDescriptors with the same `uuid`.
25568    ///
25569    /// If the the above recommendation is not followed and the same uuid is
25570    /// emitted with different names, it is implementation defined how the final
25571    /// name will be chosen and may change at any time.
25572    ///
25573    /// The current implementation of trace processor chooses the name in the
25574    /// following way, depending on the value of the `sibling_merge_behavior`
25575    /// field:
25576    ///
25577    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
25578    ///    * The *last* non-null name in the whole trace according to trace order
25579    ///      will be used.
25580    ///    * If no non-null name is present in the whole trace, the trace processor
25581    ///      may fall back to other sources to provide a name for the track (e.g.
25582    ///      the first event name for slice tracks, the counter name for counter
25583    ///      tracks). This is implementation defined and may change at any time.
25584    ///
25585    /// 2. If `sibling_merge_behavior` is set to any other value:
25586    ///    * The first non-null name before the first event on the track *or on any
25587    ///      descendant tracks* is processed will be used. For example, consider
25588    ///      the following sequence of events:
25589    ///        ts=100: TrackDescriptor(uuid=A)
25590    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
25591    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
25592    ///        ts=400: TrackEvent(track_uuid=B)
25593    ///      In this case, the name for track A will be "Track A" because the
25594    ///      descriptor with the name was emitted before the first event on a
25595    ///      descendant track (B).
25596    ///    * If no non-null name is present before the event is processed, the trace
25597    ///      processor may fall back to other sources to provide a name for the
25598    ///      track (e.g. the first event name for slice tracks, the counter name for
25599    ///      counter tracks). This is implementation defined and may change at any
25600    ///      time.
25601    ///    * Note on processing order: In the standard trace processor pipeline,
25602    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
25603    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
25604    ///      track, all its descriptors in the trace are processed before its
25605    ///      events. Consequently, the "first non-null name before the first event"
25606    ///      will be the name from the first `TrackDescriptor` for that track in the
25607    ///      trace file that has a non-null name. However, in a streaming parsing
25608    ///      scenario, the timestamp order of descriptors and events is significant,
25609    ///      and a descriptor arriving after an event has been processed will not be
25610    ///      used to name the track.
25611    #[prost(oneof = "track_descriptor::StaticOrDynamicName", tags = "2, 10, 13")]
25612    pub static_or_dynamic_name: ::core::option::Option<
25613        track_descriptor::StaticOrDynamicName,
25614    >,
25615    /// An opaque value which allows specifying which tracks should be merged
25616    /// together.
25617    ///
25618    /// Only meaningful when `sibling_merge_behavior` is set to
25619    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
25620    #[prost(oneof = "track_descriptor::SiblingMergeKeyField", tags = "16, 17")]
25621    pub sibling_merge_key_field: ::core::option::Option<
25622        track_descriptor::SiblingMergeKeyField,
25623    >,
25624}
25625/// Nested message and enum types in `TrackDescriptor`.
25626pub mod track_descriptor {
25627    /// Specifies how the UI should display child tracks of this track (i.e. tracks
25628    /// where `parent_uuid` is specified to this track `uuid`). Note that this
25629    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
25630    /// this if it has a good reason not to do so.
25631    ///
25632    /// Note: for tracks where `thread` or `process` are set (i.e. process tracks
25633    /// and thread tracks), this option is *ignored*. Instead, use
25634    /// `thread_ordering` and `process_ordering` on the root track descriptor (uuid
25635    /// = 0) to configure process and thread track ordering. See `parent_uuid` for
25636    /// details.
25637    #[derive(
25638        Clone,
25639        Copy,
25640        Debug,
25641        PartialEq,
25642        Eq,
25643        Hash,
25644        PartialOrd,
25645        Ord,
25646        ::prost::Enumeration
25647    )]
25648    #[repr(i32)]
25649    pub enum ChildTracksOrdering {
25650        /// The default ordering, with no bearing on how the UI will visualise the
25651        /// tracks.
25652        Unknown = 0,
25653        /// Order tracks by `name` or `static_name` depending on which one has been
25654        /// specified.
25655        Lexicographic = 1,
25656        /// Order tracks by the first `ts` event in a track.
25657        Chronological = 2,
25658        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
25659        /// the lower values will be shown before tracks with higher values. Tracks
25660        /// with no value will be treated as having 0 rank.
25661        Explicit = 3,
25662    }
25663    impl ChildTracksOrdering {
25664        /// String value of the enum field names used in the ProtoBuf definition.
25665        ///
25666        /// The values are not transformed in any way and thus are considered stable
25667        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25668        pub fn as_str_name(&self) -> &'static str {
25669            match self {
25670                Self::Unknown => "UNKNOWN",
25671                Self::Lexicographic => "LEXICOGRAPHIC",
25672                Self::Chronological => "CHRONOLOGICAL",
25673                Self::Explicit => "EXPLICIT",
25674            }
25675        }
25676        /// Creates an enum from field names used in the ProtoBuf definition.
25677        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25678            match value {
25679                "UNKNOWN" => Some(Self::Unknown),
25680                "LEXICOGRAPHIC" => Some(Self::Lexicographic),
25681                "CHRONOLOGICAL" => Some(Self::Chronological),
25682                "EXPLICIT" => Some(Self::Explicit),
25683                _ => None,
25684            }
25685        }
25686    }
25687    /// Specifies how the analysis tools should "merge" different sibling
25688    /// TrackEvent tracks.
25689    ///
25690    /// For two or more tracks to be merged, they must be "eligible" siblings.
25691    /// Eligibility is determined by the following rules:
25692    /// 1. All tracks must have the same parent.
25693    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
25694    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
25695    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
25696    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
25697    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
25698    ///
25699    /// Specifically:
25700    ///    - in the UI, all tracks which are merged together will be
25701    ///      displayed as a single "visual" track.
25702    ///    - in the trace processor, all tracks which are merged together will be
25703    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
25704    ///      of tracks which have an active event at the same time.
25705    ///
25706    /// When tracks are merged togther, the properties for the merged track will be
25707    /// chosen from the source tracks based on the following rules:
25708    ///    - for `sibling_order_rank`: the rank of the merged track will be the
25709    ///      smallest rank among the source tracks.
25710    ///    - for all other properties: the property taken is unspecified and can
25711    ///      be any value provided by one of the source tracks. This can lead to
25712    ///      non-deterministic behavior.
25713    ///       - examples of other properties include `name`, `child_ordering` etc.
25714    ///       - because of this, it's strongly recommended to ensure that all source
25715    ///         tracks have the same value for these properties.
25716    ///       - the trace processor will also emit an error stat if it detects
25717    ///         that the properties are not the same across all source tracks.
25718    ///
25719    /// Note: merging is done *recursively* so entire trees of tracks can be merged
25720    /// together. To make this clearer, consider an example track hierarchy (in
25721    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
25722    /// track line, like "Updater", is its 'name' property):
25723    ///
25724    ///    Initial track hierarchy:
25725    ///      SystemActivity
25726    ///      ├── AuthService (smk: "auth_main_cluster")
25727    ///      │   └── LoginOp (smk: "login_v1")
25728    ///      ├── AuthService (smk: "auth_main_cluster")
25729    ///      │   └── LoginOp (smk: "login_v1")
25730    ///      ├── AuthService (smk: "auth_backup_cluster")
25731    ///      │   └── GuestOp (smk: "guest_v1")
25732    ///      └── UserProfileService (smk: "profile_cluster")
25733    ///          └── GetProfileOp (smk: "getprofile_v1")
25734    ///
25735    /// Merging outcomes:
25736    ///
25737    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
25738    ///    - The first two "AuthService" tracks merge because they share
25739    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
25740    ///      aligning with recommendations. The merged track is named "AuthService".
25741    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
25742    ///      remains separate, as its `sibling_merge_key` is different.
25743    ///    - "UserProfileService" also remains separate.
25744    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
25745    ///      "LoginOp" get merged as they have the same sibling merge key.
25746    ///
25747    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
25748    ///      SystemActivity
25749    ///      ├── AuthService (merged by smk: "auth_main_cluster")
25750    ///      │   ├── LoginOp (merged by smk: "login_v1")
25751    ///      ├── AuthService (smk: "auth_backup_cluster")
25752    ///      │   └── GuestOp (smk: "guest_v1")
25753    ///      └── UserProfileService (smk: "profile_cluster")
25754    ///          └── GetProfileOp (smk: "getprofile_v1")
25755    ///
25756    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
25757    ///    - All three tracks named "AuthService" merge because they share the same
25758    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
25759    ///      for this merged track would be taken from one of the source tracks
25760    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
25761    ///      relevant if its children had key-based merge behaviors.
25762    ///    - "UserProfileService" remains separate due to its different name.
25763    ///    - Within the single merged "AuthService" track:
25764    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
25765    ///      they have the same name.
25766    ///
25767    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
25768    ///      SystemActivity
25769    ///      ├── AuthService (merged from 3 "AuthService" tracks)
25770    ///      │   ├── LoginOp (smk: "login_v1")
25771    ///      │   └── GuestOp (smk: "guest_v1")
25772    ///      └── UserProfileService (smk: "profile_cluster")
25773    ///          └── GetProfileOp (smk: "getprofile_v1")
25774    ///
25775    /// Note: for tracks where `thread` or `process` are set, this option is
25776    /// *ignored*. See `parent_uuid` for details.
25777    #[derive(
25778        Clone,
25779        Copy,
25780        Debug,
25781        PartialEq,
25782        Eq,
25783        Hash,
25784        PartialOrd,
25785        Ord,
25786        ::prost::Enumeration
25787    )]
25788    #[repr(i32)]
25789    pub enum SiblingMergeBehavior {
25790        /// When unspecified or not set, defaults to
25791        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
25792        Unspecified = 0,
25793        /// Merge this track with eligible siblings which have the same `name`.
25794        ///
25795        /// This is the default behavior.option.
25796        ///
25797        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
25798        /// worked this way for years and inherited this behavior from
25799        /// chrome://tracing which has worked this way for even longer
25800        ByTrackName = 1,
25801        /// Never merge this track with any siblings. Useful if if this track has a
25802        /// specific meaning and you want to see separately from any others.
25803        None = 2,
25804        /// Merge this track with eligible siblings which have the same
25805        /// `sibling_merge_key`.
25806        BySiblingMergeKey = 3,
25807    }
25808    impl SiblingMergeBehavior {
25809        /// String value of the enum field names used in the ProtoBuf definition.
25810        ///
25811        /// The values are not transformed in any way and thus are considered stable
25812        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25813        pub fn as_str_name(&self) -> &'static str {
25814            match self {
25815                Self::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
25816                Self::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
25817                Self::None => "SIBLING_MERGE_BEHAVIOR_NONE",
25818                Self::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
25819            }
25820        }
25821        /// Creates an enum from field names used in the ProtoBuf definition.
25822        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25823            match value {
25824                "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified),
25825                "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME" => Some(Self::ByTrackName),
25826                "SIBLING_MERGE_BEHAVIOR_NONE" => Some(Self::None),
25827                "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY" => {
25828                    Some(Self::BySiblingMergeKey)
25829                }
25830                _ => None,
25831            }
25832        }
25833    }
25834    /// Specifies how the UI should display top-level process tracks relative to
25835    /// each other. Note that this value is simply a *hint* to the UI and is only
25836    /// valid on the root track descriptor (uuid = 0).
25837    #[derive(
25838        Clone,
25839        Copy,
25840        Debug,
25841        PartialEq,
25842        Eq,
25843        Hash,
25844        PartialOrd,
25845        Ord,
25846        ::prost::Enumeration
25847    )]
25848    #[repr(i32)]
25849    pub enum ProcessOrdering {
25850        /// The default ordering, with no bearing on how the UI will visualise the
25851        /// processes.
25852        Unspecified = 0,
25853        /// Order processes by `sibling_order_rank` of their process track
25854        /// descriptors. Processes with lower ranks will be shown before processes
25855        /// with higher ranks. Processes with no rank specified will be treated as
25856        /// having a rank of 0.
25857        Explicit = 1,
25858    }
25859    impl ProcessOrdering {
25860        /// String value of the enum field names used in the ProtoBuf definition.
25861        ///
25862        /// The values are not transformed in any way and thus are considered stable
25863        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25864        pub fn as_str_name(&self) -> &'static str {
25865            match self {
25866                Self::Unspecified => "PROCESS_ORDERING_UNSPECIFIED",
25867                Self::Explicit => "PROCESS_ORDERING_EXPLICIT",
25868            }
25869        }
25870        /// Creates an enum from field names used in the ProtoBuf definition.
25871        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25872            match value {
25873                "PROCESS_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
25874                "PROCESS_ORDERING_EXPLICIT" => Some(Self::Explicit),
25875                _ => None,
25876            }
25877        }
25878    }
25879    /// Specifies how the UI should display thread tracks within a process group
25880    /// relative to each other. Note that this value is simply a *hint* to the UI
25881    /// and is only valid on the root track descriptor (uuid = 0).
25882    #[derive(
25883        Clone,
25884        Copy,
25885        Debug,
25886        PartialEq,
25887        Eq,
25888        Hash,
25889        PartialOrd,
25890        Ord,
25891        ::prost::Enumeration
25892    )]
25893    #[repr(i32)]
25894    pub enum ThreadOrdering {
25895        /// The default ordering, with no bearing on how the UI will visualise the
25896        /// threads.
25897        Unspecified = 0,
25898        /// Order threads by `sibling_order_rank` of their thread track descriptors.
25899        /// Threads with lower ranks will be shown before threads with higher ranks.
25900        /// Threads with no rank specified will be treated as having a rank of 0.
25901        Explicit = 1,
25902    }
25903    impl ThreadOrdering {
25904        /// String value of the enum field names used in the ProtoBuf definition.
25905        ///
25906        /// The values are not transformed in any way and thus are considered stable
25907        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25908        pub fn as_str_name(&self) -> &'static str {
25909            match self {
25910                Self::Unspecified => "THREAD_ORDERING_UNSPECIFIED",
25911                Self::Explicit => "THREAD_ORDERING_EXPLICIT",
25912            }
25913        }
25914        /// Creates an enum from field names used in the ProtoBuf definition.
25915        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25916            match value {
25917                "THREAD_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
25918                "THREAD_ORDERING_EXPLICIT" => Some(Self::Explicit),
25919                _ => None,
25920            }
25921        }
25922    }
25923    /// Name of the track.
25924    ///
25925    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
25926    /// emitted before any `TrackEvent`s on the same track.
25927    ///
25928    /// Note: any name specified here will be *ignored* for the root thread scoped
25929    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
25930    /// case, the name of the track is shared by many different data sources and so
25931    /// is centrally controlled by trace processor.
25932    ///
25933    /// It's strongly recommended to only emit the name for a track uuid *once*. If
25934    /// a descriptor *has* to be emitted multiple times (e.g. between different
25935    /// processes), it's recommended to ensure that the name is consistent across
25936    /// all TrackDescriptors with the same `uuid`.
25937    ///
25938    /// If the the above recommendation is not followed and the same uuid is
25939    /// emitted with different names, it is implementation defined how the final
25940    /// name will be chosen and may change at any time.
25941    ///
25942    /// The current implementation of trace processor chooses the name in the
25943    /// following way, depending on the value of the `sibling_merge_behavior`
25944    /// field:
25945    ///
25946    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
25947    ///    * The *last* non-null name in the whole trace according to trace order
25948    ///      will be used.
25949    ///    * If no non-null name is present in the whole trace, the trace processor
25950    ///      may fall back to other sources to provide a name for the track (e.g.
25951    ///      the first event name for slice tracks, the counter name for counter
25952    ///      tracks). This is implementation defined and may change at any time.
25953    ///
25954    /// 2. If `sibling_merge_behavior` is set to any other value:
25955    ///    * The first non-null name before the first event on the track *or on any
25956    ///      descendant tracks* is processed will be used. For example, consider
25957    ///      the following sequence of events:
25958    ///        ts=100: TrackDescriptor(uuid=A)
25959    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
25960    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
25961    ///        ts=400: TrackEvent(track_uuid=B)
25962    ///      In this case, the name for track A will be "Track A" because the
25963    ///      descriptor with the name was emitted before the first event on a
25964    ///      descendant track (B).
25965    ///    * If no non-null name is present before the event is processed, the trace
25966    ///      processor may fall back to other sources to provide a name for the
25967    ///      track (e.g. the first event name for slice tracks, the counter name for
25968    ///      counter tracks). This is implementation defined and may change at any
25969    ///      time.
25970    ///    * Note on processing order: In the standard trace processor pipeline,
25971    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
25972    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
25973    ///      track, all its descriptors in the trace are processed before its
25974    ///      events. Consequently, the "first non-null name before the first event"
25975    ///      will be the name from the first `TrackDescriptor` for that track in the
25976    ///      trace file that has a non-null name. However, in a streaming parsing
25977    ///      scenario, the timestamp order of descriptors and events is significant,
25978    ///      and a descriptor arriving after an event has been processed will not be
25979    ///      used to name the track.
25980    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
25981    pub enum StaticOrDynamicName {
25982        #[prost(string, tag = "2")]
25983        Name(::prost::alloc::string::String),
25984        /// This field is only set by the SDK when perfetto::StaticString is
25985        /// provided.
25986        #[prost(string, tag = "10")]
25987        StaticName(::prost::alloc::string::String),
25988        /// Equivalent to name, used just to mark that the data is coming from
25989        /// android.os.Trace.
25990        #[prost(string, tag = "13")]
25991        AtraceName(::prost::alloc::string::String),
25992    }
25993    /// An opaque value which allows specifying which tracks should be merged
25994    /// together.
25995    ///
25996    /// Only meaningful when `sibling_merge_behavior` is set to
25997    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
25998    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
25999    pub enum SiblingMergeKeyField {
26000        #[prost(string, tag = "16")]
26001        SiblingMergeKey(::prost::alloc::string::String),
26002        #[prost(uint64, tag = "17")]
26003        SiblingMergeKeyInt(u64),
26004    }
26005}
26006/// Translation rules for the trace processor.
26007/// See the comments for each rule type for specific meaning.
26008#[derive(Clone, PartialEq, ::prost::Message)]
26009pub struct TranslationTable {
26010    #[prost(oneof = "translation_table::Table", tags = "1, 2, 3, 4, 5, 6")]
26011    pub table: ::core::option::Option<translation_table::Table>,
26012}
26013/// Nested message and enum types in `TranslationTable`.
26014pub mod translation_table {
26015    #[derive(Clone, PartialEq, ::prost::Oneof)]
26016    pub enum Table {
26017        #[prost(message, tag = "1")]
26018        ChromeHistogram(super::ChromeHistorgramTranslationTable),
26019        #[prost(message, tag = "2")]
26020        ChromeUserEvent(super::ChromeUserEventTranslationTable),
26021        #[prost(message, tag = "3")]
26022        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
26023        #[prost(message, tag = "4")]
26024        SliceName(super::SliceNameTranslationTable),
26025        #[prost(message, tag = "5")]
26026        ProcessTrackName(super::ProcessTrackNameTranslationTable),
26027        #[prost(message, tag = "6")]
26028        ChromeStudy(super::ChromeStudyTranslationTable),
26029    }
26030}
26031/// Chrome histogram sample hash -> name translation rules.
26032#[derive(Clone, PartialEq, ::prost::Message)]
26033pub struct ChromeHistorgramTranslationTable {
26034    #[prost(map = "uint64, string", tag = "1")]
26035    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
26036}
26037/// Chrome user event action hash -> name translation rules.
26038#[derive(Clone, PartialEq, ::prost::Message)]
26039pub struct ChromeUserEventTranslationTable {
26040    #[prost(map = "uint64, string", tag = "1")]
26041    pub action_hash_to_name: ::std::collections::HashMap<
26042        u64,
26043        ::prost::alloc::string::String,
26044    >,
26045}
26046/// Chrome performance mark translation rules.
26047#[derive(Clone, PartialEq, ::prost::Message)]
26048pub struct ChromePerformanceMarkTranslationTable {
26049    #[prost(map = "uint32, string", tag = "1")]
26050    pub site_hash_to_name: ::std::collections::HashMap<
26051        u32,
26052        ::prost::alloc::string::String,
26053    >,
26054    #[prost(map = "uint32, string", tag = "2")]
26055    pub mark_hash_to_name: ::std::collections::HashMap<
26056        u32,
26057        ::prost::alloc::string::String,
26058    >,
26059}
26060/// Raw -> deobfuscated slice name translation rules.
26061#[derive(Clone, PartialEq, ::prost::Message)]
26062pub struct SliceNameTranslationTable {
26063    #[prost(map = "string, string", tag = "1")]
26064    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
26065        ::prost::alloc::string::String,
26066        ::prost::alloc::string::String,
26067    >,
26068}
26069/// Raw -> deobfuscated process track name translation rules.
26070#[derive(Clone, PartialEq, ::prost::Message)]
26071pub struct ProcessTrackNameTranslationTable {
26072    #[prost(map = "string, string", tag = "1")]
26073    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
26074        ::prost::alloc::string::String,
26075        ::prost::alloc::string::String,
26076    >,
26077}
26078/// Chrome study hash -> name translation rules.
26079#[derive(Clone, PartialEq, ::prost::Message)]
26080pub struct ChromeStudyTranslationTable {
26081    #[prost(map = "uint64, string", tag = "1")]
26082    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
26083}
26084/// When a TracingSession receives a trigger it records the boot time nanoseconds
26085/// in the TracePacket's timestamp field as well as the name of the producer that
26086/// triggered it. We emit this data so filtering can be done on triggers received
26087/// in the trace.
26088#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26089pub struct Trigger {
26090    /// Name of the trigger which was received.
26091    #[prost(string, optional, tag = "1")]
26092    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
26093    /// The actual producer that activated |trigger|.
26094    #[prost(string, optional, tag = "2")]
26095    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
26096    /// The verified UID of the producer.
26097    #[prost(int32, optional, tag = "3")]
26098    pub trusted_producer_uid: ::core::option::Option<i32>,
26099    /// The value of stop_delay_ms from the configuration.
26100    #[prost(uint64, optional, tag = "4")]
26101    pub stop_delay_ms: ::core::option::Option<u64>,
26102}
26103/// Common state for UIs visualizing Perfetto traces.
26104/// This message can be appended as a TracePacket by UIs to save the
26105/// visible state (e.g. scroll position/zoom state) for future opening
26106/// of the trace.
26107/// Design doc: go/trace-ui-state.
26108#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26109pub struct UiState {
26110    /// The start and end bounds of the viewport of the UI in nanoseconds.
26111    ///
26112    /// This is the absolute time associated to slices and other events in
26113    /// trace processor tables (i.e. the |ts| column of most tables)
26114    #[prost(int64, optional, tag = "1")]
26115    pub timeline_start_ts: ::core::option::Option<i64>,
26116    #[prost(int64, optional, tag = "2")]
26117    pub timeline_end_ts: ::core::option::Option<i64>,
26118    #[prost(message, optional, tag = "3")]
26119    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
26120}
26121/// Nested message and enum types in `UiState`.
26122pub mod ui_state {
26123    /// Indicates that the given process should be highlighted by the UI.
26124    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26125    pub struct HighlightProcess {
26126        #[prost(oneof = "highlight_process::Selector", tags = "1, 2")]
26127        pub selector: ::core::option::Option<highlight_process::Selector>,
26128    }
26129    /// Nested message and enum types in `HighlightProcess`.
26130    pub mod highlight_process {
26131        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
26132        pub enum Selector {
26133            /// The pid of the process to highlight. This is useful for UIs to focus
26134            /// on tracks of a particular process in the trace.
26135            ///
26136            /// If more than one process in a trace has the same pid, it is UI
26137            /// implementation specific how the process to be focused will be
26138            /// chosen.
26139            #[prost(uint32, tag = "1")]
26140            Pid(u32),
26141            /// The command line of the process to highlight; for most Android apps,
26142            /// this is the package name of the app. This is useful for UIs to focus
26143            /// on a particular app in the trace.
26144            ///
26145            /// If more than one process hasthe same cmdline, it is UI implementation
26146            /// specific how the process to be focused will be chosen.
26147            #[prost(string, tag = "2")]
26148            Cmdline(::prost::alloc::string::String),
26149        }
26150    }
26151}
26152/// TracePacket is the root object of a Perfetto trace.
26153/// A Perfetto trace is a linear sequence of TracePacket(s).
26154///
26155/// The tracing service guarantees that all TracePacket(s) written by a given
26156/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
26157/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
26158/// to the Consumer (or written into the trace file).
26159/// TracePacket(s) written by different TraceWriter(s), hence even different
26160/// data sources, can be seen in arbitrary order.
26161/// The consumer can re-establish a total order, if interested, using the packet
26162/// timestamps, after having synchronized the different clocks onto a global
26163/// clock.
26164///
26165/// The tracing service is agnostic of the content of TracePacket, with the
26166/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
26167/// the service itself.
26168///
26169/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
26170///
26171/// Next reserved id: 14 (up to 15).
26172/// Next id: 136.
26173#[derive(Clone, PartialEq, ::prost::Message)]
26174pub struct TracePacket {
26175    /// The timestamp of the TracePacket.
26176    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
26177    /// Android). It can be overridden using a different timestamp_clock_id.
26178    /// The clock domain definition in ClockSnapshot can also override:
26179    /// - The unit (default: 1ns).
26180    /// - The absolute vs delta encoding (default: absolute timestamp).
26181    #[prost(uint64, optional, tag = "8")]
26182    pub timestamp: ::core::option::Option<u64>,
26183    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
26184    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
26185    /// producer-defined clock id.
26186    /// If unspecified and if no default per-sequence value has been provided via
26187    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
26188    #[prost(uint32, optional, tag = "58")]
26189    pub timestamp_clock_id: ::core::option::Option<u32>,
26190    /// Trusted process id of the producer which generated this packet, written by
26191    /// the service.
26192    #[prost(int32, optional, tag = "79")]
26193    pub trusted_pid: ::core::option::Option<i32>,
26194    /// Incrementally emitted interned data, valid only on the packet's sequence
26195    /// (packets with the same |trusted_packet_sequence_id|). The writer will
26196    /// usually emit new interned data in the same TracePacket that first refers to
26197    /// it (since the last reset of interning state). It may also be emitted
26198    /// proactively in advance of referring to them in later packets.
26199    #[prost(message, optional, tag = "12")]
26200    pub interned_data: ::core::option::Option<InternedData>,
26201    #[prost(uint32, optional, tag = "13")]
26202    pub sequence_flags: ::core::option::Option<u32>,
26203    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
26204    #[prost(bool, optional, tag = "41")]
26205    pub incremental_state_cleared: ::core::option::Option<bool>,
26206    /// Default values for fields of later TracePackets emitted on this packet's
26207    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
26208    /// It must be reemitted when incremental state is cleared (see
26209    /// |incremental_state_cleared|).
26210    /// Requires that any future packet emitted on the same sequence specifies
26211    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
26212    /// TracePacketDefaults always override the global defaults for any future
26213    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
26214    #[prost(message, optional, tag = "59")]
26215    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
26216    /// Set by the service if, for the current packet sequence (see
26217    /// |trusted_packet_sequence_id|), either:
26218    /// * this is the first packet, or
26219    /// * one or multiple packets were dropped since the last packet that the
26220    ///    consumer read from the sequence. This can happen if chunks in the trace
26221    ///    buffer are overridden before the consumer could read them when the trace
26222    ///    is configured in ring buffer mode.
26223    ///
26224    /// 0 means not dropped, nonzero means dropped (so this stays compatible with
26225    /// the historical bool semantics). The value is a DataLossReason bitmask:
26226    /// DATA_LOSS_PRESENT (bit 0) is always set when there is a loss, and
26227    /// TraceBufferV2 additionally sets a bit identifying the cause. TraceBufferV1
26228    /// and producer-signalled drops set the bare value 1 (DATA_LOSS_PRESENT), i.e.
26229    /// dropped with no specific cause attributed.
26230    ///
26231    /// When packet loss occurs, incrementally emitted data (including interned
26232    /// data) on the sequence should be considered invalid up until the next packet
26233    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
26234    #[prost(uint32, optional, tag = "42")]
26235    pub previous_packet_dropped: ::core::option::Option<u32>,
26236    /// Flag set by a producer (starting from SDK v29) if, for the current packet
26237    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
26238    ///
26239    /// This flag can be used for distinguishing the two situations when
26240    /// processing the trace:
26241    /// 1. There are no prior events for the sequence because of data loss, e.g.
26242    ///     due to ring buffer wrapping.
26243    /// 2. There are no prior events for the sequence because it didn't start
26244    ///     before this packet (= there's definitely no preceding data loss).
26245    ///
26246    /// Given that older SDK versions do not support this flag, this flag not
26247    /// being present for a particular sequence does not necessarily imply data
26248    /// loss.
26249    #[prost(bool, optional, tag = "87")]
26250    pub first_packet_on_sequence: ::core::option::Option<bool>,
26251    /// The machine ID for identifying trace packets in a multi-machine tracing
26252    /// session. Is emitted by the tracing service for producers running on a
26253    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
26254    #[prost(uint32, optional, tag = "98")]
26255    pub machine_id: ::core::option::Option<u32>,
26256    #[prost(
26257        oneof = "trace_packet::Data",
26258        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, 900, 76"
26259    )]
26260    pub data: ::core::option::Option<trace_packet::Data>,
26261    /// Trusted user id of the producer which generated this packet. Keep in sync
26262    /// with TrustedPacket.trusted_uid.
26263    ///
26264    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
26265    /// instead.
26266    #[prost(oneof = "trace_packet::OptionalTrustedUid", tags = "3")]
26267    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
26268    /// Service-assigned identifier of the packet sequence this packet belongs to.
26269    /// Uniquely identifies a producer + writer pair within the tracing session. A
26270    /// value of zero denotes an invalid ID. Keep in sync with
26271    /// TrustedPacket.trusted_packet_sequence_id.
26272    #[prost(oneof = "trace_packet::OptionalTrustedPacketSequenceId", tags = "10")]
26273    pub optional_trusted_packet_sequence_id: ::core::option::Option<
26274        trace_packet::OptionalTrustedPacketSequenceId,
26275    >,
26276}
26277/// Nested message and enum types in `TracePacket`.
26278pub mod trace_packet {
26279    /// Encapsulates the state and configuration of the ProtoVM instances running
26280    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
26281    /// and use them to inflate patches into full-state packets.
26282    /// Note: this message can't be defined in a dedicated file because it has a
26283    /// recursive dependency with TracePacket (see 'state' field below).
26284    #[derive(Clone, PartialEq, ::prost::Message)]
26285    pub struct ProtoVms {
26286        #[prost(message, repeated, tag = "1")]
26287        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
26288    }
26289    /// Nested message and enum types in `ProtoVms`.
26290    pub mod proto_vms {
26291        #[derive(Clone, PartialEq, ::prost::Message)]
26292        pub struct Instance {
26293            #[prost(message, optional, tag = "1")]
26294            pub program: ::core::option::Option<super::super::VmProgram>,
26295            #[prost(message, optional, tag = "2")]
26296            pub state: ::core::option::Option<super::super::TracePacket>,
26297            #[prost(uint32, optional, tag = "3")]
26298            pub memory_limit_kb: ::core::option::Option<u32>,
26299            #[prost(int32, repeated, packed = "false", tag = "4")]
26300            pub producer_id: ::prost::alloc::vec::Vec<i32>,
26301        }
26302    }
26303    #[derive(
26304        Clone,
26305        Copy,
26306        Debug,
26307        PartialEq,
26308        Eq,
26309        Hash,
26310        PartialOrd,
26311        Ord,
26312        ::prost::Enumeration
26313    )]
26314    #[repr(i32)]
26315    pub enum SequenceFlags {
26316        SeqUnspecified = 0,
26317        /// Set by the writer to indicate that it will re-emit any incremental data
26318        /// for the packet's sequence before referring to it again. This includes
26319        /// interned data as well as periodically emitted data like
26320        /// Process/ThreadDescriptors. This flag only affects the current packet
26321        /// sequence (see |trusted_packet_sequence_id|).
26322        ///
26323        /// When set, this TracePacket and subsequent TracePackets on the same
26324        /// sequence will not refer to any incremental data emitted before this
26325        /// TracePacket. For example, previously emitted interned data will be
26326        /// re-emitted if it is referred to again.
26327        ///
26328        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
26329        /// to skip packets in the sequence until the next one with this flag set, to
26330        /// ensure intact incremental data.
26331        SeqIncrementalStateCleared = 1,
26332        /// This packet requires incremental state, such as TracePacketDefaults or
26333        /// InternedData, to be parsed correctly. The trace reader should skip this
26334        /// packet if incremental state is not valid on this sequence, i.e. if no
26335        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
26336        /// current |trusted_packet_sequence_id|.
26337        SeqNeedsIncrementalState = 2,
26338    }
26339    impl SequenceFlags {
26340        /// String value of the enum field names used in the ProtoBuf definition.
26341        ///
26342        /// The values are not transformed in any way and thus are considered stable
26343        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26344        pub fn as_str_name(&self) -> &'static str {
26345            match self {
26346                Self::SeqUnspecified => "SEQ_UNSPECIFIED",
26347                Self::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
26348                Self::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
26349            }
26350        }
26351        /// Creates an enum from field names used in the ProtoBuf definition.
26352        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26353            match value {
26354                "SEQ_UNSPECIFIED" => Some(Self::SeqUnspecified),
26355                "SEQ_INCREMENTAL_STATE_CLEARED" => Some(Self::SeqIncrementalStateCleared),
26356                "SEQ_NEEDS_INCREMENTAL_STATE" => Some(Self::SeqNeedsIncrementalState),
26357                _ => None,
26358            }
26359        }
26360    }
26361    /// Bit flags OR-ed together into |previous_packet_dropped| to describe why
26362    /// packets were dropped. DATA_LOSS_PRESENT is set on every loss; the remaining
26363    /// bits attribute the cause and are set either by TraceBufferV2 in the service
26364    /// or by the producer's trace writer.
26365    #[derive(
26366        Clone,
26367        Copy,
26368        Debug,
26369        PartialEq,
26370        Eq,
26371        Hash,
26372        PartialOrd,
26373        Ord,
26374        ::prost::Enumeration
26375    )]
26376    #[repr(i32)]
26377    pub enum DataLossReason {
26378        DataLossUnspecified = 0,
26379        /// A loss was detected (set on every loss). On its own (value 1) it means
26380        /// dropped with no specific cause, e.g. TraceBufferV1 or a producer.
26381        DataLossPresent = 1,
26382        /// A read started on a non-successor ChunkID (a gap in the stream).
26383        DataLossReadGap = 2,
26384        /// A chunk's fragments couldn't be tokenized (malformed / out-of-bounds).
26385        DataLossChunkCorrupted = 4,
26386        /// A continuation/end fragment with no preceding begin fragment.
26387        DataLossOrphanContinuation = 8,
26388        /// Reassembly abandoned because of a ChunkID gap mid-packet.
26389        DataLossReassemblyGap = 16,
26390        /// Reassembly abandoned because the fragment chain was broken even though
26391        /// the ChunkIDs were contiguous.
26392        DataLossReassemblyBrokenChain = 32,
26393        /// Unconsumed fragments were evicted while overwriting (ring buffer wrap).
26394        DataLossOverwrite = 64,
26395        /// The trace writer aborted an in-progress fragmented packet (it stamped
26396        /// the kPacketSizeDropPacket sentinel in the last fragment header).
26397        DataLossWriterAbort = 128,
26398        /// The producer's shared memory buffer was full: the trace writer couldn't
26399        /// acquire a chunk and dropped packets until one became available. Set by
26400        /// the producer, not the service.
26401        DataLossSmbFull = 256,
26402    }
26403    impl DataLossReason {
26404        /// String value of the enum field names used in the ProtoBuf definition.
26405        ///
26406        /// The values are not transformed in any way and thus are considered stable
26407        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26408        pub fn as_str_name(&self) -> &'static str {
26409            match self {
26410                Self::DataLossUnspecified => "DATA_LOSS_UNSPECIFIED",
26411                Self::DataLossPresent => "DATA_LOSS_PRESENT",
26412                Self::DataLossReadGap => "DATA_LOSS_READ_GAP",
26413                Self::DataLossChunkCorrupted => "DATA_LOSS_CHUNK_CORRUPTED",
26414                Self::DataLossOrphanContinuation => "DATA_LOSS_ORPHAN_CONTINUATION",
26415                Self::DataLossReassemblyGap => "DATA_LOSS_REASSEMBLY_GAP",
26416                Self::DataLossReassemblyBrokenChain => {
26417                    "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN"
26418                }
26419                Self::DataLossOverwrite => "DATA_LOSS_OVERWRITE",
26420                Self::DataLossWriterAbort => "DATA_LOSS_WRITER_ABORT",
26421                Self::DataLossSmbFull => "DATA_LOSS_SMB_FULL",
26422            }
26423        }
26424        /// Creates an enum from field names used in the ProtoBuf definition.
26425        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26426            match value {
26427                "DATA_LOSS_UNSPECIFIED" => Some(Self::DataLossUnspecified),
26428                "DATA_LOSS_PRESENT" => Some(Self::DataLossPresent),
26429                "DATA_LOSS_READ_GAP" => Some(Self::DataLossReadGap),
26430                "DATA_LOSS_CHUNK_CORRUPTED" => Some(Self::DataLossChunkCorrupted),
26431                "DATA_LOSS_ORPHAN_CONTINUATION" => Some(Self::DataLossOrphanContinuation),
26432                "DATA_LOSS_REASSEMBLY_GAP" => Some(Self::DataLossReassemblyGap),
26433                "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN" => {
26434                    Some(Self::DataLossReassemblyBrokenChain)
26435                }
26436                "DATA_LOSS_OVERWRITE" => Some(Self::DataLossOverwrite),
26437                "DATA_LOSS_WRITER_ABORT" => Some(Self::DataLossWriterAbort),
26438                "DATA_LOSS_SMB_FULL" => Some(Self::DataLossSmbFull),
26439                _ => None,
26440            }
26441        }
26442    }
26443    #[derive(Clone, PartialEq, ::prost::Oneof)]
26444    pub enum Data {
26445        ///
26446        /// == STABLE PUBLIC API: TrackEvent ==
26447        ///
26448        /// TrackEvent is the stable, extensible API for recording trace events.
26449        /// See docs/instrumentation/track-events.md for details.
26450        #[prost(message, tag = "11")]
26451        TrackEvent(super::TrackEvent),
26452        #[prost(message, tag = "60")]
26453        TrackDescriptor(super::TrackDescriptor),
26454        ///
26455        /// == STABLE PUBLIC API: GENERIC KERNEL EVENTS ==
26456        ///
26457        /// Stable API for OS-level and hardware events from non-ftrace data
26458        /// sources.
26459        #[prost(message, tag = "117")]
26460        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
26461        #[prost(message, tag = "118")]
26462        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
26463        #[prost(message, tag = "120")]
26464        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
26465        #[prost(message, tag = "122")]
26466        GenericKernelProcessTree(super::GenericKernelProcessTree),
26467        #[prost(message, tag = "129")]
26468        GenericGpuFrequencyEvent(super::GenericGpuFrequencyEvent),
26469        /// IDs up to 15 are reserved. They take only one byte to encode their
26470        /// preamble so should be used for frequent events.
26471        #[prost(message, tag = "2")]
26472        ProcessTree(super::ProcessTree),
26473        #[prost(message, tag = "90")]
26474        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
26475        #[prost(message, tag = "9")]
26476        ProcessStats(super::ProcessStats),
26477        #[prost(message, tag = "4")]
26478        InodeFileMap(super::InodeFileMap),
26479        #[prost(message, tag = "5")]
26480        ChromeEvents(super::ChromeEventBundle),
26481        #[prost(message, tag = "6")]
26482        ClockSnapshot(super::ClockSnapshot),
26483        #[prost(message, tag = "7")]
26484        SysStats(super::SysStats),
26485        #[prost(message, tag = "89")]
26486        TraceUuid(super::TraceUuid),
26487        #[prost(message, tag = "33")]
26488        TraceConfig(super::TraceConfig),
26489        #[prost(message, tag = "34")]
26490        FtraceStats(super::FtraceStats),
26491        #[prost(message, tag = "35")]
26492        TraceStats(super::TraceStats),
26493        #[prost(message, tag = "37")]
26494        ProfilePacket(super::ProfilePacket),
26495        #[prost(message, tag = "74")]
26496        StreamingAllocation(super::StreamingAllocation),
26497        #[prost(message, tag = "75")]
26498        StreamingFree(super::StreamingFree),
26499        #[prost(message, tag = "38")]
26500        Battery(super::BatteryCounters),
26501        #[prost(message, tag = "40")]
26502        PowerRails(super::PowerRails),
26503        #[prost(message, tag = "39")]
26504        AndroidLog(super::AndroidLogPacket),
26505        #[prost(message, tag = "45")]
26506        SystemInfo(super::SystemInfo),
26507        #[prost(message, tag = "46")]
26508        Trigger(super::Trigger),
26509        #[prost(message, tag = "109")]
26510        ChromeTrigger(super::ChromeTrigger),
26511        #[prost(message, tag = "47")]
26512        PackagesList(super::PackagesList),
26513        #[prost(message, tag = "48")]
26514        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
26515        #[prost(message, tag = "49")]
26516        PerfettoMetatrace(super::PerfettoMetatrace),
26517        #[prost(message, tag = "51")]
26518        ChromeMetadata(super::ChromeMetadataPacket),
26519        #[prost(message, tag = "52")]
26520        GpuCounterEvent(super::GpuCounterEvent),
26521        #[prost(message, tag = "53")]
26522        GpuRenderStageEvent(super::GpuRenderStageEvent),
26523        #[prost(message, tag = "54")]
26524        StreamingProfilePacket(super::StreamingProfilePacket),
26525        #[prost(message, tag = "131")]
26526        ArtProcessMetadata(super::ArtProcessMetadata),
26527        #[prost(message, tag = "57")]
26528        GraphicsFrameEvent(super::GraphicsFrameEvent),
26529        #[prost(message, tag = "62")]
26530        VulkanMemoryEvent(super::VulkanMemoryEvent),
26531        #[prost(message, tag = "63")]
26532        GpuLog(super::GpuLog),
26533        #[prost(message, tag = "65")]
26534        VulkanApiEvent(super::VulkanApiEvent),
26535        #[prost(message, tag = "66")]
26536        PerfSample(super::PerfSample),
26537        #[prost(message, tag = "67")]
26538        CpuInfo(super::CpuInfo),
26539        #[prost(message, tag = "68")]
26540        SmapsPacket(super::SmapsPacket),
26541        #[prost(message, tag = "69")]
26542        ServiceEvent(super::TracingServiceEvent),
26543        #[prost(message, tag = "134")]
26544        ConcurrentSessionEvent(super::ConcurrentSessionEvent),
26545        /// Transport-neutral stack sampling (see profiling/stack_sample.proto).
26546        /// Independent of PerfSample.
26547        #[prost(message, tag = "135")]
26548        StackSample(super::StackSample),
26549        #[prost(message, tag = "70")]
26550        InitialDisplayState(super::InitialDisplayState),
26551        #[prost(message, tag = "71")]
26552        GpuMemTotalEvent(super::GpuMemTotalEvent),
26553        #[prost(message, tag = "73")]
26554        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
26555        #[prost(message, tag = "77")]
26556        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
26557        #[prost(message, tag = "78")]
26558        UiState(super::UiState),
26559        #[prost(message, tag = "82")]
26560        TranslationTable(super::TranslationTable),
26561        #[prost(message, tag = "83")]
26562        AndroidGameInterventionList(super::AndroidGameInterventionList),
26563        #[prost(message, tag = "84")]
26564        StatsdAtom(super::StatsdAtom),
26565        #[prost(message, tag = "86")]
26566        AndroidSystemProperty(super::AndroidSystemProperty),
26567        #[prost(message, tag = "91")]
26568        EntityStateResidency(super::EntityStateResidency),
26569        #[prost(message, tag = "124")]
26570        TraceProvenance(super::TraceProvenance),
26571        #[prost(message, tag = "125")]
26572        Protovms(ProtoVms),
26573        #[prost(message, tag = "126")]
26574        TraceAttributes(super::TraceAttributes),
26575        #[prost(message, tag = "127")]
26576        AndroidAflags(super::AndroidAflags),
26577        #[prost(message, tag = "128")]
26578        GpuInfo(super::GpuInfo),
26579        #[prost(message, tag = "130")]
26580        InterruptInfo(super::InterruptInfo),
26581        /// Only used in profile packets.
26582        #[prost(message, tag = "61")]
26583        ModuleSymbols(super::ModuleSymbols),
26584        #[prost(message, tag = "64")]
26585        DeobfuscationMapping(super::DeobfuscationMapping),
26586        /// Deprecated, use TrackDescriptor instead.
26587        #[prost(message, tag = "43")]
26588        ProcessDescriptor(super::ProcessDescriptor),
26589        /// Deprecated, use TrackDescriptor instead.
26590        #[prost(message, tag = "44")]
26591        ThreadDescriptor(super::ThreadDescriptor),
26592        /// Events from the Linux kernel ftrace infrastructure.
26593        #[prost(message, tag = "1")]
26594        FtraceEvents(super::FtraceEventBundle),
26595        /// This field is emitted at periodic intervals (~10s) and
26596        /// contains always the binary representation of the UUID
26597        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
26598        /// efficiently partition long traces without having to fully parse them.
26599        #[prost(bytes, tag = "36")]
26600        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
26601        /// Zero or more proto encoded trace packets compressed using deflate.
26602        /// Each compressed_packets TracePacket (including the two field ids and
26603        /// sizes) should be less than 512KB.
26604        #[prost(bytes, tag = "50")]
26605        CompressedPackets(::prost::alloc::vec::Vec<u8>),
26606        /// The zstd counterpart of |compressed_packets|.
26607        #[prost(bytes, tag = "133")]
26608        ZstdCompressedPackets(::prost::alloc::vec::Vec<u8>),
26609        /// Data sources can extend the trace proto with custom extension protos (see
26610        /// docs/instrumentation/extensions.md). When they do that, the descriptor of
26611        /// their extension proto descriptor is serialized in this packet. This
26612        /// allows trace_processor to deserialize extended messages using reflection
26613        /// even if the extension proto is not checked in the Perfetto repo.
26614        #[prost(message, tag = "72")]
26615        ExtensionDescriptor(super::ExtensionDescriptor),
26616        /// Events from the Windows etw infrastructure.
26617        #[prost(message, tag = "95")]
26618        EtwEvents(super::EtwTraceEventBundle),
26619        #[prost(message, tag = "99")]
26620        V8JsCode(super::V8JsCode),
26621        #[prost(message, tag = "100")]
26622        V8InternalCode(super::V8InternalCode),
26623        #[prost(message, tag = "101")]
26624        V8WasmCode(super::V8WasmCode),
26625        #[prost(message, tag = "102")]
26626        V8RegExpCode(super::V8RegExpCode),
26627        #[prost(message, tag = "103")]
26628        V8CodeMove(super::V8CodeMove),
26629        /// Clock synchronization with remote machines.
26630        #[prost(message, tag = "107")]
26631        RemoteClockSync(super::RemoteClockSync),
26632        #[prost(message, tag = "110")]
26633        PixelModemEvents(super::PixelModemEvents),
26634        #[prost(message, tag = "111")]
26635        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
26636        #[prost(message, tag = "113")]
26637        CloneSnapshotTrigger(super::Trigger),
26638        #[prost(message, tag = "115")]
26639        KernelWakelockData(super::KernelWakelockData),
26640        #[prost(message, tag = "119")]
26641        CpuPerUidData(super::CpuPerUidData),
26642        #[prost(message, tag = "123")]
26643        UserList(super::AndroidUserList),
26644        #[prost(message, tag = "132")]
26645        JournaldEvent(super::SystemdJournaldEvent),
26646        /// This field is only used for testing.
26647        /// In previous versions of this proto this field had the id 268435455
26648        /// This caused many problems:
26649        /// - protozero decoder does not handle field ids larger than 999.
26650        /// - old versions of protoc produce Java bindings with syntax errors when
26651        ///    the field id is large enough.
26652        #[prost(message, tag = "900")]
26653        ForTesting(super::TestEvent),
26654        #[prost(message, tag = "76")]
26655        FrameTimelineEvent(super::FrameTimelineEvent),
26656    }
26657    /// Trusted user id of the producer which generated this packet. Keep in sync
26658    /// with TrustedPacket.trusted_uid.
26659    ///
26660    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
26661    /// instead.
26662    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
26663    pub enum OptionalTrustedUid {
26664        #[prost(int32, tag = "3")]
26665        TrustedUid(i32),
26666    }
26667    /// Service-assigned identifier of the packet sequence this packet belongs to.
26668    /// Uniquely identifies a producer + writer pair within the tracing session. A
26669    /// value of zero denotes an invalid ID. Keep in sync with
26670    /// TrustedPacket.trusted_packet_sequence_id.
26671    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
26672    pub enum OptionalTrustedPacketSequenceId {
26673        #[prost(uint32, tag = "10")]
26674        TrustedPacketSequenceId(u32),
26675    }
26676}
26677#[derive(Clone, PartialEq, ::prost::Message)]
26678pub struct Trace {
26679    #[prost(message, repeated, tag = "1")]
26680    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
26681}
26682/// Re-added for Fuchsia/Starnix compatibility:
26683#[derive(Clone, PartialEq, ::prost::Message)]
26684pub struct FrameTimelineEvent {
26685    #[prost(oneof = "frame_timeline_event::Event", tags = "1, 2, 3, 4, 5")]
26686    pub event: ::core::option::Option<frame_timeline_event::Event>,
26687}
26688/// Nested message and enum types in `FrameTimelineEvent`.
26689pub mod frame_timeline_event {
26690    /// Indicates the start of expected timeline slice for SurfaceFrames.
26691    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26692    pub struct ExpectedSurfaceFrameStart {
26693        /// Cookie used to correlate between the start and end messages of the same
26694        /// frame. Since all values except the ts are same for start and end, cookie
26695        /// helps in preventing redundant data transmission.
26696        /// The same cookie is used only by start and end messages of a single frame
26697        /// and is otherwise unique.
26698        #[prost(int64, optional, tag = "1")]
26699        pub cookie: ::core::option::Option<i64>,
26700        /// Token received by the app for its work. Can be shared between multiple
26701        /// layers of the same app (example: pip mode).
26702        #[prost(int64, optional, tag = "2")]
26703        pub token: ::core::option::Option<i64>,
26704        /// The corresponding DisplayFrame token is required to link the App's work
26705        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
26706        /// DisplayFrame.
26707        /// this.display_frame_token = DisplayFrame.token
26708        #[prost(int64, optional, tag = "3")]
26709        pub display_frame_token: ::core::option::Option<i64>,
26710        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
26711        /// the respective process track group.
26712        #[prost(int32, optional, tag = "4")]
26713        pub pid: ::core::option::Option<i32>,
26714        #[prost(string, optional, tag = "5")]
26715        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
26716    }
26717    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
26718    /// includes the jank information.
26719    #[derive(Clone, PartialEq, ::prost::Message)]
26720    pub struct ActualSurfaceFrameStart {
26721        /// Cookie used to correlate between the start and end messages of the same
26722        /// frame. Since all values except the ts are same for start and end, cookie
26723        /// helps in preventing redundant data transmission.
26724        /// The same cookie is used only by start and end messages of a single frame
26725        /// and is otherwise unique.
26726        #[prost(int64, optional, tag = "1")]
26727        pub cookie: ::core::option::Option<i64>,
26728        /// Token received by the app for its work. Can be shared between multiple
26729        /// layers of the same app (example: pip mode).
26730        #[prost(int64, optional, tag = "2")]
26731        pub token: ::core::option::Option<i64>,
26732        /// The corresponding DisplayFrame token is required to link the App's work
26733        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
26734        /// DisplayFrame.
26735        /// this.display_frame_token = DisplayFrame.token
26736        #[prost(int64, optional, tag = "3")]
26737        pub display_frame_token: ::core::option::Option<i64>,
26738        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
26739        /// the respective process track group.
26740        #[prost(int32, optional, tag = "4")]
26741        pub pid: ::core::option::Option<i32>,
26742        #[prost(string, optional, tag = "5")]
26743        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
26744        #[prost(enumeration = "PresentType", optional, tag = "6")]
26745        pub present_type: ::core::option::Option<i32>,
26746        #[prost(bool, optional, tag = "7")]
26747        pub on_time_finish: ::core::option::Option<bool>,
26748        #[prost(bool, optional, tag = "8")]
26749        pub gpu_composition: ::core::option::Option<bool>,
26750        /// A bitmask of JankType. More than one reason can be attributed to a janky
26751        /// frame.
26752        #[prost(int32, optional, tag = "9")]
26753        pub jank_type: ::core::option::Option<i32>,
26754        #[prost(enumeration = "PredictionType", optional, tag = "10")]
26755        pub prediction_type: ::core::option::Option<i32>,
26756        #[prost(bool, optional, tag = "11")]
26757        pub is_buffer: ::core::option::Option<bool>,
26758        #[prost(enumeration = "JankSeverityType", optional, tag = "12")]
26759        pub jank_severity_type: ::core::option::Option<i32>,
26760        #[prost(float, optional, tag = "13")]
26761        pub present_delay_millis: ::core::option::Option<f32>,
26762        #[prost(float, optional, tag = "14")]
26763        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
26764        #[prost(float, optional, tag = "15")]
26765        pub jank_severity_score: ::core::option::Option<f32>,
26766        /// experimental value for jank_type. Do not consider in jank analysis.
26767        #[prost(int32, optional, tag = "16")]
26768        pub jank_type_experimental: ::core::option::Option<i32>,
26769        /// experimental value for present_type. Do not consider in jank analysis.
26770        #[prost(enumeration = "PresentType", optional, tag = "17")]
26771        pub present_type_experimental: ::core::option::Option<i32>,
26772        /// jank metadata information (for debug).
26773        #[prost(float, optional, tag = "18")]
26774        pub jank_debug_metadata: ::core::option::Option<f32>,
26775        #[prost(
26776            enumeration = "actual_surface_frame_start::LatchedFenceState",
26777            optional,
26778            tag = "19"
26779        )]
26780        pub latched_fence_state: ::core::option::Option<i32>,
26781        /// animation time (ms) used when drawing this frame.
26782        #[prost(float, optional, tag = "20")]
26783        pub animation_time_millis: ::core::option::Option<f32>,
26784    }
26785    /// Nested message and enum types in `ActualSurfaceFrameStart`.
26786    pub mod actual_surface_frame_start {
26787        #[derive(
26788            Clone,
26789            Copy,
26790            Debug,
26791            PartialEq,
26792            Eq,
26793            Hash,
26794            PartialOrd,
26795            Ord,
26796            ::prost::Enumeration
26797        )]
26798        #[repr(i32)]
26799        pub enum LatchedFenceState {
26800            LatchedUnknown = 0,
26801            LatchedSignaled = 1,
26802            LatchedUnsignaled = 2,
26803            LatchedDelayedLatchUnsignaled = 3,
26804        }
26805        impl LatchedFenceState {
26806            /// String value of the enum field names used in the ProtoBuf definition.
26807            ///
26808            /// The values are not transformed in any way and thus are considered stable
26809            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26810            pub fn as_str_name(&self) -> &'static str {
26811                match self {
26812                    Self::LatchedUnknown => "LATCHED_UNKNOWN",
26813                    Self::LatchedSignaled => "LATCHED_SIGNALED",
26814                    Self::LatchedUnsignaled => "LATCHED_UNSIGNALED",
26815                    Self::LatchedDelayedLatchUnsignaled => {
26816                        "LATCHED_DELAYED_LATCH_UNSIGNALED"
26817                    }
26818                }
26819            }
26820            /// Creates an enum from field names used in the ProtoBuf definition.
26821            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26822                match value {
26823                    "LATCHED_UNKNOWN" => Some(Self::LatchedUnknown),
26824                    "LATCHED_SIGNALED" => Some(Self::LatchedSignaled),
26825                    "LATCHED_UNSIGNALED" => Some(Self::LatchedUnsignaled),
26826                    "LATCHED_DELAYED_LATCH_UNSIGNALED" => {
26827                        Some(Self::LatchedDelayedLatchUnsignaled)
26828                    }
26829                    _ => None,
26830                }
26831            }
26832        }
26833    }
26834    /// Indicates the start of expected timeline slice for DisplayFrames.
26835    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26836    pub struct ExpectedDisplayFrameStart {
26837        /// Cookie used to correlate between the start and end messages of the same
26838        /// frame. Since all values except the ts are same for start and end, cookie
26839        /// helps in preventing redundant data transmission.
26840        /// The same cookie is used only by start and end messages of a single frame
26841        /// and is otherwise unique.
26842        #[prost(int64, optional, tag = "1")]
26843        pub cookie: ::core::option::Option<i64>,
26844        /// Token received by SurfaceFlinger for its work
26845        /// this.token = SurfaceFrame.display_frame_token
26846        #[prost(int64, optional, tag = "2")]
26847        pub token: ::core::option::Option<i64>,
26848        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
26849        /// inside the SurfaceFlinger process group.
26850        #[prost(int32, optional, tag = "3")]
26851        pub pid: ::core::option::Option<i32>,
26852    }
26853    /// Indicates the start of actual timeline slice for DisplayFrames. Also
26854    /// includes the jank information.
26855    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26856    pub struct ActualDisplayFrameStart {
26857        /// Cookie used to correlate between the start and end messages of the same
26858        /// frame. Since all values except the ts are same for start and end, cookie
26859        /// helps in preventing redundant data transmission.
26860        /// The same cookie is used only by start and end messages of a single frame
26861        /// and is otherwise unique.
26862        #[prost(int64, optional, tag = "1")]
26863        pub cookie: ::core::option::Option<i64>,
26864        /// Token received by SurfaceFlinger for its work
26865        /// this.token = SurfaceFrame.display_frame_token
26866        #[prost(int64, optional, tag = "2")]
26867        pub token: ::core::option::Option<i64>,
26868        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
26869        /// inside the SurfaceFlinger process group.
26870        #[prost(int32, optional, tag = "3")]
26871        pub pid: ::core::option::Option<i32>,
26872        #[prost(enumeration = "PresentType", optional, tag = "4")]
26873        pub present_type: ::core::option::Option<i32>,
26874        #[prost(bool, optional, tag = "5")]
26875        pub on_time_finish: ::core::option::Option<bool>,
26876        #[prost(bool, optional, tag = "6")]
26877        pub gpu_composition: ::core::option::Option<bool>,
26878        /// A bitmask of JankType. More than one reason can be attributed to a janky
26879        /// frame.
26880        #[prost(int32, optional, tag = "7")]
26881        pub jank_type: ::core::option::Option<i32>,
26882        #[prost(enumeration = "PredictionType", optional, tag = "8")]
26883        pub prediction_type: ::core::option::Option<i32>,
26884        #[prost(enumeration = "JankSeverityType", optional, tag = "9")]
26885        pub jank_severity_type: ::core::option::Option<i32>,
26886        #[prost(float, optional, tag = "10")]
26887        pub present_delay_millis: ::core::option::Option<f32>,
26888        #[prost(float, optional, tag = "11")]
26889        pub jank_severity_score: ::core::option::Option<f32>,
26890        /// experimental value for jank_type. Do not consider in jank analysis.
26891        #[prost(int32, optional, tag = "12")]
26892        pub jank_type_experimental: ::core::option::Option<i32>,
26893        /// experimental value for present_type. Do not consider in jank analysis.
26894        #[prost(enumeration = "PresentType", optional, tag = "13")]
26895        pub present_type_experimental: ::core::option::Option<i32>,
26896        /// jank metadata information (for debug).
26897        #[prost(float, optional, tag = "14")]
26898        pub jank_debug_metadata: ::core::option::Option<f32>,
26899        #[prost(int64, optional, tag = "15")]
26900        pub latched_unsignaled_count: ::core::option::Option<i64>,
26901        #[prost(int64, optional, tag = "16")]
26902        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
26903    }
26904    /// FrameEnd just sends the cookie to indicate that the corresponding
26905    /// <display/surface>frame slice's end.
26906    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26907    pub struct FrameEnd {
26908        #[prost(int64, optional, tag = "1")]
26909        pub cookie: ::core::option::Option<i64>,
26910    }
26911    /// Specifies the reason(s) most likely to have caused the jank.
26912    /// Used as a bitmask.
26913    #[derive(
26914        Clone,
26915        Copy,
26916        Debug,
26917        PartialEq,
26918        Eq,
26919        Hash,
26920        PartialOrd,
26921        Ord,
26922        ::prost::Enumeration
26923    )]
26924    #[repr(i32)]
26925    pub enum JankType {
26926        JankUnspecified = 0,
26927        JankNone = 1,
26928        JankSfScheduling = 2,
26929        JankPredictionError = 4,
26930        JankDisplayHal = 8,
26931        JankSfCpuDeadlineMissed = 16,
26932        JankSfGpuDeadlineMissed = 32,
26933        JankAppDeadlineMissed = 64,
26934        JankBufferStuffing = 128,
26935        JankUnknown = 256,
26936        JankSfStuffing = 512,
26937        JankDropped = 1024,
26938        JankNonAnimating = 2048,
26939        JankAppResyncedJitter = 4096,
26940        JankDisplayNotOn = 8192,
26941        JankDisplayModeChangeInProgress = 16384,
26942        JankDisplayPowerModeChangeInProgress = 32768,
26943    }
26944    impl JankType {
26945        /// String value of the enum field names used in the ProtoBuf definition.
26946        ///
26947        /// The values are not transformed in any way and thus are considered stable
26948        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26949        pub fn as_str_name(&self) -> &'static str {
26950            match self {
26951                Self::JankUnspecified => "JANK_UNSPECIFIED",
26952                Self::JankNone => "JANK_NONE",
26953                Self::JankSfScheduling => "JANK_SF_SCHEDULING",
26954                Self::JankPredictionError => "JANK_PREDICTION_ERROR",
26955                Self::JankDisplayHal => "JANK_DISPLAY_HAL",
26956                Self::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
26957                Self::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
26958                Self::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
26959                Self::JankBufferStuffing => "JANK_BUFFER_STUFFING",
26960                Self::JankUnknown => "JANK_UNKNOWN",
26961                Self::JankSfStuffing => "JANK_SF_STUFFING",
26962                Self::JankDropped => "JANK_DROPPED",
26963                Self::JankNonAnimating => "JANK_NON_ANIMATING",
26964                Self::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
26965                Self::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
26966                Self::JankDisplayModeChangeInProgress => {
26967                    "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS"
26968                }
26969                Self::JankDisplayPowerModeChangeInProgress => {
26970                    "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS"
26971                }
26972            }
26973        }
26974        /// Creates an enum from field names used in the ProtoBuf definition.
26975        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26976            match value {
26977                "JANK_UNSPECIFIED" => Some(Self::JankUnspecified),
26978                "JANK_NONE" => Some(Self::JankNone),
26979                "JANK_SF_SCHEDULING" => Some(Self::JankSfScheduling),
26980                "JANK_PREDICTION_ERROR" => Some(Self::JankPredictionError),
26981                "JANK_DISPLAY_HAL" => Some(Self::JankDisplayHal),
26982                "JANK_SF_CPU_DEADLINE_MISSED" => Some(Self::JankSfCpuDeadlineMissed),
26983                "JANK_SF_GPU_DEADLINE_MISSED" => Some(Self::JankSfGpuDeadlineMissed),
26984                "JANK_APP_DEADLINE_MISSED" => Some(Self::JankAppDeadlineMissed),
26985                "JANK_BUFFER_STUFFING" => Some(Self::JankBufferStuffing),
26986                "JANK_UNKNOWN" => Some(Self::JankUnknown),
26987                "JANK_SF_STUFFING" => Some(Self::JankSfStuffing),
26988                "JANK_DROPPED" => Some(Self::JankDropped),
26989                "JANK_NON_ANIMATING" => Some(Self::JankNonAnimating),
26990                "JANK_APP_RESYNCED_JITTER" => Some(Self::JankAppResyncedJitter),
26991                "JANK_DISPLAY_NOT_ON" => Some(Self::JankDisplayNotOn),
26992                "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS" => {
26993                    Some(Self::JankDisplayModeChangeInProgress)
26994                }
26995                "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS" => {
26996                    Some(Self::JankDisplayPowerModeChangeInProgress)
26997                }
26998                _ => None,
26999            }
27000        }
27001    }
27002    /// Specifies the severity of a jank.
27003    #[derive(
27004        Clone,
27005        Copy,
27006        Debug,
27007        PartialEq,
27008        Eq,
27009        Hash,
27010        PartialOrd,
27011        Ord,
27012        ::prost::Enumeration
27013    )]
27014    #[repr(i32)]
27015    pub enum JankSeverityType {
27016        SeverityUnknown = 0,
27017        SeverityNone = 1,
27018        SeverityPartial = 2,
27019        SeverityFull = 3,
27020    }
27021    impl JankSeverityType {
27022        /// String value of the enum field names used in the ProtoBuf definition.
27023        ///
27024        /// The values are not transformed in any way and thus are considered stable
27025        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27026        pub fn as_str_name(&self) -> &'static str {
27027            match self {
27028                Self::SeverityUnknown => "SEVERITY_UNKNOWN",
27029                Self::SeverityNone => "SEVERITY_NONE",
27030                Self::SeverityPartial => "SEVERITY_PARTIAL",
27031                Self::SeverityFull => "SEVERITY_FULL",
27032            }
27033        }
27034        /// Creates an enum from field names used in the ProtoBuf definition.
27035        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27036            match value {
27037                "SEVERITY_UNKNOWN" => Some(Self::SeverityUnknown),
27038                "SEVERITY_NONE" => Some(Self::SeverityNone),
27039                "SEVERITY_PARTIAL" => Some(Self::SeverityPartial),
27040                "SEVERITY_FULL" => Some(Self::SeverityFull),
27041                _ => None,
27042            }
27043        }
27044    }
27045    /// Specifies how a frame was presented on screen w.r.t. timing.
27046    /// Can be different for SurfaceFrame and DisplayFrame.
27047    #[derive(
27048        Clone,
27049        Copy,
27050        Debug,
27051        PartialEq,
27052        Eq,
27053        Hash,
27054        PartialOrd,
27055        Ord,
27056        ::prost::Enumeration
27057    )]
27058    #[repr(i32)]
27059    pub enum PresentType {
27060        PresentUnspecified = 0,
27061        PresentOnTime = 1,
27062        PresentLate = 2,
27063        PresentEarly = 3,
27064        PresentDropped = 4,
27065        PresentUnknown = 5,
27066    }
27067    impl PresentType {
27068        /// String value of the enum field names used in the ProtoBuf definition.
27069        ///
27070        /// The values are not transformed in any way and thus are considered stable
27071        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27072        pub fn as_str_name(&self) -> &'static str {
27073            match self {
27074                Self::PresentUnspecified => "PRESENT_UNSPECIFIED",
27075                Self::PresentOnTime => "PRESENT_ON_TIME",
27076                Self::PresentLate => "PRESENT_LATE",
27077                Self::PresentEarly => "PRESENT_EARLY",
27078                Self::PresentDropped => "PRESENT_DROPPED",
27079                Self::PresentUnknown => "PRESENT_UNKNOWN",
27080            }
27081        }
27082        /// Creates an enum from field names used in the ProtoBuf definition.
27083        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27084            match value {
27085                "PRESENT_UNSPECIFIED" => Some(Self::PresentUnspecified),
27086                "PRESENT_ON_TIME" => Some(Self::PresentOnTime),
27087                "PRESENT_LATE" => Some(Self::PresentLate),
27088                "PRESENT_EARLY" => Some(Self::PresentEarly),
27089                "PRESENT_DROPPED" => Some(Self::PresentDropped),
27090                "PRESENT_UNKNOWN" => Some(Self::PresentUnknown),
27091                _ => None,
27092            }
27093        }
27094    }
27095    /// Specifies if the predictions for the frame are still valid, expired or
27096    /// unknown.
27097    #[derive(
27098        Clone,
27099        Copy,
27100        Debug,
27101        PartialEq,
27102        Eq,
27103        Hash,
27104        PartialOrd,
27105        Ord,
27106        ::prost::Enumeration
27107    )]
27108    #[repr(i32)]
27109    pub enum PredictionType {
27110        PredictionUnspecified = 0,
27111        PredictionValid = 1,
27112        PredictionExpired = 2,
27113        PredictionUnknown = 3,
27114    }
27115    impl PredictionType {
27116        /// String value of the enum field names used in the ProtoBuf definition.
27117        ///
27118        /// The values are not transformed in any way and thus are considered stable
27119        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27120        pub fn as_str_name(&self) -> &'static str {
27121            match self {
27122                Self::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
27123                Self::PredictionValid => "PREDICTION_VALID",
27124                Self::PredictionExpired => "PREDICTION_EXPIRED",
27125                Self::PredictionUnknown => "PREDICTION_UNKNOWN",
27126            }
27127        }
27128        /// Creates an enum from field names used in the ProtoBuf definition.
27129        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27130            match value {
27131                "PREDICTION_UNSPECIFIED" => Some(Self::PredictionUnspecified),
27132                "PREDICTION_VALID" => Some(Self::PredictionValid),
27133                "PREDICTION_EXPIRED" => Some(Self::PredictionExpired),
27134                "PREDICTION_UNKNOWN" => Some(Self::PredictionUnknown),
27135                _ => None,
27136            }
27137        }
27138    }
27139    #[derive(Clone, PartialEq, ::prost::Oneof)]
27140    pub enum Event {
27141        #[prost(message, tag = "1")]
27142        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
27143        #[prost(message, tag = "2")]
27144        ActualDisplayFrameStart(ActualDisplayFrameStart),
27145        #[prost(message, tag = "3")]
27146        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
27147        #[prost(message, tag = "4")]
27148        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
27149        #[prost(message, tag = "5")]
27150        FrameEnd(FrameEnd),
27151    }
27152}
27153#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27154#[repr(i32)]
27155pub enum VmCursorEnum {
27156    VmCursorUnspecified = 0,
27157    VmCursorSrc = 1,
27158    VmCursorDst = 2,
27159    VmCursorBoth = 3,
27160}
27161impl VmCursorEnum {
27162    /// String value of the enum field names used in the ProtoBuf definition.
27163    ///
27164    /// The values are not transformed in any way and thus are considered stable
27165    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27166    pub fn as_str_name(&self) -> &'static str {
27167        match self {
27168            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
27169            Self::VmCursorSrc => "VM_CURSOR_SRC",
27170            Self::VmCursorDst => "VM_CURSOR_DST",
27171            Self::VmCursorBoth => "VM_CURSOR_BOTH",
27172        }
27173    }
27174    /// Creates an enum from field names used in the ProtoBuf definition.
27175    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27176        match value {
27177            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
27178            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
27179            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
27180            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
27181            _ => None,
27182        }
27183    }
27184}
27185/// Builtin clock domains used in Perfetto traces.
27186///
27187/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
27188/// representing the trace file's own timeline. Each trace file gets its own
27189/// instance (scoped by trace file index).
27190///
27191/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
27192/// fallback: if the first timestamp conversion uses a clock other than the
27193/// trace file clock and no explicit clock snapshot data exists, the trace time
27194/// is switched to BOOTTIME. This fallback does not fire for modern traces that
27195/// include ClockSnapshots or that only use the trace file clock directly.
27196///
27197/// The `primary_trace_clock` field in ClockSnapshot can definitively override
27198/// the trace time clock regardless of the above.
27199#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27200#[repr(i32)]
27201pub enum BuiltinClock {
27202    Unknown = 0,
27203    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
27204    Realtime = 1,
27205    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
27206    RealtimeCoarse = 2,
27207    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
27208    Monotonic = 3,
27209    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
27210    MonotonicCoarse = 4,
27211    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
27212    MonotonicRaw = 5,
27213    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
27214    /// For proto traces, this is used as a backwards-compatible fallback trace
27215    /// time clock when no explicit clock snapshots are present.
27216    Boottime = 6,
27217    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
27218    Tsc = 9,
27219    /// Corresponds to the perf event clock (PERF_CLOCK).
27220    Perf = 10,
27221    /// A synthetic clock representing the trace file's own timeline. Each trace
27222    /// file gets its own instance (scoped by trace file index). This is the
27223    /// default trace time clock before any clock snapshot or format-specific
27224    /// override takes effect.
27225    TraceFile = 11,
27226    MaxId = 63,
27227}
27228impl BuiltinClock {
27229    /// String value of the enum field names used in the ProtoBuf definition.
27230    ///
27231    /// The values are not transformed in any way and thus are considered stable
27232    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27233    pub fn as_str_name(&self) -> &'static str {
27234        match self {
27235            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
27236            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
27237            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
27238            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
27239            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
27240            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
27241            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
27242            Self::Tsc => "BUILTIN_CLOCK_TSC",
27243            Self::Perf => "BUILTIN_CLOCK_PERF",
27244            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
27245            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
27246        }
27247    }
27248    /// Creates an enum from field names used in the ProtoBuf definition.
27249    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27250        match value {
27251            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
27252            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
27253            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
27254            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
27255            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
27256            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
27257            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
27258            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
27259            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
27260            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
27261            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
27262            _ => None,
27263        }
27264    }
27265}
27266/// Semantic types for string fields. This tells the filter what kind of
27267/// data the field contains, so it can apply the right filtering rules.
27268/// See /rfcs/0011-subset-string-filter-rules.md for design details.
27269/// Introduced in: Perfetto v54.
27270#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27271#[repr(i32)]
27272pub enum SemanticType {
27273    Unspecified = 0,
27274    Atrace = 1,
27275    Job = 2,
27276    Wakelock = 3,
27277}
27278impl SemanticType {
27279    /// String value of the enum field names used in the ProtoBuf definition.
27280    ///
27281    /// The values are not transformed in any way and thus are considered stable
27282    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27283    pub fn as_str_name(&self) -> &'static str {
27284        match self {
27285            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
27286            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
27287            Self::Job => "SEMANTIC_TYPE_JOB",
27288            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
27289        }
27290    }
27291    /// Creates an enum from field names used in the ProtoBuf definition.
27292    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27293        match value {
27294            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
27295            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
27296            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
27297            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
27298            _ => None,
27299        }
27300    }
27301}
27302/// Values from NDK's android/log.h.
27303#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27304#[repr(i32)]
27305pub enum AndroidLogId {
27306    /// MAIN.
27307    LidDefault = 0,
27308    LidRadio = 1,
27309    LidEvents = 2,
27310    LidSystem = 3,
27311    LidCrash = 4,
27312    LidStats = 5,
27313    LidSecurity = 6,
27314    LidKernel = 7,
27315}
27316impl AndroidLogId {
27317    /// String value of the enum field names used in the ProtoBuf definition.
27318    ///
27319    /// The values are not transformed in any way and thus are considered stable
27320    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27321    pub fn as_str_name(&self) -> &'static str {
27322        match self {
27323            Self::LidDefault => "LID_DEFAULT",
27324            Self::LidRadio => "LID_RADIO",
27325            Self::LidEvents => "LID_EVENTS",
27326            Self::LidSystem => "LID_SYSTEM",
27327            Self::LidCrash => "LID_CRASH",
27328            Self::LidStats => "LID_STATS",
27329            Self::LidSecurity => "LID_SECURITY",
27330            Self::LidKernel => "LID_KERNEL",
27331        }
27332    }
27333    /// Creates an enum from field names used in the ProtoBuf definition.
27334    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27335        match value {
27336            "LID_DEFAULT" => Some(Self::LidDefault),
27337            "LID_RADIO" => Some(Self::LidRadio),
27338            "LID_EVENTS" => Some(Self::LidEvents),
27339            "LID_SYSTEM" => Some(Self::LidSystem),
27340            "LID_CRASH" => Some(Self::LidCrash),
27341            "LID_STATS" => Some(Self::LidStats),
27342            "LID_SECURITY" => Some(Self::LidSecurity),
27343            "LID_KERNEL" => Some(Self::LidKernel),
27344            _ => None,
27345        }
27346    }
27347}
27348#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27349#[repr(i32)]
27350pub enum AndroidLogPriority {
27351    PrioUnspecified = 0,
27352    /// _DEFAULT, but should never be seen in logs.
27353    PrioUnused = 1,
27354    PrioVerbose = 2,
27355    PrioDebug = 3,
27356    PrioInfo = 4,
27357    PrioWarn = 5,
27358    PrioError = 6,
27359    PrioFatal = 7,
27360}
27361impl AndroidLogPriority {
27362    /// String value of the enum field names used in the ProtoBuf definition.
27363    ///
27364    /// The values are not transformed in any way and thus are considered stable
27365    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27366    pub fn as_str_name(&self) -> &'static str {
27367        match self {
27368            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
27369            Self::PrioUnused => "PRIO_UNUSED",
27370            Self::PrioVerbose => "PRIO_VERBOSE",
27371            Self::PrioDebug => "PRIO_DEBUG",
27372            Self::PrioInfo => "PRIO_INFO",
27373            Self::PrioWarn => "PRIO_WARN",
27374            Self::PrioError => "PRIO_ERROR",
27375            Self::PrioFatal => "PRIO_FATAL",
27376        }
27377    }
27378    /// Creates an enum from field names used in the ProtoBuf definition.
27379    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27380        match value {
27381            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
27382            "PRIO_UNUSED" => Some(Self::PrioUnused),
27383            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
27384            "PRIO_DEBUG" => Some(Self::PrioDebug),
27385            "PRIO_INFO" => Some(Self::PrioInfo),
27386            "PRIO_WARN" => Some(Self::PrioWarn),
27387            "PRIO_ERROR" => Some(Self::PrioError),
27388            "PRIO_FATAL" => Some(Self::PrioFatal),
27389            _ => None,
27390        }
27391    }
27392}
27393#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27394#[repr(i32)]
27395pub enum ProtoLogLevel {
27396    ProtologLevelUndefined = 0,
27397    ProtologLevelDebug = 1,
27398    ProtologLevelVerbose = 2,
27399    ProtologLevelInfo = 3,
27400    ProtologLevelWarn = 4,
27401    ProtologLevelError = 5,
27402    ProtologLevelWtf = 6,
27403}
27404impl ProtoLogLevel {
27405    /// String value of the enum field names used in the ProtoBuf definition.
27406    ///
27407    /// The values are not transformed in any way and thus are considered stable
27408    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27409    pub fn as_str_name(&self) -> &'static str {
27410        match self {
27411            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
27412            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
27413            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
27414            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
27415            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
27416            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
27417            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
27418        }
27419    }
27420    /// Creates an enum from field names used in the ProtoBuf definition.
27421    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27422        match value {
27423            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
27424            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
27425            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
27426            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
27427            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
27428            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
27429            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
27430            _ => None,
27431        }
27432    }
27433}
27434/// This enum is obtained by post-processing
27435/// AOSP/frameworks/proto_logging/stats/atoms.proto through
27436/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
27437/// enum value for each proto field defined in the upstream atoms.proto.
27438#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27439#[repr(i32)]
27440pub enum AtomId {
27441    AtomUnspecified = 0,
27442    AtomBleScanStateChanged = 2,
27443    AtomProcessStateChanged = 3,
27444    AtomBleScanResultReceived = 4,
27445    AtomSensorStateChanged = 5,
27446    AtomGpsScanStateChanged = 6,
27447    AtomSyncStateChanged = 7,
27448    AtomScheduledJobStateChanged = 8,
27449    AtomScreenBrightnessChanged = 9,
27450    AtomWakelockStateChanged = 10,
27451    AtomLongPartialWakelockStateChanged = 11,
27452    AtomMobileRadioPowerStateChanged = 12,
27453    AtomWifiRadioPowerStateChanged = 13,
27454    AtomActivityManagerSleepStateChanged = 14,
27455    AtomMemoryFactorStateChanged = 15,
27456    AtomExcessiveCpuUsageReported = 16,
27457    AtomCachedKillReported = 17,
27458    AtomProcessMemoryStatReported = 18,
27459    AtomLauncherEvent = 19,
27460    AtomBatterySaverModeStateChanged = 20,
27461    AtomDeviceIdleModeStateChanged = 21,
27462    AtomDeviceIdlingModeStateChanged = 22,
27463    AtomAudioStateChanged = 23,
27464    AtomMediaCodecStateChanged = 24,
27465    AtomCameraStateChanged = 25,
27466    AtomFlashlightStateChanged = 26,
27467    AtomUidProcessStateChanged = 27,
27468    AtomProcessLifeCycleStateChanged = 28,
27469    AtomScreenStateChanged = 29,
27470    AtomBatteryLevelChanged = 30,
27471    AtomChargingStateChanged = 31,
27472    AtomPluggedStateChanged = 32,
27473    AtomInteractiveStateChanged = 33,
27474    AtomTouchEventReported = 34,
27475    AtomWakeupAlarmOccurred = 35,
27476    AtomKernelWakeupReported = 36,
27477    AtomWifiLockStateChanged = 37,
27478    AtomWifiSignalStrengthChanged = 38,
27479    AtomWifiScanStateChanged = 39,
27480    AtomPhoneSignalStrengthChanged = 40,
27481    AtomSettingChanged = 41,
27482    AtomActivityForegroundStateChanged = 42,
27483    AtomIsolatedUidChanged = 43,
27484    AtomPacketWakeupOccurred = 44,
27485    AtomWallClockTimeShifted = 45,
27486    AtomAnomalyDetected = 46,
27487    AtomAppBreadcrumbReported = 47,
27488    AtomAppStartOccurred = 48,
27489    AtomAppStartCanceled = 49,
27490    AtomAppStartFullyDrawn = 50,
27491    AtomLmkKillOccurred = 51,
27492    AtomPictureInPictureStateChanged = 52,
27493    AtomWifiMulticastLockStateChanged = 53,
27494    AtomAppStartMemoryStateCaptured = 55,
27495    AtomShutdownSequenceReported = 56,
27496    AtomBootSequenceReported = 57,
27497    AtomOverlayStateChanged = 59,
27498    AtomForegroundServiceStateChanged = 60,
27499    AtomCallStateChanged = 61,
27500    AtomKeyguardStateChanged = 62,
27501    AtomKeyguardBouncerStateChanged = 63,
27502    AtomKeyguardBouncerPasswordEntered = 64,
27503    AtomAppDied = 65,
27504    AtomResourceConfigurationChanged = 66,
27505    AtomBluetoothEnabledStateChanged = 67,
27506    AtomBluetoothConnectionStateChanged = 68,
27507    AtomGpsSignalQualityChanged = 69,
27508    AtomUsbConnectorStateChanged = 70,
27509    AtomSpeakerImpedanceReported = 71,
27510    AtomHardwareFailed = 72,
27511    AtomPhysicalDropDetected = 73,
27512    AtomChargeCyclesReported = 74,
27513    AtomMobileConnectionStateChanged = 75,
27514    AtomMobileRadioTechnologyChanged = 76,
27515    AtomUsbDeviceAttached = 77,
27516    AtomAppCrashOccurred = 78,
27517    AtomAnrOccurred = 79,
27518    AtomWtfOccurred = 80,
27519    AtomLowMemReported = 81,
27520    AtomGenericAtom = 82,
27521    AtomVibratorStateChanged = 84,
27522    AtomDeferredJobStatsReported = 85,
27523    AtomThermalThrottling = 86,
27524    AtomBiometricAcquired = 87,
27525    AtomBiometricAuthenticated = 88,
27526    AtomBiometricErrorOccurred = 89,
27527    AtomUiEventReported = 90,
27528    AtomBatteryHealthSnapshot = 91,
27529    AtomSlowIo = 92,
27530    AtomBatteryCausedShutdown = 93,
27531    AtomPhoneServiceStateChanged = 94,
27532    AtomPhoneStateChanged = 95,
27533    AtomUserRestrictionChanged = 96,
27534    AtomSettingsUiChanged = 97,
27535    AtomConnectivityStateChanged = 98,
27536    AtomServiceStateChanged = 99,
27537    AtomServiceLaunchReported = 100,
27538    AtomFlagFlipUpdateOccurred = 101,
27539    AtomBinaryPushStateChanged = 102,
27540    AtomDevicePolicyEvent = 103,
27541    AtomDocsUiFileOpCanceled = 104,
27542    AtomDocsUiFileOpCopyMoveModeReported = 105,
27543    AtomDocsUiFileOpFailure = 106,
27544    AtomDocsUiProviderFileOp = 107,
27545    AtomDocsUiInvalidScopedAccessRequest = 108,
27546    AtomDocsUiLaunchReported = 109,
27547    AtomDocsUiRootVisited = 110,
27548    AtomDocsUiStartupMs = 111,
27549    AtomDocsUiUserActionReported = 112,
27550    AtomWifiEnabledStateChanged = 113,
27551    AtomWifiRunningStateChanged = 114,
27552    AtomAppCompacted = 115,
27553    AtomNetworkDnsEventReported = 116,
27554    AtomDocsUiPickerLaunchedFromReported = 117,
27555    AtomDocsUiPickResultReported = 118,
27556    AtomDocsUiSearchModeReported = 119,
27557    AtomDocsUiSearchTypeReported = 120,
27558    AtomDataStallEvent = 121,
27559    AtomRescuePartyResetReported = 122,
27560    AtomSignedConfigReported = 123,
27561    AtomGnssNiEventReported = 124,
27562    AtomBluetoothLinkLayerConnectionEvent = 125,
27563    AtomBluetoothAclConnectionStateChanged = 126,
27564    AtomBluetoothScoConnectionStateChanged = 127,
27565    AtomAppDowngraded = 128,
27566    AtomAppOptimizedAfterDowngraded = 129,
27567    AtomLowStorageStateChanged = 130,
27568    AtomGnssNfwNotificationReported = 131,
27569    AtomGnssConfigurationReported = 132,
27570    AtomUsbPortOverheatEventReported = 133,
27571    AtomNfcErrorOccurred = 134,
27572    AtomNfcStateChanged = 135,
27573    AtomNfcBeamOccurred = 136,
27574    AtomNfcCardemulationOccurred = 137,
27575    AtomNfcTagOccurred = 138,
27576    AtomNfcHceTransactionOccurred = 139,
27577    AtomSeStateChanged = 140,
27578    AtomSeOmapiReported = 141,
27579    AtomBroadcastDispatchLatencyReported = 142,
27580    AtomAttentionManagerServiceResultReported = 143,
27581    AtomAdbConnectionChanged = 144,
27582    AtomSpeechDspStatReported = 145,
27583    AtomUsbContaminantReported = 146,
27584    AtomWatchdogRollbackOccurred = 147,
27585    AtomBiometricSystemHealthIssueDetected = 148,
27586    AtomBubbleUiChanged = 149,
27587    AtomScheduledJobConstraintChanged = 150,
27588    AtomBluetoothActiveDeviceChanged = 151,
27589    AtomBluetoothA2dpPlaybackStateChanged = 152,
27590    AtomBluetoothA2dpCodecConfigChanged = 153,
27591    AtomBluetoothA2dpCodecCapabilityChanged = 154,
27592    AtomBluetoothA2dpAudioUnderrunReported = 155,
27593    AtomBluetoothA2dpAudioOverrunReported = 156,
27594    AtomBluetoothDeviceRssiReported = 157,
27595    AtomBluetoothDeviceFailedContactCounterReported = 158,
27596    AtomBluetoothDeviceTxPowerLevelReported = 159,
27597    AtomBluetoothHciTimeoutReported = 160,
27598    AtomBluetoothQualityReportReported = 161,
27599    AtomBluetoothDeviceInfoReported = 162,
27600    AtomBluetoothRemoteVersionInfoReported = 163,
27601    AtomBluetoothSdpAttributeReported = 164,
27602    AtomBluetoothBondStateChanged = 165,
27603    AtomBluetoothClassicPairingEventReported = 166,
27604    AtomBluetoothSmpPairingEventReported = 167,
27605    AtomScreenTimeoutExtensionReported = 168,
27606    AtomProcessStartTime = 169,
27607    AtomPermissionGrantRequestResultReported = 170,
27608    AtomBluetoothSocketConnectionStateChanged = 171,
27609    AtomDeviceIdentifierAccessDenied = 172,
27610    AtomBubbleDeveloperErrorReported = 173,
27611    AtomAssistGestureStageReported = 174,
27612    AtomAssistGestureFeedbackReported = 175,
27613    AtomAssistGestureProgressReported = 176,
27614    AtomTouchGestureClassified = 177,
27615    AtomHiddenApiUsed = 178,
27616    AtomStyleUiChanged = 179,
27617    AtomPrivacyIndicatorsInteracted = 180,
27618    AtomAppInstallOnExternalStorageReported = 181,
27619    AtomNetworkStackReported = 182,
27620    AtomAppMovedStorageReported = 183,
27621    AtomBiometricEnrolled = 184,
27622    AtomSystemServerWatchdogOccurred = 185,
27623    AtomTombStoneOccurred = 186,
27624    AtomBluetoothClassOfDeviceReported = 187,
27625    AtomIntelligenceEventReported = 188,
27626    AtomThermalThrottlingSeverityStateChanged = 189,
27627    AtomRoleRequestResultReported = 190,
27628    AtomMediametricsAudiopolicyReported = 191,
27629    AtomMediametricsAudiorecordReported = 192,
27630    AtomMediametricsAudiothreadReported = 193,
27631    AtomMediametricsAudiotrackReported = 194,
27632    AtomMediametricsCodecReported = 195,
27633    AtomMediametricsDrmWidevineReported = 196,
27634    AtomMediametricsExtractorReported = 197,
27635    AtomMediametricsMediadrmReported = 198,
27636    AtomMediametricsNuplayerReported = 199,
27637    AtomMediametricsRecorderReported = 200,
27638    AtomMediametricsDrmmanagerReported = 201,
27639    AtomCarPowerStateChanged = 203,
27640    AtomGarageModeInfo = 204,
27641    AtomTestAtomReported = 205,
27642    AtomContentCaptureCallerMismatchReported = 206,
27643    AtomContentCaptureServiceEvents = 207,
27644    AtomContentCaptureSessionEvents = 208,
27645    AtomContentCaptureFlushed = 209,
27646    AtomLocationManagerApiUsageReported = 210,
27647    AtomReviewPermissionsFragmentResultReported = 211,
27648    AtomRuntimePermissionsUpgradeResult = 212,
27649    AtomGrantPermissionsActivityButtonActions = 213,
27650    AtomLocationAccessCheckNotificationAction = 214,
27651    AtomAppPermissionFragmentActionReported = 215,
27652    AtomAppPermissionFragmentViewed = 216,
27653    AtomAppPermissionsFragmentViewed = 217,
27654    AtomPermissionAppsFragmentViewed = 218,
27655    AtomTextSelectionEvent = 219,
27656    AtomTextLinkifyEvent = 220,
27657    AtomConversationActionsEvent = 221,
27658    AtomLanguageDetectionEvent = 222,
27659    AtomExclusionRectStateChanged = 223,
27660    AtomBackGestureReportedReported = 224,
27661    AtomUpdateEngineUpdateAttemptReported = 225,
27662    AtomUpdateEngineSuccessfulUpdateReported = 226,
27663    AtomCameraActionEvent = 227,
27664    AtomAppCompatibilityChangeReported = 228,
27665    AtomPerfettoUploaded = 229,
27666    AtomVmsClientConnectionStateChanged = 230,
27667    AtomMediaProviderScanOccurred = 233,
27668    AtomMediaContentDeleted = 234,
27669    AtomMediaProviderPermissionRequested = 235,
27670    AtomMediaProviderSchemaChanged = 236,
27671    AtomMediaProviderIdleMaintenanceFinished = 237,
27672    AtomRebootEscrowRecoveryReported = 238,
27673    AtomBootTimeEventDurationReported = 239,
27674    AtomBootTimeEventElapsedTimeReported = 240,
27675    AtomBootTimeEventUtcTimeReported = 241,
27676    AtomBootTimeEventErrorCodeReported = 242,
27677    AtomUserspaceRebootReported = 243,
27678    AtomNotificationReported = 244,
27679    AtomNotificationPanelReported = 245,
27680    AtomNotificationChannelModified = 246,
27681    AtomIntegrityCheckResultReported = 247,
27682    AtomIntegrityRulesPushed = 248,
27683    AtomCbMessageReported = 249,
27684    AtomCbMessageError = 250,
27685    AtomWifiHealthStatReported = 251,
27686    AtomWifiFailureStatReported = 252,
27687    AtomWifiConnectionResultReported = 253,
27688    AtomAppFreezeChanged = 254,
27689    AtomSnapshotMergeReported = 255,
27690    AtomForegroundServiceAppOpSessionEnded = 256,
27691    AtomDisplayJankReported = 257,
27692    AtomAppStandbyBucketChanged = 258,
27693    AtomSharesheetStarted = 259,
27694    AtomRankingSelected = 260,
27695    AtomTvsettingsUiInteracted = 261,
27696    AtomLauncherSnapshot = 262,
27697    AtomPackageInstallerV2Reported = 263,
27698    AtomUserLifecycleJourneyReported = 264,
27699    AtomUserLifecycleEventOccurred = 265,
27700    AtomAccessibilityShortcutReported = 266,
27701    AtomAccessibilityServiceReported = 267,
27702    AtomDocsUiDragAndDropReported = 268,
27703    AtomAppUsageEventOccurred = 269,
27704    AtomAutoRevokeNotificationClicked = 270,
27705    AtomAutoRevokeFragmentAppViewed = 271,
27706    AtomAutoRevokedAppInteraction = 272,
27707    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
27708    AtomEvsUsageStatsReported = 274,
27709    AtomAudioPowerUsageDataReported = 275,
27710    AtomTvTunerStateChanged = 276,
27711    AtomMediaoutputOpSwitchReported = 277,
27712    AtomCbMessageFiltered = 278,
27713    AtomTvTunerDvrStatus = 279,
27714    AtomTvCasSessionOpenStatus = 280,
27715    AtomAssistantInvocationReported = 281,
27716    AtomDisplayWakeReported = 282,
27717    AtomCarUserHalModifyUserRequestReported = 283,
27718    AtomCarUserHalModifyUserResponseReported = 284,
27719    AtomCarUserHalPostSwitchResponseReported = 285,
27720    AtomCarUserHalInitialUserInfoRequestReported = 286,
27721    AtomCarUserHalInitialUserInfoResponseReported = 287,
27722    AtomCarUserHalUserAssociationRequestReported = 288,
27723    AtomCarUserHalSetUserAssociationResponseReported = 289,
27724    AtomNetworkIpProvisioningReported = 290,
27725    AtomNetworkDhcpRenewReported = 291,
27726    AtomNetworkValidationReported = 292,
27727    AtomNetworkStackQuirkReported = 293,
27728    AtomMediametricsAudiorecorddeviceusageReported = 294,
27729    AtomMediametricsAudiothreaddeviceusageReported = 295,
27730    AtomMediametricsAudiotrackdeviceusageReported = 296,
27731    AtomMediametricsAudiodeviceconnectionReported = 297,
27732    AtomBlobCommitted = 298,
27733    AtomBlobLeased = 299,
27734    AtomBlobOpened = 300,
27735    AtomContactsProviderStatusReported = 301,
27736    AtomKeystoreKeyEventReported = 302,
27737    AtomNetworkTetheringReported = 303,
27738    AtomImeTouchReported = 304,
27739    AtomUiInteractionFrameInfoReported = 305,
27740    AtomUiActionLatencyReported = 306,
27741    AtomWifiDisconnectReported = 307,
27742    AtomWifiConnectionStateChanged = 308,
27743    AtomHdmiCecActiveSourceChanged = 309,
27744    AtomHdmiCecMessageReported = 310,
27745    AtomAirplaneMode = 311,
27746    AtomModemRestart = 312,
27747    AtomCarrierIdMismatchReported = 313,
27748    AtomCarrierIdTableUpdated = 314,
27749    AtomDataStallRecoveryReported = 315,
27750    AtomMediametricsMediaparserReported = 316,
27751    AtomTlsHandshakeReported = 317,
27752    AtomTextClassifierApiUsageReported = 318,
27753    AtomCarWatchdogKillStatsReported = 319,
27754    AtomMediametricsPlaybackReported = 320,
27755    AtomMediaNetworkInfoChanged = 321,
27756    AtomMediaPlaybackStateChanged = 322,
27757    AtomMediaPlaybackErrorReported = 323,
27758    AtomMediaPlaybackTrackChanged = 324,
27759    AtomWifiScanReported = 325,
27760    AtomWifiPnoScanReported = 326,
27761    AtomTifTuneChanged = 327,
27762    AtomAutoRotateReported = 328,
27763    AtomPerfettoTrigger = 329,
27764    AtomTranscodingData = 330,
27765    AtomImsServiceEntitlementUpdated = 331,
27766    AtomDeviceRotated = 333,
27767    AtomSimSpecificSettingsRestored = 334,
27768    AtomTextClassifierDownloadReported = 335,
27769    AtomPinStorageEvent = 336,
27770    AtomFaceDownReported = 337,
27771    AtomBluetoothHalCrashReasonReported = 338,
27772    AtomRebootEscrowPreparationReported = 339,
27773    AtomRebootEscrowLskfCaptureReported = 340,
27774    AtomRebootEscrowRebootReported = 341,
27775    AtomBinderLatencyReported = 342,
27776    AtomMediametricsAaudiostreamReported = 343,
27777    AtomMediaTranscodingSessionEnded = 344,
27778    AtomMagnificationUsageReported = 345,
27779    AtomMagnificationModeWithImeOnReported = 346,
27780    AtomAppSearchCallStatsReported = 347,
27781    AtomAppSearchPutDocumentStatsReported = 348,
27782    AtomDeviceControlChanged = 349,
27783    AtomDeviceStateChanged = 350,
27784    AtomInputdeviceRegistered = 351,
27785    AtomSmartspaceCardReported = 352,
27786    AtomAuthPromptAuthenticateInvoked = 353,
27787    AtomAuthManagerCanAuthenticateInvoked = 354,
27788    AtomAuthEnrollActionInvoked = 355,
27789    AtomAuthDeprecatedApiUsed = 356,
27790    AtomUnattendedRebootOccurred = 357,
27791    AtomLongRebootBlockingReported = 358,
27792    AtomLocationTimeZoneProviderStateChanged = 359,
27793    AtomFdtrackEventOccurred = 364,
27794    AtomTimeoutAutoExtendedReported = 365,
27795    AtomAlarmBatchDelivered = 367,
27796    AtomAlarmScheduled = 368,
27797    AtomCarWatchdogIoOveruseStatsReported = 369,
27798    AtomUserLevelHibernationStateChanged = 370,
27799    AtomAppSearchInitializeStatsReported = 371,
27800    AtomAppSearchQueryStatsReported = 372,
27801    AtomAppProcessDied = 373,
27802    AtomNetworkIpReachabilityMonitorReported = 374,
27803    AtomSlowInputEventReported = 375,
27804    AtomAnrOccurredProcessingStarted = 376,
27805    AtomAppSearchRemoveStatsReported = 377,
27806    AtomMediaCodecReported = 378,
27807    AtomPermissionUsageFragmentInteraction = 379,
27808    AtomPermissionDetailsInteraction = 380,
27809    AtomPrivacySensorToggleInteraction = 381,
27810    AtomPrivacyToggleDialogInteraction = 382,
27811    AtomAppSearchOptimizeStatsReported = 383,
27812    AtomNonA11yToolServiceWarningReport = 384,
27813    AtomAppCompatStateChanged = 386,
27814    AtomSizeCompatRestartButtonEventReported = 387,
27815    AtomSplitscreenUiChanged = 388,
27816    AtomNetworkDnsHandshakeReported = 389,
27817    AtomBluetoothCodePathCounter = 390,
27818    AtomBluetoothLeBatchScanReportDelay = 392,
27819    AtomAccessibilityFloatingMenuUiChanged = 393,
27820    AtomNeuralnetworksCompilationCompleted = 394,
27821    AtomNeuralnetworksExecutionCompleted = 395,
27822    AtomNeuralnetworksCompilationFailed = 396,
27823    AtomNeuralnetworksExecutionFailed = 397,
27824    AtomContextHubBooted = 398,
27825    AtomContextHubRestarted = 399,
27826    AtomContextHubLoadedNanoappSnapshotReported = 400,
27827    AtomChreCodeDownloadTransacted = 401,
27828    AtomUwbSessionInited = 402,
27829    AtomUwbSessionClosed = 403,
27830    AtomUwbFirstRangingReceived = 404,
27831    AtomUwbRangingMeasurementReceived = 405,
27832    AtomTextClassifierDownloadWorkScheduled = 406,
27833    AtomTextClassifierDownloadWorkCompleted = 407,
27834    AtomClipboardCleared = 408,
27835    AtomVmCreationRequested = 409,
27836    AtomNearbyDeviceScanStateChanged = 410,
27837    AtomApplicationLocalesChanged = 412,
27838    AtomMediametricsAudiotrackstatusReported = 413,
27839    AtomFoldStateDurationReported = 414,
27840    AtomLocationTimeZoneProviderControllerStateChanged = 415,
27841    AtomDisplayHbmStateChanged = 416,
27842    AtomDisplayHbmBrightnessChanged = 417,
27843    AtomPersistentUriPermissionsFlushed = 418,
27844    AtomEarlyBootCompOsArtifactsCheckReported = 419,
27845    AtomVbmetaDigestReported = 420,
27846    AtomApexInfoGathered = 421,
27847    AtomPvmInfoGathered = 422,
27848    AtomWearSettingsUiInteracted = 423,
27849    AtomTracingServiceReportEvent = 424,
27850    AtomMediametricsAudiorecordstatusReported = 425,
27851    AtomLauncherLatency = 426,
27852    AtomDropboxEntryDropped = 427,
27853    AtomWifiP2pConnectionReported = 428,
27854    AtomGameStateChanged = 429,
27855    AtomHotwordDetectorCreateRequested = 430,
27856    AtomHotwordDetectionServiceInitResultReported = 431,
27857    AtomHotwordDetectionServiceRestarted = 432,
27858    AtomHotwordDetectorKeyphraseTriggered = 433,
27859    AtomHotwordDetectorEvents = 434,
27860    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
27861    AtomContactsIndexerUpdateStatsReported = 440,
27862    AtomAppBackgroundRestrictionsInfo = 441,
27863    AtomMmsSmsProviderGetThreadIdFailed = 442,
27864    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
27865    AtomPermissionReminderNotificationInteracted = 444,
27866    AtomRecentPermissionDecisionsInteracted = 445,
27867    AtomGnssPsdsDownloadReported = 446,
27868    AtomLeAudioConnectionSessionReported = 447,
27869    AtomLeAudioBroadcastSessionReported = 448,
27870    AtomDreamUiEventReported = 449,
27871    AtomTaskManagerEventReported = 450,
27872    AtomCdmAssociationAction = 451,
27873    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
27874    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
27875    AtomAccessibilityTextReadingOptionsChanged = 454,
27876    AtomWifiSetupFailureCrashReported = 455,
27877    AtomUwbDeviceErrorReported = 456,
27878    AtomIsolatedCompilationScheduled = 457,
27879    AtomIsolatedCompilationEnded = 458,
27880    AtomOnsOpportunisticEsimProvisioningComplete = 459,
27881    AtomSystemServerPreWatchdogOccurred = 460,
27882    AtomTelephonyAnomalyDetected = 461,
27883    AtomLetterboxPositionChanged = 462,
27884    AtomRemoteKeyProvisioningAttempt = 463,
27885    AtomRemoteKeyProvisioningNetworkInfo = 464,
27886    AtomRemoteKeyProvisioningTiming = 465,
27887    AtomMediaoutputOpInteractionReport = 466,
27888    AtomSyncExemptionOccurred = 468,
27889    AtomAutofillPresentationEventReported = 469,
27890    AtomDockStateChanged = 470,
27891    AtomSafetySourceStateCollected = 471,
27892    AtomSafetyCenterSystemEventReported = 472,
27893    AtomSafetyCenterInteractionReported = 473,
27894    AtomSettingsProviderSettingChanged = 474,
27895    AtomBroadcastDeliveryEventReported = 475,
27896    AtomServiceRequestEventReported = 476,
27897    AtomProviderAcquisitionEventReported = 477,
27898    AtomBluetoothDeviceNameReported = 478,
27899    AtomCbConfigUpdated = 479,
27900    AtomCbModuleErrorReported = 480,
27901    AtomCbServiceFeatureChanged = 481,
27902    AtomCbReceiverFeatureChanged = 482,
27903    AtomPrivacySignalNotificationInteraction = 484,
27904    AtomPrivacySignalIssueCardInteraction = 485,
27905    AtomPrivacySignalsJobFailure = 486,
27906    AtomVibrationReported = 487,
27907    AtomUwbRangingStart = 489,
27908    AtomAppCompactedV2 = 491,
27909    AtomDisplayBrightnessChanged = 494,
27910    AtomActivityActionBlocked = 495,
27911    AtomNetworkDnsServerSupportReported = 504,
27912    AtomVmBooted = 505,
27913    AtomVmExited = 506,
27914    AtomAmbientBrightnessStatsReported = 507,
27915    AtomMediametricsSpatializercapabilitiesReported = 508,
27916    AtomMediametricsSpatializerdeviceenabledReported = 509,
27917    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
27918    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
27919    AtomHearingAidInfoReported = 513,
27920    AtomDeviceWideJobConstraintChanged = 514,
27921    AtomAmbientModeChanged = 515,
27922    AtomAnrLatencyReported = 516,
27923    AtomResourceApiInfo = 517,
27924    AtomSystemDefaultNetworkChanged = 518,
27925    AtomIwlanSetupDataCallResultReported = 519,
27926    AtomIwlanPdnDisconnectedReasonReported = 520,
27927    AtomAirplaneModeSessionReported = 521,
27928    AtomVmCpuStatusReported = 522,
27929    AtomVmMemStatusReported = 523,
27930    AtomPackageInstallationSessionReported = 524,
27931    AtomDefaultNetworkRematchInfo = 525,
27932    AtomNetworkSelectionPerformance = 526,
27933    AtomNetworkNsdReported = 527,
27934    AtomBluetoothDisconnectionReasonReported = 529,
27935    AtomBluetoothLocalVersionsReported = 530,
27936    AtomBluetoothRemoteSupportedFeaturesReported = 531,
27937    AtomBluetoothLocalSupportedFeaturesReported = 532,
27938    AtomBluetoothGattAppInfo = 533,
27939    AtomBrightnessConfigurationUpdated = 534,
27940    AtomWearMediaOutputSwitcherLaunched = 538,
27941    AtomWearMediaOutputSwitcherFinished = 539,
27942    AtomWearMediaOutputSwitcherConnectionReported = 540,
27943    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
27944    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
27945    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
27946    AtomPackageManagerSnapshotReported = 544,
27947    AtomPackageManagerAppsFilterCacheBuildReported = 545,
27948    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
27949    AtomLauncherImpressionEvent = 547,
27950    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
27951    AtomWsWatchFaceEdited = 551,
27952    AtomWsWatchFaceFavoriteActionReported = 552,
27953    AtomWsWatchFaceSetActionReported = 553,
27954    AtomPackageUninstallationReported = 554,
27955    AtomGameModeChanged = 555,
27956    AtomGameModeConfigurationChanged = 556,
27957    AtomBedtimeModeStateChanged = 557,
27958    AtomNetworkSliceSessionEnded = 558,
27959    AtomNetworkSliceDailyDataUsageReported = 559,
27960    AtomNfcTagTypeOccurred = 560,
27961    AtomNfcAidConflictOccurred = 561,
27962    AtomNfcReaderConflictOccurred = 562,
27963    AtomWsTileListChanged = 563,
27964    AtomGetTypeAccessedWithoutPermission = 564,
27965    AtomMobileBundledAppInfoGathered = 566,
27966    AtomWsWatchFaceComplicationSetChanged = 567,
27967    AtomMediaDrmCreated = 568,
27968    AtomMediaDrmErrored = 569,
27969    AtomMediaDrmSessionOpened = 570,
27970    AtomMediaDrmSessionClosed = 571,
27971    AtomUserSelectedResolution = 572,
27972    AtomUnsafeIntentEventReported = 573,
27973    AtomPerformanceHintSessionReported = 574,
27974    AtomMediametricsMidiDeviceCloseReported = 576,
27975    AtomBiometricTouchReported = 577,
27976    AtomHotwordAudioEgressEventReported = 578,
27977    AtomLocationEnabledStateChanged = 580,
27978    AtomImeRequestFinished = 581,
27979    AtomUsbComplianceWarningsReported = 582,
27980    AtomAppSupportedLocalesChanged = 583,
27981    AtomMediaProviderVolumeRecoveryReported = 586,
27982    AtomBiometricPropertiesCollected = 587,
27983    AtomKernelWakeupAttributed = 588,
27984    AtomScreenStateChangedV2 = 589,
27985    AtomWsBackupActionReported = 590,
27986    AtomWsRestoreActionReported = 591,
27987    AtomDeviceLogAccessEventReported = 592,
27988    AtomMediaSessionUpdated = 594,
27989    AtomWearOobeStateChanged = 595,
27990    AtomWsNotificationUpdated = 596,
27991    AtomNetworkValidationFailureStatsDailyReported = 601,
27992    AtomWsComplicationTapped = 602,
27993    AtomWsNotificationBlocking = 780,
27994    AtomWsNotificationBridgemodeUpdated = 822,
27995    AtomWsNotificationDismissalActioned = 823,
27996    AtomWsNotificationActioned = 824,
27997    AtomWsNotificationLatency = 880,
27998    AtomWifiBytesTransfer = 10000,
27999    AtomWifiBytesTransferByFgBg = 10001,
28000    AtomMobileBytesTransfer = 10002,
28001    AtomMobileBytesTransferByFgBg = 10003,
28002    AtomBluetoothBytesTransfer = 10006,
28003    AtomKernelWakelock = 10004,
28004    AtomSubsystemSleepState = 10005,
28005    AtomCpuTimePerUid = 10009,
28006    AtomCpuTimePerUidFreq = 10010,
28007    AtomWifiActivityInfo = 10011,
28008    AtomModemActivityInfo = 10012,
28009    AtomBluetoothActivityInfo = 10007,
28010    AtomProcessMemoryState = 10013,
28011    AtomSystemElapsedRealtime = 10014,
28012    AtomSystemUptime = 10015,
28013    AtomCpuActiveTime = 10016,
28014    AtomCpuClusterTime = 10017,
28015    AtomDiskSpace = 10018,
28016    AtomRemainingBatteryCapacity = 10019,
28017    AtomFullBatteryCapacity = 10020,
28018    AtomTemperature = 10021,
28019    AtomBinderCalls = 10022,
28020    AtomBinderCallsExceptions = 10023,
28021    AtomLooperStats = 10024,
28022    AtomDiskStats = 10025,
28023    AtomDirectoryUsage = 10026,
28024    AtomAppSize = 10027,
28025    AtomCategorySize = 10028,
28026    AtomProcStats = 10029,
28027    AtomBatteryVoltage = 10030,
28028    AtomNumFingerprintsEnrolled = 10031,
28029    AtomDiskIo = 10032,
28030    AtomPowerProfile = 10033,
28031    AtomProcStatsPkgProc = 10034,
28032    AtomProcessCpuTime = 10035,
28033    AtomCpuTimePerThreadFreq = 10037,
28034    AtomOnDevicePowerMeasurement = 10038,
28035    AtomDeviceCalculatedPowerUse = 10039,
28036    AtomProcessMemoryHighWaterMark = 10042,
28037    AtomBatteryLevel = 10043,
28038    AtomBuildInformation = 10044,
28039    AtomBatteryCycleCount = 10045,
28040    AtomDebugElapsedClock = 10046,
28041    AtomDebugFailingElapsedClock = 10047,
28042    AtomNumFacesEnrolled = 10048,
28043    AtomRoleHolder = 10049,
28044    AtomDangerousPermissionState = 10050,
28045    AtomTrainInfo = 10051,
28046    AtomTimeZoneDataInfo = 10052,
28047    AtomExternalStorageInfo = 10053,
28048    AtomGpuStatsGlobalInfo = 10054,
28049    AtomGpuStatsAppInfo = 10055,
28050    AtomSystemIonHeapSize = 10056,
28051    AtomAppsOnExternalStorageInfo = 10057,
28052    AtomFaceSettings = 10058,
28053    AtomCoolingDevice = 10059,
28054    AtomAppOps = 10060,
28055    AtomProcessSystemIonHeapSize = 10061,
28056    AtomSurfaceflingerStatsGlobalInfo = 10062,
28057    AtomSurfaceflingerStatsLayerInfo = 10063,
28058    AtomProcessMemorySnapshot = 10064,
28059    AtomVmsClientStats = 10065,
28060    AtomNotificationRemoteViews = 10066,
28061    AtomDangerousPermissionStateSampled = 10067,
28062    AtomGraphicsStats = 10068,
28063    AtomRuntimeAppOpAccess = 10069,
28064    AtomIonHeapSize = 10070,
28065    AtomPackageNotificationPreferences = 10071,
28066    AtomPackageNotificationChannelPreferences = 10072,
28067    AtomPackageNotificationChannelGroupPreferences = 10073,
28068    AtomGnssStats = 10074,
28069    AtomAttributedAppOps = 10075,
28070    AtomVoiceCallSession = 10076,
28071    AtomVoiceCallRatUsage = 10077,
28072    AtomSimSlotState = 10078,
28073    AtomSupportedRadioAccessFamily = 10079,
28074    AtomSettingSnapshot = 10080,
28075    AtomBlobInfo = 10081,
28076    AtomDataUsageBytesTransfer = 10082,
28077    AtomBytesTransferByTagAndMetered = 10083,
28078    AtomDndModeRule = 10084,
28079    AtomGeneralExternalStorageAccessStats = 10085,
28080    AtomIncomingSms = 10086,
28081    AtomOutgoingSms = 10087,
28082    AtomCarrierIdTableVersion = 10088,
28083    AtomDataCallSession = 10089,
28084    AtomCellularServiceState = 10090,
28085    AtomCellularDataServiceSwitch = 10091,
28086    AtomSystemMemory = 10092,
28087    AtomImsRegistrationTermination = 10093,
28088    AtomImsRegistrationStats = 10094,
28089    AtomCpuTimePerClusterFreq = 10095,
28090    AtomCpuCyclesPerUidCluster = 10096,
28091    AtomDeviceRotatedData = 10097,
28092    AtomCpuCyclesPerThreadGroupCluster = 10098,
28093    AtomMediaDrmActivityInfo = 10099,
28094    AtomOemManagedBytesTransfer = 10100,
28095    AtomGnssPowerStats = 10101,
28096    AtomTimeZoneDetectorState = 10102,
28097    AtomKeystore2StorageStats = 10103,
28098    AtomRkpPoolStats = 10104,
28099    AtomProcessDmabufMemory = 10105,
28100    AtomPendingAlarmInfo = 10106,
28101    AtomUserLevelHibernatedApps = 10107,
28102    AtomLauncherLayoutSnapshot = 10108,
28103    AtomGlobalHibernatedApps = 10109,
28104    AtomInputEventLatencySketch = 10110,
28105    AtomBatteryUsageStatsBeforeReset = 10111,
28106    AtomBatteryUsageStatsSinceReset = 10112,
28107    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
28108    AtomInstalledIncrementalPackage = 10114,
28109    AtomTelephonyNetworkRequests = 10115,
28110    AtomAppSearchStorageInfo = 10116,
28111    AtomVmstat = 10117,
28112    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
28113    AtomKeystore2KeyCreationWithAuthInfo = 10119,
28114    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
28115    AtomKeystore2AtomWithOverflow = 10121,
28116    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
28117    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
28118    AtomRkpErrorStats = 10124,
28119    AtomKeystore2CrashStats = 10125,
28120    AtomVendorApexInfo = 10126,
28121    AtomAccessibilityShortcutStats = 10127,
28122    AtomAccessibilityFloatingMenuStats = 10128,
28123    AtomDataUsageBytesTransferV2 = 10129,
28124    AtomMediaCapabilities = 10130,
28125    AtomCarWatchdogSystemIoUsageSummary = 10131,
28126    AtomCarWatchdogUidIoUsageSummary = 10132,
28127    AtomImsRegistrationFeatureTagStats = 10133,
28128    AtomRcsClientProvisioningStats = 10134,
28129    AtomRcsAcsProvisioningStats = 10135,
28130    AtomSipDelegateStats = 10136,
28131    AtomSipTransportFeatureTagStats = 10137,
28132    AtomSipMessageResponse = 10138,
28133    AtomSipTransportSession = 10139,
28134    AtomImsDedicatedBearerListenerEvent = 10140,
28135    AtomImsDedicatedBearerEvent = 10141,
28136    AtomImsRegistrationServiceDescStats = 10142,
28137    AtomUceEventStats = 10143,
28138    AtomPresenceNotifyEvent = 10144,
28139    AtomGbaEvent = 10145,
28140    AtomPerSimStatus = 10146,
28141    AtomGpuWorkPerUid = 10147,
28142    AtomPersistentUriPermissionsAmountPerPackage = 10148,
28143    AtomSignedPartitionInfo = 10149,
28144    AtomPinnedFileSizesPerPackage = 10150,
28145    AtomPendingIntentsPerPackage = 10151,
28146    AtomUserInfo = 10152,
28147    AtomTelephonyNetworkRequestsV2 = 10153,
28148    AtomDeviceTelephonyProperties = 10154,
28149    AtomRemoteKeyProvisioningErrorCounts = 10155,
28150    AtomSafetyState = 10156,
28151    AtomIncomingMms = 10157,
28152    AtomOutgoingMms = 10158,
28153    AtomMultiUserInfo = 10160,
28154    AtomNetworkBpfMapInfo = 10161,
28155    AtomOutgoingShortCodeSms = 10162,
28156    AtomConnectivityStateSample = 10163,
28157    AtomNetworkSelectionRematchReasonsInfo = 10164,
28158    AtomGameModeInfo = 10165,
28159    AtomGameModeConfiguration = 10166,
28160    AtomGameModeListener = 10167,
28161    AtomNetworkSliceRequestCount = 10168,
28162    AtomWsTileSnapshot = 10169,
28163    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
28164    AtomProcessState = 10171,
28165    AtomProcessAssociation = 10172,
28166    AtomAdpfSystemComponentInfo = 10173,
28167    AtomNotificationMemoryUse = 10174,
28168    AtomHdrCapabilities = 10175,
28169    AtomWsFavouriteWatchFaceListSnapshot = 10176,
28170    AtomWifiAwareNdpReported = 638,
28171    AtomWifiAwareAttachReported = 639,
28172    AtomWifiSelfRecoveryTriggered = 661,
28173    AtomSoftApStarted = 680,
28174    AtomSoftApStopped = 681,
28175    AtomWifiLockReleased = 687,
28176    AtomWifiLockDeactivated = 688,
28177    AtomWifiConfigSaved = 689,
28178    AtomWifiAwareResourceUsingChanged = 690,
28179    AtomWifiAwareHalApiCalled = 691,
28180    AtomWifiLocalOnlyRequestReceived = 692,
28181    AtomWifiLocalOnlyRequestScanTriggered = 693,
28182    AtomWifiThreadTaskExecuted = 694,
28183    AtomWifiStateChanged = 700,
28184    AtomPnoScanStarted = 719,
28185    AtomPnoScanStopped = 720,
28186    AtomWifiIsUnusableReported = 722,
28187    AtomWifiApCapabilitiesReported = 723,
28188    AtomSoftApStateChanged = 805,
28189    AtomScorerPredictionResultReported = 884,
28190    AtomWifiAwareCapabilities = 10190,
28191    AtomWifiModuleInfo = 10193,
28192    AtomWifiSettingInfo = 10194,
28193    AtomWifiComplexSettingInfo = 10195,
28194    AtomWifiConfiguredNetworkInfo = 10198,
28195    AtomWearPowerMenuOpened = 731,
28196    AtomWearAssistantOpened = 755,
28197    AtomFirstOverlayStateChanged = 917,
28198    AtomWsWearTimeSession = 610,
28199    AtomWsIncomingCallActionReported = 626,
28200    AtomWsCallDisconnectionReported = 627,
28201    AtomWsCallDurationReported = 628,
28202    AtomWsCallUserExperienceLatencyReported = 629,
28203    AtomWsCallInteractionReported = 630,
28204    AtomWsOnBodyStateChanged = 787,
28205    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
28206    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
28207    AtomWsComplicationsImpactedNotificationEventReported = 804,
28208    AtomWsRemoteEventUsageReported = 920,
28209    AtomWsNotificationManagedDismissalSync = 941,
28210    AtomWsBugreportEventReported = 964,
28211    AtomWsStandaloneModeSnapshot = 10197,
28212    AtomWsFavoriteWatchFaceSnapshot = 10206,
28213    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
28214    AtomWsWatchFaceCustomizationSnapshot = 10227,
28215    AtomWearAdaptiveSuspendStatsReported = 619,
28216    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
28217    AtomWearPowerAnomalyServiceEventStatsReported = 621,
28218    AtomWearTimeSyncRequested = 911,
28219    AtomWearTimeUpdateStarted = 912,
28220    AtomWearTimeSyncAttemptCompleted = 913,
28221    AtomWearTimeChanged = 914,
28222    AtomWearSetupWizardDeviceStatusReported = 953,
28223    AtomWearSetupWizardPairingCompleted = 954,
28224    AtomWearSetupWizardConnectionEstablished = 955,
28225    AtomWearSetupWizardCheckinCompleted = 956,
28226    AtomWearSetupWizardCompanionTimeReported = 957,
28227    AtomWearSetupWizardStatusReported = 958,
28228    AtomWearSetupWizardHeartbeatReported = 959,
28229    AtomWearSetupWizardFrpTriggered = 960,
28230    AtomWearSetupWizardSystemUpdateTriggered = 961,
28231    AtomWearSetupWizardPhoneSwitchTriggered = 962,
28232    AtomRendererInitialized = 736,
28233    AtomSchemaVersionReceived = 737,
28234    AtomLayoutInspected = 741,
28235    AtomLayoutExpressionInspected = 742,
28236    AtomLayoutAnimationsInspected = 743,
28237    AtomMaterialComponentsInspected = 744,
28238    AtomTileRequested = 745,
28239    AtomStateResponseReceived = 746,
28240    AtomTileResponseReceived = 747,
28241    AtomInflationFinished = 748,
28242    AtomInflationFailed = 749,
28243    AtomIgnoredInflationFailuresReported = 750,
28244    AtomDrawableRendered = 751,
28245    AtomWearModeStateChanged = 715,
28246    AtomMediaActionReported = 608,
28247    AtomMediaControlsLaunched = 609,
28248    AtomMediaSessionStateChanged = 677,
28249    AtomMediaControlApiUsageReported = 966,
28250    AtomMediaSubscriptionChanged = 990,
28251    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
28252    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
28253    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
28254    AtomMediatorUpdated = 721,
28255    AtomSysproxyBluetoothBytesTransfer = 10196,
28256    AtomSysproxyConnectionUpdated = 786,
28257    AtomWearCompanionConnectionState = 921,
28258    AtomSysproxyServiceStateUpdated = 949,
28259    AtomUwbActivityInfo = 10188,
28260    AtomTestUprobestatsAtomReported = 915,
28261    AtomTvLowPowerStandbyPolicy = 679,
28262    AtomExternalTvInputEvent = 717,
28263    AtomBootIntegrityInfoReported = 775,
28264    AtomThreadnetworkTelemetryDataReported = 738,
28265    AtomThreadnetworkTopoEntryRepeated = 739,
28266    AtomThreadnetworkDeviceInfoReported = 740,
28267    AtomCellularRadioPowerStateChanged = 713,
28268    AtomEmergencyNumbersInfo = 10180,
28269    AtomDataNetworkValidation = 10207,
28270    AtomDataRatStateChanged = 854,
28271    AtomConnectedChannelChanged = 882,
28272    AtomCellularIdentifierDisclosed = 800,
28273    AtomSatelliteController = 10182,
28274    AtomSatelliteSession = 10183,
28275    AtomSatelliteIncomingDatagram = 10184,
28276    AtomSatelliteOutgoingDatagram = 10185,
28277    AtomSatelliteProvision = 10186,
28278    AtomSatelliteSosMessageRecommender = 10187,
28279    AtomCarrierRoamingSatelliteSession = 10211,
28280    AtomCarrierRoamingSatelliteControllerStats = 10212,
28281    AtomControllerStatsPerPackage = 10213,
28282    AtomSatelliteEntitlement = 10214,
28283    AtomSatelliteConfigUpdater = 10215,
28284    AtomSatelliteAccessController = 10219,
28285    AtomQualifiedRatListChanged = 634,
28286    AtomQnsImsCallDropStats = 635,
28287    AtomQnsFallbackRestrictionChanged = 636,
28288    AtomQnsRatPreferenceMismatchInfo = 10177,
28289    AtomQnsHandoverTimeMillis = 10178,
28290    AtomQnsHandoverPingpong = 10179,
28291    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
28292    AtomEmergencyNumberDialed = 637,
28293    AtomCallStats = 10221,
28294    AtomCallAudioRouteStats = 10222,
28295    AtomTelecomApiStats = 10223,
28296    AtomTelecomErrorStats = 10224,
28297    AtomLockscreenShortcutSelected = 611,
28298    AtomLockscreenShortcutTriggered = 612,
28299    AtomLauncherImpressionEventV2 = 716,
28300    AtomDisplaySwitchLatencyTracked = 753,
28301    AtomNotificationListenerService = 829,
28302    AtomNavHandleTouchPoints = 869,
28303    AtomCommunalHubWidgetEventReported = 908,
28304    AtomPeripheralTutorialLaunched = 942,
28305    AtomContextualEducationTriggered = 971,
28306    AtomCommunalHubSnapshot = 10226,
28307    AtomTestExtensionAtomReported = 660,
28308    AtomTestRestrictedAtomReported = 672,
28309    AtomStatsSocketLossReported = 752,
28310    AtomSettingsSpaReported = 622,
28311    AtomSelinuxAuditLog = 799,
28312    AtomSandboxApiCalled = 488,
28313    AtomSandboxActivityEventOccurred = 735,
28314    AtomSdkSandboxRestrictedAccessInSession = 796,
28315    AtomSandboxSdkStorage = 10159,
28316    AtomRkpdPoolStats = 664,
28317    AtomRkpdClientOperation = 665,
28318    AtomRangingSessionConfigured = 993,
28319    AtomRangingSessionStarted = 994,
28320    AtomRangingSessionClosed = 995,
28321    AtomRangingTechnologyStarted = 996,
28322    AtomRangingTechnologyStopped = 997,
28323    AtomMediaProviderDatabaseRollbackReported = 784,
28324    AtomBackupSetupStatusReported = 785,
28325    AtomScreenOffReported = 776,
28326    AtomScreenTimeoutOverrideReported = 836,
28327    AtomScreenInteractiveSessionReported = 837,
28328    AtomScreenDimReported = 867,
28329    AtomAtom9999 = 9999,
28330    AtomAtom99999 = 99999,
28331    AtomPhotopickerSessionInfoReported = 886,
28332    AtomPhotopickerApiInfoReported = 887,
28333    AtomPhotopickerUiEventLogged = 888,
28334    AtomPhotopickerMediaItemStatusReported = 889,
28335    AtomPhotopickerPreviewInfoLogged = 890,
28336    AtomPhotopickerMenuInteractionLogged = 891,
28337    AtomPhotopickerBannerInteractionLogged = 892,
28338    AtomPhotopickerMediaLibraryInfoLogged = 893,
28339    AtomPhotopickerPageInfoLogged = 894,
28340    AtomPhotopickerMediaGridSyncInfoReported = 895,
28341    AtomPhotopickerAlbumSyncInfoReported = 896,
28342    AtomPhotopickerSearchInfoReported = 897,
28343    AtomSearchDataExtractionDetailsReported = 898,
28344    AtomEmbeddedPhotopickerInfoReported = 899,
28345    AtomPermissionRationaleDialogViewed = 645,
28346    AtomPermissionRationaleDialogActionReported = 646,
28347    AtomAppDataSharingUpdatesNotificationInteraction = 647,
28348    AtomAppDataSharingUpdatesFragmentViewed = 648,
28349    AtomAppDataSharingUpdatesFragmentActionReported = 649,
28350    AtomEnhancedConfirmationDialogResultReported = 827,
28351    AtomEnhancedConfirmationRestrictionCleared = 828,
28352    AtomPressureStallInformation = 10229,
28353    AtomPdfLoadReported = 859,
28354    AtomPdfApiUsageReported = 860,
28355    AtomPdfSearchReported = 861,
28356    AtomComponentStateChangedReported = 863,
28357    AtomOndevicepersonalizationApiCalled = 711,
28358    AtomOndevicepersonalizationTraceEvent = 952,
28359    AtomNfcObserveModeStateChanged = 855,
28360    AtomNfcFieldChanged = 856,
28361    AtomNfcPollingLoopNotificationReported = 857,
28362    AtomNfcProprietaryCapabilitiesReported = 858,
28363    AtomNfcExitFrameTableChanged = 1036,
28364    AtomNfcAutoTransactReported = 1038,
28365    AtomMicroxrDeviceBootCompleteReported = 901,
28366    AtomMteState = 10181,
28367    AtomZramMaintenanceExecuted = 1015,
28368    AtomZramSetupExecuted = 1029,
28369    AtomZramMmStatMmd = 10232,
28370    AtomZramBdStatMmd = 10233,
28371    AtomMediaEditingEndedReported = 798,
28372    AtomMediaCodecReclaimRequestCompleted = 600,
28373    AtomMediaCodecStarted = 641,
28374    AtomMediaCodecStopped = 642,
28375    AtomMediaCodecRendered = 684,
28376    AtomEmergencyStateChanged = 633,
28377    AtomChreSignificantMotionStateChanged = 868,
28378    AtomPopulationDensityProviderLoadingReported = 1002,
28379    AtomDensityBasedCoarseLocationsUsageReported = 1003,
28380    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
28381    AtomKernelOomKillOccurred = 754,
28382    AtomKeyboardConfigured = 682,
28383    AtomKeyboardSystemsEventReported = 683,
28384    AtomInputdeviceUsageReported = 686,
28385    AtomInputEventLatencyReported = 932,
28386    AtomTouchpadUsage = 10191,
28387    AtomIkeSessionTerminated = 678,
28388    AtomIkeLivenessCheckSessionValidated = 760,
28389    AtomNegotiatedSecurityAssociation = 821,
28390    AtomHotwordEgressSizeAtomReported = 761,
28391    AtomHealthConnectUiImpression = 623,
28392    AtomHealthConnectUiInteraction = 624,
28393    AtomHealthConnectAppOpenedReported = 625,
28394    AtomHealthConnectApiCalled = 616,
28395    AtomHealthConnectUsageStats = 617,
28396    AtomHealthConnectStorageStats = 618,
28397    AtomHealthConnectApiInvoked = 643,
28398    AtomExerciseRouteApiCalled = 654,
28399    AtomHealthConnectExportInvoked = 907,
28400    AtomHealthConnectImportInvoked = 918,
28401    AtomHealthConnectExportImportStatsReported = 919,
28402    AtomHealthConnectPermissionStats = 963,
28403    AtomHealthConnectPhrApiInvoked = 980,
28404    AtomHealthConnectPhrUsageStats = 981,
28405    AtomHealthConnectPhrStorageStats = 984,
28406    AtomHealthConnectRestrictedEcosystemStats = 985,
28407    AtomHealthConnectEcosystemStats = 986,
28408    AtomHdmiEarcStatusReported = 701,
28409    AtomHdmiSoundbarModeStatusReported = 724,
28410    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
28411    AtomBatteryHealth = 10220,
28412    AtomBiometricUnenrolled = 944,
28413    AtomBiometricEnumerated = 945,
28414    AtomApplicationGrammaticalInflectionChanged = 584,
28415    AtomSystemGrammaticalInflectionChanged = 816,
28416    AtomFullScreenIntentLaunched = 631,
28417    AtomBalAllowed = 632,
28418    AtomInTaskActivityStarted = 685,
28419    AtomDeviceOrientationChanged = 906,
28420    AtomCachedAppsHighWatermark = 10189,
28421    AtomStylusPredictionMetricsReported = 718,
28422    AtomUserRiskEventReported = 725,
28423    AtomMediaProjectionStateChanged = 729,
28424    AtomMediaProjectionTargetChanged = 730,
28425    AtomExcessiveBinderProxyCountReported = 853,
28426    AtomProxyBytesTransferByFgBg = 10200,
28427    AtomMobileBytesTransferByProcState = 10204,
28428    AtomBiometricFrrNotification = 817,
28429    AtomSensitiveContentMediaProjectionSession = 830,
28430    AtomSensitiveNotificationAppProtectionSession = 831,
28431    AtomSensitiveNotificationAppProtectionApplied = 832,
28432    AtomSensitiveNotificationRedaction = 833,
28433    AtomSensitiveContentAppProtection = 835,
28434    AtomAppRestrictionStateChanged = 866,
28435    AtomBatteryUsageStatsPerUid = 10209,
28436    AtomPostgcMemorySnapshot = 924,
28437    AtomPowerSaveTempAllowlistChanged = 926,
28438    AtomAppOpAccessTracked = 931,
28439    AtomContentOrFileUriEventReported = 933,
28440    AtomDeviceIdleTempAllowlistUpdated = 940,
28441    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
28442    AtomFrameworkWakelockInfo = 10230,
28443    AtomJankFrameCountByWidgetReported = 950,
28444    AtomIntentCreatorTokenAdded = 978,
28445    AtomNotificationChannelClassification = 983,
28446    AtomCameraStatusForCompatibilityChanged = 999,
28447    AtomFederatedComputeApiCalled = 712,
28448    AtomFederatedComputeTrainingEventReported = 771,
28449    AtomExampleIteratorNextLatencyReported = 838,
28450    AtomFederatedComputeTraceEventReported = 992,
28451    AtomExpressEventReported = 528,
28452    AtomExpressHistogramSampleReported = 593,
28453    AtomExpressUidEventReported = 644,
28454    AtomExpressUidHistogramSampleReported = 658,
28455    AtomDreamSettingChanged = 705,
28456    AtomDreamSettingSnapshot = 10192,
28457    AtomDndStateChanged = 657,
28458    AtomExternalDisplayStateChanged = 806,
28459    AtomDisplayModeDirectorVoteChanged = 792,
28460    AtomDevicePolicyManagementMode = 10216,
28461    AtomDevicePolicyState = 10217,
28462    AtomDeviceLockCheckInRequestReported = 726,
28463    AtomDeviceLockProvisioningCompleteReported = 727,
28464    AtomDeviceLockKioskAppRequestReported = 728,
28465    AtomDeviceLockCheckInRetryReported = 789,
28466    AtomDeviceLockProvisionFailureReported = 790,
28467    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
28468    AtomDesktopModeUiChanged = 818,
28469    AtomDesktopModeSessionTaskUpdate = 819,
28470    AtomDesktopModeTaskSizeUpdated = 935,
28471    AtomCronetEngineCreated = 703,
28472    AtomCronetTrafficReported = 704,
28473    AtomCronetEngineBuilderInitialized = 762,
28474    AtomCronetHttpFlagsInitialized = 763,
28475    AtomCronetInitialized = 764,
28476    AtomCredentialManagerApiCalled = 585,
28477    AtomCredentialManagerInitPhaseReported = 651,
28478    AtomCredentialManagerCandidatePhaseReported = 652,
28479    AtomCredentialManagerFinalPhaseReported = 653,
28480    AtomCredentialManagerTotalReported = 667,
28481    AtomCredentialManagerFinalnouidReported = 668,
28482    AtomCredentialManagerGetReported = 669,
28483    AtomCredentialManagerAuthClickReported = 670,
28484    AtomCredentialManagerApiv2Called = 671,
28485    AtomCpuPolicy = 10199,
28486    AtomVpnConnectionStateChanged = 850,
28487    AtomVpnConnectionReported = 851,
28488    AtomIpClientRaInfoReported = 778,
28489    AtomApfSessionInfoReported = 777,
28490    AtomCoreNetworkingTerribleErrorOccurred = 979,
28491    AtomNetworkStatsRecorderFileOperated = 783,
28492    AtomDailyKeepaliveInfoReported = 650,
28493    AtomNetworkRequestStateChanged = 779,
28494    AtomTetheringActiveSessionsReported = 925,
28495    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
28496    AtomHardwareRendererEvent = 946,
28497    AtomTextureViewEvent = 947,
28498    AtomSurfaceControlEvent = 948,
28499    AtomImageDecoded = 977,
28500    AtomCertificateTransparencyLogListStateChanged = 934,
28501    AtomConscryptServiceUsed = 965,
28502    AtomCertificateTransparencyVerificationReported = 989,
28503    AtomCameraFeatureCombinationQueryEvent = 900,
28504    AtomBroadcastSent = 922,
28505    AtomBluetoothHashedDeviceNameReported = 613,
28506    AtomBluetoothL2capCocClientConnection = 614,
28507    AtomBluetoothL2capCocServerConnection = 615,
28508    AtomBluetoothLeSessionConnected = 656,
28509    AtomRestrictedBluetoothDeviceNameReported = 666,
28510    AtomBluetoothProfileConnectionAttempted = 696,
28511    AtomBluetoothContentProfileErrorReported = 781,
28512    AtomBluetoothRfcommConnectionAttempted = 782,
28513    AtomRemoteDeviceInformationWithMetricId = 862,
28514    AtomLeAppScanStateChanged = 870,
28515    AtomLeRadioScanStopped = 871,
28516    AtomLeScanResultReceived = 872,
28517    AtomLeScanAbused = 873,
28518    AtomLeAdvStateChanged = 874,
28519    AtomLeAdvErrorReported = 875,
28520    AtomA2dpSessionReported = 904,
28521    AtomBluetoothCrossLayerEventReported = 916,
28522    AtomBroadcastAudioSessionReported = 927,
28523    AtomBroadcastAudioSyncReported = 928,
28524    AtomBluetoothRfcommConnectionReportedAtClose = 982,
28525    AtomBluetoothLeConnection = 988,
28526    AtomHearingDeviceActiveEventReported = 1021,
28527    AtomBackportedFixStatusReported = 987,
28528    AtomPluginInitialized = 655,
28529    AtomCarSystemUiDataSubscriptionEventReported = 974,
28530    AtomCarSettingsDataSubscriptionEventReported = 975,
28531    AtomCarQcLibEventReported = 976,
28532    AtomCarWakeupFromSuspendReported = 852,
28533    AtomCarRecentsEventReported = 770,
28534    AtomCarCalmModeEventReported = 797,
28535    AtomAutofillUiEventReported = 603,
28536    AtomAutofillFillRequestReported = 604,
28537    AtomAutofillFillResponseReported = 605,
28538    AtomAutofillSaveEventReported = 606,
28539    AtomAutofillSessionCommitted = 607,
28540    AtomAutofillFieldClassificationEventReported = 659,
28541    AtomOdrefreshReported = 366,
28542    AtomOdsignReported = 548,
28543    AtomBackgroundDexoptJobEnded = 467,
28544    AtomPrerebootDexoptJobEnded = 883,
28545    AtomArtDatumReported = 332,
28546    AtomArtDeviceDatumReported = 550,
28547    AtomArtDatumDeltaReported = 565,
28548    AtomArtDex2oatReported = 929,
28549    AtomArtDeviceStatus = 10205,
28550    AtomAppSearchSetSchemaStatsReported = 385,
28551    AtomAppSearchSchemaMigrationStatsReported = 579,
28552    AtomAppSearchUsageSearchIntentStatsReported = 825,
28553    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
28554    AtomAppSearchAppsIndexerStatsReported = 909,
28555    AtomAppFunctionsRequestReported = 998,
28556    AtomApexInstallationRequested = 732,
28557    AtomApexInstallationStaged = 733,
28558    AtomApexInstallationEnded = 734,
28559    AtomAiWallpapersButtonPressed = 706,
28560    AtomAiWallpapersTemplateSelected = 707,
28561    AtomAiWallpapersTermSelected = 708,
28562    AtomAiWallpapersWallpaperSet = 709,
28563    AtomAiWallpapersSessionSummary = 710,
28564    AtomJsscriptengineLatencyReported = 483,
28565    AtomAdServicesApiCalled = 435,
28566    AtomAdServicesMesurementReportsUploaded = 436,
28567    AtomMobileDataDownloadFileGroupStatusReported = 490,
28568    AtomMobileDataDownloadDownloadResultReported = 502,
28569    AtomAdServicesSettingsUsageReported = 493,
28570    AtomBackgroundFetchProcessReported = 496,
28571    AtomUpdateCustomAudienceProcessReported = 497,
28572    AtomRunAdBiddingProcessReported = 498,
28573    AtomRunAdScoringProcessReported = 499,
28574    AtomRunAdSelectionProcessReported = 500,
28575    AtomRunAdBiddingPerCaProcessReported = 501,
28576    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
28577    AtomAdServicesMeasurementRegistrations = 512,
28578    AtomAdServicesGetTopicsReported = 535,
28579    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
28580    AtomAdServicesEpochComputationClassifierReported = 537,
28581    AtomAdServicesBackCompatGetTopicsReported = 598,
28582    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
28583    AtomAdServicesMeasurementDebugKeys = 640,
28584    AtomAdServicesErrorReported = 662,
28585    AtomAdServicesBackgroundJobsExecutionReported = 663,
28586    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
28587    AtomAdServicesMeasurementAttribution = 674,
28588    AtomAdServicesMeasurementJobs = 675,
28589    AtomAdServicesMeasurementWipeout = 676,
28590    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
28591    AtomAdServicesEnrollmentDataStored = 697,
28592    AtomAdServicesEnrollmentFileDownloaded = 698,
28593    AtomAdServicesEnrollmentMatched = 699,
28594    AtomAdServicesConsentMigrated = 702,
28595    AtomAdServicesEnrollmentFailed = 714,
28596    AtomAdServicesMeasurementClickVerification = 756,
28597    AtomAdServicesEncryptionKeyFetched = 765,
28598    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
28599    AtomDestinationRegisteredBeacons = 767,
28600    AtomReportInteractionApiCalled = 768,
28601    AtomInteractionReportingTableCleared = 769,
28602    AtomAppManifestConfigHelperCalled = 788,
28603    AtomAdFilteringProcessJoinCaReported = 793,
28604    AtomAdFilteringProcessAdSelectionReported = 794,
28605    AtomAdCounterHistogramUpdaterReported = 795,
28606    AtomSignatureVerification = 807,
28607    AtomKAnonImmediateSignJoinStatusReported = 808,
28608    AtomKAnonBackgroundJobStatusReported = 809,
28609    AtomKAnonInitializeStatusReported = 810,
28610    AtomKAnonSignStatusReported = 811,
28611    AtomKAnonJoinStatusReported = 812,
28612    AtomKAnonKeyAttestationStatusReported = 813,
28613    AtomGetAdSelectionDataApiCalled = 814,
28614    AtomGetAdSelectionDataBuyerInputGenerated = 815,
28615    AtomBackgroundJobSchedulingReported = 834,
28616    AtomTopicsEncryptionEpochComputationReported = 840,
28617    AtomTopicsEncryptionGetTopicsReported = 841,
28618    AtomAdservicesShellCommandCalled = 842,
28619    AtomUpdateSignalsApiCalled = 843,
28620    AtomEncodingJobRun = 844,
28621    AtomEncodingJsFetch = 845,
28622    AtomEncodingJsExecution = 846,
28623    AtomPersistAdSelectionResultCalled = 847,
28624    AtomServerAuctionKeyFetchCalled = 848,
28625    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
28626    AtomAdServicesMeasurementProcessOdpRegistration = 864,
28627    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
28628    AtomSelectAdsFromOutcomesApiCalled = 876,
28629    AtomReportImpressionApiCalled = 877,
28630    AtomAdServicesEnrollmentTransactionStats = 885,
28631    AtomAdServicesCobaltLoggerEventReported = 902,
28632    AtomAdServicesCobaltPeriodicJobEventReported = 903,
28633    AtomUpdateSignalsProcessReported = 905,
28634    AtomTopicsScheduleEpochJobSettingReported = 930,
28635    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
28636    AtomScheduledCustomAudienceUpdatePerformed = 968,
28637    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
28638    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
28639    AtomThermalStatusCalled = 772,
28640    AtomThermalHeadroomCalled = 773,
28641    AtomThermalHeadroomThresholdsCalled = 774,
28642    AtomAdpfHintSessionTidCleanup = 839,
28643    AtomThermalHeadroomThresholds = 10201,
28644    AtomAdpfSessionSnapshot = 10218,
28645    AtomAdaptiveAuthUnlockAfterLockReported = 820,
28646    AtomAccountManagerEvent = 951,
28647    AtomAccessibilityCheckResultReported = 910,
28648}
28649impl AtomId {
28650    /// String value of the enum field names used in the ProtoBuf definition.
28651    ///
28652    /// The values are not transformed in any way and thus are considered stable
28653    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28654    pub fn as_str_name(&self) -> &'static str {
28655        match self {
28656            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
28657            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
28658            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
28659            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
28660            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
28661            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
28662            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
28663            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
28664            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
28665            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
28666            Self::AtomLongPartialWakelockStateChanged => {
28667                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
28668            }
28669            Self::AtomMobileRadioPowerStateChanged => {
28670                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
28671            }
28672            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
28673            Self::AtomActivityManagerSleepStateChanged => {
28674                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
28675            }
28676            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
28677            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
28678            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
28679            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
28680            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
28681            Self::AtomBatterySaverModeStateChanged => {
28682                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
28683            }
28684            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
28685            Self::AtomDeviceIdlingModeStateChanged => {
28686                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
28687            }
28688            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
28689            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
28690            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
28691            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
28692            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
28693            Self::AtomProcessLifeCycleStateChanged => {
28694                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
28695            }
28696            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
28697            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
28698            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
28699            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
28700            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
28701            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
28702            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
28703            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
28704            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
28705            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
28706            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
28707            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
28708            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
28709            Self::AtomActivityForegroundStateChanged => {
28710                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
28711            }
28712            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
28713            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
28714            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
28715            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
28716            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
28717            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
28718            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
28719            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
28720            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
28721            Self::AtomPictureInPictureStateChanged => {
28722                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
28723            }
28724            Self::AtomWifiMulticastLockStateChanged => {
28725                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
28726            }
28727            Self::AtomAppStartMemoryStateCaptured => {
28728                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
28729            }
28730            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
28731            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
28732            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
28733            Self::AtomForegroundServiceStateChanged => {
28734                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
28735            }
28736            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
28737            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
28738            Self::AtomKeyguardBouncerStateChanged => {
28739                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
28740            }
28741            Self::AtomKeyguardBouncerPasswordEntered => {
28742                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
28743            }
28744            Self::AtomAppDied => "ATOM_APP_DIED",
28745            Self::AtomResourceConfigurationChanged => {
28746                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
28747            }
28748            Self::AtomBluetoothEnabledStateChanged => {
28749                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
28750            }
28751            Self::AtomBluetoothConnectionStateChanged => {
28752                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
28753            }
28754            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
28755            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
28756            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
28757            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
28758            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
28759            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
28760            Self::AtomMobileConnectionStateChanged => {
28761                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
28762            }
28763            Self::AtomMobileRadioTechnologyChanged => {
28764                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
28765            }
28766            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
28767            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
28768            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
28769            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
28770            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
28771            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
28772            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
28773            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
28774            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
28775            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
28776            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
28777            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
28778            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
28779            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
28780            Self::AtomSlowIo => "ATOM_SLOW_IO",
28781            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
28782            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
28783            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
28784            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
28785            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
28786            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
28787            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
28788            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
28789            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
28790            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
28791            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
28792            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
28793            Self::AtomDocsUiFileOpCopyMoveModeReported => {
28794                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
28795            }
28796            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
28797            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
28798            Self::AtomDocsUiInvalidScopedAccessRequest => {
28799                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
28800            }
28801            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
28802            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
28803            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
28804            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
28805            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
28806            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
28807            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
28808            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
28809            Self::AtomDocsUiPickerLaunchedFromReported => {
28810                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
28811            }
28812            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
28813            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
28814            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
28815            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
28816            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
28817            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
28818            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
28819            Self::AtomBluetoothLinkLayerConnectionEvent => {
28820                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
28821            }
28822            Self::AtomBluetoothAclConnectionStateChanged => {
28823                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
28824            }
28825            Self::AtomBluetoothScoConnectionStateChanged => {
28826                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
28827            }
28828            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
28829            Self::AtomAppOptimizedAfterDowngraded => {
28830                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
28831            }
28832            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
28833            Self::AtomGnssNfwNotificationReported => {
28834                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
28835            }
28836            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
28837            Self::AtomUsbPortOverheatEventReported => {
28838                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
28839            }
28840            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
28841            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
28842            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
28843            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
28844            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
28845            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
28846            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
28847            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
28848            Self::AtomBroadcastDispatchLatencyReported => {
28849                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
28850            }
28851            Self::AtomAttentionManagerServiceResultReported => {
28852                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
28853            }
28854            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
28855            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
28856            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
28857            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
28858            Self::AtomBiometricSystemHealthIssueDetected => {
28859                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
28860            }
28861            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
28862            Self::AtomScheduledJobConstraintChanged => {
28863                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
28864            }
28865            Self::AtomBluetoothActiveDeviceChanged => {
28866                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
28867            }
28868            Self::AtomBluetoothA2dpPlaybackStateChanged => {
28869                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
28870            }
28871            Self::AtomBluetoothA2dpCodecConfigChanged => {
28872                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
28873            }
28874            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
28875                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
28876            }
28877            Self::AtomBluetoothA2dpAudioUnderrunReported => {
28878                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
28879            }
28880            Self::AtomBluetoothA2dpAudioOverrunReported => {
28881                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
28882            }
28883            Self::AtomBluetoothDeviceRssiReported => {
28884                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
28885            }
28886            Self::AtomBluetoothDeviceFailedContactCounterReported => {
28887                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
28888            }
28889            Self::AtomBluetoothDeviceTxPowerLevelReported => {
28890                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
28891            }
28892            Self::AtomBluetoothHciTimeoutReported => {
28893                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
28894            }
28895            Self::AtomBluetoothQualityReportReported => {
28896                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
28897            }
28898            Self::AtomBluetoothDeviceInfoReported => {
28899                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
28900            }
28901            Self::AtomBluetoothRemoteVersionInfoReported => {
28902                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
28903            }
28904            Self::AtomBluetoothSdpAttributeReported => {
28905                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
28906            }
28907            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
28908            Self::AtomBluetoothClassicPairingEventReported => {
28909                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
28910            }
28911            Self::AtomBluetoothSmpPairingEventReported => {
28912                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
28913            }
28914            Self::AtomScreenTimeoutExtensionReported => {
28915                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
28916            }
28917            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
28918            Self::AtomPermissionGrantRequestResultReported => {
28919                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
28920            }
28921            Self::AtomBluetoothSocketConnectionStateChanged => {
28922                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
28923            }
28924            Self::AtomDeviceIdentifierAccessDenied => {
28925                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
28926            }
28927            Self::AtomBubbleDeveloperErrorReported => {
28928                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
28929            }
28930            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
28931            Self::AtomAssistGestureFeedbackReported => {
28932                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
28933            }
28934            Self::AtomAssistGestureProgressReported => {
28935                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
28936            }
28937            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
28938            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
28939            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
28940            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
28941            Self::AtomAppInstallOnExternalStorageReported => {
28942                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
28943            }
28944            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
28945            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
28946            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
28947            Self::AtomSystemServerWatchdogOccurred => {
28948                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
28949            }
28950            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
28951            Self::AtomBluetoothClassOfDeviceReported => {
28952                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
28953            }
28954            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
28955            Self::AtomThermalThrottlingSeverityStateChanged => {
28956                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
28957            }
28958            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
28959            Self::AtomMediametricsAudiopolicyReported => {
28960                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
28961            }
28962            Self::AtomMediametricsAudiorecordReported => {
28963                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
28964            }
28965            Self::AtomMediametricsAudiothreadReported => {
28966                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
28967            }
28968            Self::AtomMediametricsAudiotrackReported => {
28969                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
28970            }
28971            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
28972            Self::AtomMediametricsDrmWidevineReported => {
28973                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
28974            }
28975            Self::AtomMediametricsExtractorReported => {
28976                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
28977            }
28978            Self::AtomMediametricsMediadrmReported => {
28979                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
28980            }
28981            Self::AtomMediametricsNuplayerReported => {
28982                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
28983            }
28984            Self::AtomMediametricsRecorderReported => {
28985                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
28986            }
28987            Self::AtomMediametricsDrmmanagerReported => {
28988                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
28989            }
28990            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
28991            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
28992            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
28993            Self::AtomContentCaptureCallerMismatchReported => {
28994                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
28995            }
28996            Self::AtomContentCaptureServiceEvents => {
28997                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
28998            }
28999            Self::AtomContentCaptureSessionEvents => {
29000                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
29001            }
29002            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
29003            Self::AtomLocationManagerApiUsageReported => {
29004                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
29005            }
29006            Self::AtomReviewPermissionsFragmentResultReported => {
29007                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
29008            }
29009            Self::AtomRuntimePermissionsUpgradeResult => {
29010                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
29011            }
29012            Self::AtomGrantPermissionsActivityButtonActions => {
29013                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
29014            }
29015            Self::AtomLocationAccessCheckNotificationAction => {
29016                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
29017            }
29018            Self::AtomAppPermissionFragmentActionReported => {
29019                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
29020            }
29021            Self::AtomAppPermissionFragmentViewed => {
29022                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
29023            }
29024            Self::AtomAppPermissionsFragmentViewed => {
29025                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
29026            }
29027            Self::AtomPermissionAppsFragmentViewed => {
29028                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
29029            }
29030            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
29031            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
29032            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
29033            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
29034            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
29035            Self::AtomBackGestureReportedReported => {
29036                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
29037            }
29038            Self::AtomUpdateEngineUpdateAttemptReported => {
29039                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
29040            }
29041            Self::AtomUpdateEngineSuccessfulUpdateReported => {
29042                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
29043            }
29044            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
29045            Self::AtomAppCompatibilityChangeReported => {
29046                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
29047            }
29048            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
29049            Self::AtomVmsClientConnectionStateChanged => {
29050                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
29051            }
29052            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
29053            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
29054            Self::AtomMediaProviderPermissionRequested => {
29055                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
29056            }
29057            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
29058            Self::AtomMediaProviderIdleMaintenanceFinished => {
29059                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
29060            }
29061            Self::AtomRebootEscrowRecoveryReported => {
29062                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
29063            }
29064            Self::AtomBootTimeEventDurationReported => {
29065                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
29066            }
29067            Self::AtomBootTimeEventElapsedTimeReported => {
29068                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
29069            }
29070            Self::AtomBootTimeEventUtcTimeReported => {
29071                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
29072            }
29073            Self::AtomBootTimeEventErrorCodeReported => {
29074                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
29075            }
29076            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
29077            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
29078            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
29079            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
29080            Self::AtomIntegrityCheckResultReported => {
29081                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
29082            }
29083            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
29084            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
29085            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
29086            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
29087            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
29088            Self::AtomWifiConnectionResultReported => {
29089                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
29090            }
29091            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
29092            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
29093            Self::AtomForegroundServiceAppOpSessionEnded => {
29094                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
29095            }
29096            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
29097            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
29098            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
29099            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
29100            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
29101            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
29102            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
29103            Self::AtomUserLifecycleJourneyReported => {
29104                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
29105            }
29106            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
29107            Self::AtomAccessibilityShortcutReported => {
29108                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
29109            }
29110            Self::AtomAccessibilityServiceReported => {
29111                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
29112            }
29113            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
29114            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
29115            Self::AtomAutoRevokeNotificationClicked => {
29116                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
29117            }
29118            Self::AtomAutoRevokeFragmentAppViewed => {
29119                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
29120            }
29121            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
29122            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
29123                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
29124            }
29125            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
29126            Self::AtomAudioPowerUsageDataReported => {
29127                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
29128            }
29129            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
29130            Self::AtomMediaoutputOpSwitchReported => {
29131                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
29132            }
29133            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
29134            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
29135            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
29136            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
29137            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
29138            Self::AtomCarUserHalModifyUserRequestReported => {
29139                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
29140            }
29141            Self::AtomCarUserHalModifyUserResponseReported => {
29142                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
29143            }
29144            Self::AtomCarUserHalPostSwitchResponseReported => {
29145                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
29146            }
29147            Self::AtomCarUserHalInitialUserInfoRequestReported => {
29148                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
29149            }
29150            Self::AtomCarUserHalInitialUserInfoResponseReported => {
29151                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
29152            }
29153            Self::AtomCarUserHalUserAssociationRequestReported => {
29154                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
29155            }
29156            Self::AtomCarUserHalSetUserAssociationResponseReported => {
29157                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
29158            }
29159            Self::AtomNetworkIpProvisioningReported => {
29160                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
29161            }
29162            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
29163            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
29164            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
29165            Self::AtomMediametricsAudiorecorddeviceusageReported => {
29166                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
29167            }
29168            Self::AtomMediametricsAudiothreaddeviceusageReported => {
29169                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
29170            }
29171            Self::AtomMediametricsAudiotrackdeviceusageReported => {
29172                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
29173            }
29174            Self::AtomMediametricsAudiodeviceconnectionReported => {
29175                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
29176            }
29177            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
29178            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
29179            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
29180            Self::AtomContactsProviderStatusReported => {
29181                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
29182            }
29183            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
29184            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
29185            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
29186            Self::AtomUiInteractionFrameInfoReported => {
29187                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
29188            }
29189            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
29190            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
29191            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
29192            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
29193            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
29194            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
29195            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
29196            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
29197            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
29198            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
29199            Self::AtomMediametricsMediaparserReported => {
29200                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
29201            }
29202            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
29203            Self::AtomTextClassifierApiUsageReported => {
29204                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
29205            }
29206            Self::AtomCarWatchdogKillStatsReported => {
29207                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
29208            }
29209            Self::AtomMediametricsPlaybackReported => {
29210                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
29211            }
29212            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
29213            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
29214            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
29215            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
29216            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
29217            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
29218            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
29219            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
29220            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
29221            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
29222            Self::AtomImsServiceEntitlementUpdated => {
29223                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
29224            }
29225            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
29226            Self::AtomSimSpecificSettingsRestored => {
29227                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
29228            }
29229            Self::AtomTextClassifierDownloadReported => {
29230                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
29231            }
29232            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
29233            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
29234            Self::AtomBluetoothHalCrashReasonReported => {
29235                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
29236            }
29237            Self::AtomRebootEscrowPreparationReported => {
29238                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
29239            }
29240            Self::AtomRebootEscrowLskfCaptureReported => {
29241                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
29242            }
29243            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
29244            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
29245            Self::AtomMediametricsAaudiostreamReported => {
29246                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
29247            }
29248            Self::AtomMediaTranscodingSessionEnded => {
29249                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
29250            }
29251            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
29252            Self::AtomMagnificationModeWithImeOnReported => {
29253                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
29254            }
29255            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
29256            Self::AtomAppSearchPutDocumentStatsReported => {
29257                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
29258            }
29259            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
29260            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
29261            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
29262            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
29263            Self::AtomAuthPromptAuthenticateInvoked => {
29264                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
29265            }
29266            Self::AtomAuthManagerCanAuthenticateInvoked => {
29267                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
29268            }
29269            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
29270            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
29271            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
29272            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
29273            Self::AtomLocationTimeZoneProviderStateChanged => {
29274                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
29275            }
29276            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
29277            Self::AtomTimeoutAutoExtendedReported => {
29278                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
29279            }
29280            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
29281            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
29282            Self::AtomCarWatchdogIoOveruseStatsReported => {
29283                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
29284            }
29285            Self::AtomUserLevelHibernationStateChanged => {
29286                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
29287            }
29288            Self::AtomAppSearchInitializeStatsReported => {
29289                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
29290            }
29291            Self::AtomAppSearchQueryStatsReported => {
29292                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
29293            }
29294            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
29295            Self::AtomNetworkIpReachabilityMonitorReported => {
29296                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
29297            }
29298            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
29299            Self::AtomAnrOccurredProcessingStarted => {
29300                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
29301            }
29302            Self::AtomAppSearchRemoveStatsReported => {
29303                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
29304            }
29305            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
29306            Self::AtomPermissionUsageFragmentInteraction => {
29307                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
29308            }
29309            Self::AtomPermissionDetailsInteraction => {
29310                "ATOM_PERMISSION_DETAILS_INTERACTION"
29311            }
29312            Self::AtomPrivacySensorToggleInteraction => {
29313                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
29314            }
29315            Self::AtomPrivacyToggleDialogInteraction => {
29316                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
29317            }
29318            Self::AtomAppSearchOptimizeStatsReported => {
29319                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
29320            }
29321            Self::AtomNonA11yToolServiceWarningReport => {
29322                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
29323            }
29324            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
29325            Self::AtomSizeCompatRestartButtonEventReported => {
29326                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
29327            }
29328            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
29329            Self::AtomNetworkDnsHandshakeReported => {
29330                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
29331            }
29332            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
29333            Self::AtomBluetoothLeBatchScanReportDelay => {
29334                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
29335            }
29336            Self::AtomAccessibilityFloatingMenuUiChanged => {
29337                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
29338            }
29339            Self::AtomNeuralnetworksCompilationCompleted => {
29340                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
29341            }
29342            Self::AtomNeuralnetworksExecutionCompleted => {
29343                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
29344            }
29345            Self::AtomNeuralnetworksCompilationFailed => {
29346                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
29347            }
29348            Self::AtomNeuralnetworksExecutionFailed => {
29349                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
29350            }
29351            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
29352            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
29353            Self::AtomContextHubLoadedNanoappSnapshotReported => {
29354                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
29355            }
29356            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
29357            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
29358            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
29359            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
29360            Self::AtomUwbRangingMeasurementReceived => {
29361                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
29362            }
29363            Self::AtomTextClassifierDownloadWorkScheduled => {
29364                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
29365            }
29366            Self::AtomTextClassifierDownloadWorkCompleted => {
29367                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
29368            }
29369            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
29370            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
29371            Self::AtomNearbyDeviceScanStateChanged => {
29372                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
29373            }
29374            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
29375            Self::AtomMediametricsAudiotrackstatusReported => {
29376                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
29377            }
29378            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
29379            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
29380                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
29381            }
29382            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
29383            Self::AtomDisplayHbmBrightnessChanged => {
29384                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
29385            }
29386            Self::AtomPersistentUriPermissionsFlushed => {
29387                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
29388            }
29389            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
29390                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
29391            }
29392            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
29393            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
29394            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
29395            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
29396            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
29397            Self::AtomMediametricsAudiorecordstatusReported => {
29398                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
29399            }
29400            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
29401            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
29402            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
29403            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
29404            Self::AtomHotwordDetectorCreateRequested => {
29405                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
29406            }
29407            Self::AtomHotwordDetectionServiceInitResultReported => {
29408                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
29409            }
29410            Self::AtomHotwordDetectionServiceRestarted => {
29411                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
29412            }
29413            Self::AtomHotwordDetectorKeyphraseTriggered => {
29414                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
29415            }
29416            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
29417            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
29418                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
29419            }
29420            Self::AtomContactsIndexerUpdateStatsReported => {
29421                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
29422            }
29423            Self::AtomAppBackgroundRestrictionsInfo => {
29424                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
29425            }
29426            Self::AtomMmsSmsProviderGetThreadIdFailed => {
29427                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
29428            }
29429            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
29430                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
29431            }
29432            Self::AtomPermissionReminderNotificationInteracted => {
29433                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
29434            }
29435            Self::AtomRecentPermissionDecisionsInteracted => {
29436                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
29437            }
29438            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
29439            Self::AtomLeAudioConnectionSessionReported => {
29440                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
29441            }
29442            Self::AtomLeAudioBroadcastSessionReported => {
29443                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
29444            }
29445            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
29446            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
29447            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
29448            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
29449                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
29450            }
29451            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
29452                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
29453            }
29454            Self::AtomAccessibilityTextReadingOptionsChanged => {
29455                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
29456            }
29457            Self::AtomWifiSetupFailureCrashReported => {
29458                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
29459            }
29460            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
29461            Self::AtomIsolatedCompilationScheduled => {
29462                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
29463            }
29464            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
29465            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
29466                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
29467            }
29468            Self::AtomSystemServerPreWatchdogOccurred => {
29469                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
29470            }
29471            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
29472            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
29473            Self::AtomRemoteKeyProvisioningAttempt => {
29474                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
29475            }
29476            Self::AtomRemoteKeyProvisioningNetworkInfo => {
29477                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
29478            }
29479            Self::AtomRemoteKeyProvisioningTiming => {
29480                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
29481            }
29482            Self::AtomMediaoutputOpInteractionReport => {
29483                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
29484            }
29485            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
29486            Self::AtomAutofillPresentationEventReported => {
29487                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
29488            }
29489            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
29490            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
29491            Self::AtomSafetyCenterSystemEventReported => {
29492                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
29493            }
29494            Self::AtomSafetyCenterInteractionReported => {
29495                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
29496            }
29497            Self::AtomSettingsProviderSettingChanged => {
29498                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
29499            }
29500            Self::AtomBroadcastDeliveryEventReported => {
29501                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
29502            }
29503            Self::AtomServiceRequestEventReported => {
29504                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
29505            }
29506            Self::AtomProviderAcquisitionEventReported => {
29507                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
29508            }
29509            Self::AtomBluetoothDeviceNameReported => {
29510                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
29511            }
29512            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
29513            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
29514            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
29515            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
29516            Self::AtomPrivacySignalNotificationInteraction => {
29517                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
29518            }
29519            Self::AtomPrivacySignalIssueCardInteraction => {
29520                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
29521            }
29522            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
29523            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
29524            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
29525            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
29526            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
29527            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
29528            Self::AtomNetworkDnsServerSupportReported => {
29529                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
29530            }
29531            Self::AtomVmBooted => "ATOM_VM_BOOTED",
29532            Self::AtomVmExited => "ATOM_VM_EXITED",
29533            Self::AtomAmbientBrightnessStatsReported => {
29534                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
29535            }
29536            Self::AtomMediametricsSpatializercapabilitiesReported => {
29537                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
29538            }
29539            Self::AtomMediametricsSpatializerdeviceenabledReported => {
29540                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
29541            }
29542            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
29543                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
29544            }
29545            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
29546                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
29547            }
29548            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
29549            Self::AtomDeviceWideJobConstraintChanged => {
29550                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
29551            }
29552            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
29553            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
29554            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
29555            Self::AtomSystemDefaultNetworkChanged => {
29556                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
29557            }
29558            Self::AtomIwlanSetupDataCallResultReported => {
29559                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
29560            }
29561            Self::AtomIwlanPdnDisconnectedReasonReported => {
29562                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
29563            }
29564            Self::AtomAirplaneModeSessionReported => {
29565                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
29566            }
29567            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
29568            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
29569            Self::AtomPackageInstallationSessionReported => {
29570                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
29571            }
29572            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
29573            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
29574            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
29575            Self::AtomBluetoothDisconnectionReasonReported => {
29576                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
29577            }
29578            Self::AtomBluetoothLocalVersionsReported => {
29579                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
29580            }
29581            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
29582                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
29583            }
29584            Self::AtomBluetoothLocalSupportedFeaturesReported => {
29585                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
29586            }
29587            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
29588            Self::AtomBrightnessConfigurationUpdated => {
29589                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
29590            }
29591            Self::AtomWearMediaOutputSwitcherLaunched => {
29592                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
29593            }
29594            Self::AtomWearMediaOutputSwitcherFinished => {
29595                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
29596            }
29597            Self::AtomWearMediaOutputSwitcherConnectionReported => {
29598                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
29599            }
29600            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
29601                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
29602            }
29603            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
29604                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
29605            }
29606            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
29607                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
29608            }
29609            Self::AtomPackageManagerSnapshotReported => {
29610                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
29611            }
29612            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
29613                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
29614            }
29615            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
29616                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
29617            }
29618            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
29619            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
29620                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
29621            }
29622            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
29623            Self::AtomWsWatchFaceFavoriteActionReported => {
29624                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
29625            }
29626            Self::AtomWsWatchFaceSetActionReported => {
29627                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
29628            }
29629            Self::AtomPackageUninstallationReported => {
29630                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
29631            }
29632            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
29633            Self::AtomGameModeConfigurationChanged => {
29634                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
29635            }
29636            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
29637            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
29638            Self::AtomNetworkSliceDailyDataUsageReported => {
29639                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
29640            }
29641            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
29642            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
29643            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
29644            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
29645            Self::AtomGetTypeAccessedWithoutPermission => {
29646                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
29647            }
29648            Self::AtomMobileBundledAppInfoGathered => {
29649                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
29650            }
29651            Self::AtomWsWatchFaceComplicationSetChanged => {
29652                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
29653            }
29654            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
29655            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
29656            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
29657            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
29658            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
29659            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
29660            Self::AtomPerformanceHintSessionReported => {
29661                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
29662            }
29663            Self::AtomMediametricsMidiDeviceCloseReported => {
29664                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
29665            }
29666            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
29667            Self::AtomHotwordAudioEgressEventReported => {
29668                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
29669            }
29670            Self::AtomLocationEnabledStateChanged => {
29671                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
29672            }
29673            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
29674            Self::AtomUsbComplianceWarningsReported => {
29675                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
29676            }
29677            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
29678            Self::AtomMediaProviderVolumeRecoveryReported => {
29679                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
29680            }
29681            Self::AtomBiometricPropertiesCollected => {
29682                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
29683            }
29684            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
29685            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
29686            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
29687            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
29688            Self::AtomDeviceLogAccessEventReported => {
29689                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
29690            }
29691            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
29692            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
29693            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
29694            Self::AtomNetworkValidationFailureStatsDailyReported => {
29695                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
29696            }
29697            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
29698            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
29699            Self::AtomWsNotificationBridgemodeUpdated => {
29700                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
29701            }
29702            Self::AtomWsNotificationDismissalActioned => {
29703                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
29704            }
29705            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
29706            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
29707            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
29708            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
29709            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
29710            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
29711            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
29712            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
29713            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
29714            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
29715            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
29716            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
29717            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
29718            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
29719            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
29720            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
29721            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
29722            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
29723            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
29724            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
29725            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
29726            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
29727            Self::AtomTemperature => "ATOM_TEMPERATURE",
29728            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
29729            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
29730            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
29731            Self::AtomDiskStats => "ATOM_DISK_STATS",
29732            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
29733            Self::AtomAppSize => "ATOM_APP_SIZE",
29734            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
29735            Self::AtomProcStats => "ATOM_PROC_STATS",
29736            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
29737            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
29738            Self::AtomDiskIo => "ATOM_DISK_IO",
29739            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
29740            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
29741            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
29742            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
29743            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
29744            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
29745            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
29746            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
29747            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
29748            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
29749            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
29750            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
29751            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
29752            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
29753            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
29754            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
29755            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
29756            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
29757            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
29758            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
29759            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
29760            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
29761            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
29762            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
29763            Self::AtomAppOps => "ATOM_APP_OPS",
29764            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
29765            Self::AtomSurfaceflingerStatsGlobalInfo => {
29766                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
29767            }
29768            Self::AtomSurfaceflingerStatsLayerInfo => {
29769                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
29770            }
29771            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
29772            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
29773            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
29774            Self::AtomDangerousPermissionStateSampled => {
29775                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
29776            }
29777            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
29778            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
29779            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
29780            Self::AtomPackageNotificationPreferences => {
29781                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
29782            }
29783            Self::AtomPackageNotificationChannelPreferences => {
29784                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
29785            }
29786            Self::AtomPackageNotificationChannelGroupPreferences => {
29787                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
29788            }
29789            Self::AtomGnssStats => "ATOM_GNSS_STATS",
29790            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
29791            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
29792            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
29793            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
29794            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
29795            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
29796            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
29797            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
29798            Self::AtomBytesTransferByTagAndMetered => {
29799                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
29800            }
29801            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
29802            Self::AtomGeneralExternalStorageAccessStats => {
29803                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
29804            }
29805            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
29806            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
29807            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
29808            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
29809            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
29810            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
29811            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
29812            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
29813            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
29814            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
29815            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
29816            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
29817            Self::AtomCpuCyclesPerThreadGroupCluster => {
29818                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
29819            }
29820            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
29821            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
29822            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
29823            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
29824            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
29825            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
29826            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
29827            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
29828            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
29829            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
29830            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
29831            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
29832            Self::AtomBatteryUsageStatsBeforeReset => {
29833                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
29834            }
29835            Self::AtomBatteryUsageStatsSinceReset => {
29836                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
29837            }
29838            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
29839                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
29840            }
29841            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
29842            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
29843            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
29844            Self::AtomVmstat => "ATOM_VMSTAT",
29845            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
29846                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
29847            }
29848            Self::AtomKeystore2KeyCreationWithAuthInfo => {
29849                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
29850            }
29851            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
29852                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
29853            }
29854            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
29855            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
29856                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
29857            }
29858            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
29859                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
29860            }
29861            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
29862            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
29863            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
29864            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
29865            Self::AtomAccessibilityFloatingMenuStats => {
29866                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
29867            }
29868            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
29869            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
29870            Self::AtomCarWatchdogSystemIoUsageSummary => {
29871                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
29872            }
29873            Self::AtomCarWatchdogUidIoUsageSummary => {
29874                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
29875            }
29876            Self::AtomImsRegistrationFeatureTagStats => {
29877                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
29878            }
29879            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
29880            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
29881            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
29882            Self::AtomSipTransportFeatureTagStats => {
29883                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
29884            }
29885            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
29886            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
29887            Self::AtomImsDedicatedBearerListenerEvent => {
29888                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
29889            }
29890            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
29891            Self::AtomImsRegistrationServiceDescStats => {
29892                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
29893            }
29894            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
29895            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
29896            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
29897            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
29898            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
29899            Self::AtomPersistentUriPermissionsAmountPerPackage => {
29900                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
29901            }
29902            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
29903            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
29904            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
29905            Self::AtomUserInfo => "ATOM_USER_INFO",
29906            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
29907            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
29908            Self::AtomRemoteKeyProvisioningErrorCounts => {
29909                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
29910            }
29911            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
29912            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
29913            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
29914            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
29915            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
29916            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
29917            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
29918            Self::AtomNetworkSelectionRematchReasonsInfo => {
29919                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
29920            }
29921            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
29922            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
29923            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
29924            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
29925            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
29926            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
29927                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
29928            }
29929            Self::AtomProcessState => "ATOM_PROCESS_STATE",
29930            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
29931            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
29932            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
29933            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
29934            Self::AtomWsFavouriteWatchFaceListSnapshot => {
29935                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
29936            }
29937            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
29938            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
29939            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
29940            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
29941            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
29942            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
29943            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
29944            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
29945            Self::AtomWifiAwareResourceUsingChanged => {
29946                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
29947            }
29948            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
29949            Self::AtomWifiLocalOnlyRequestReceived => {
29950                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
29951            }
29952            Self::AtomWifiLocalOnlyRequestScanTriggered => {
29953                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
29954            }
29955            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
29956            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
29957            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
29958            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
29959            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
29960            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
29961            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
29962            Self::AtomScorerPredictionResultReported => {
29963                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
29964            }
29965            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
29966            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
29967            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
29968            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
29969            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
29970            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
29971            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
29972            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
29973            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
29974            Self::AtomWsIncomingCallActionReported => {
29975                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
29976            }
29977            Self::AtomWsCallDisconnectionReported => {
29978                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
29979            }
29980            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
29981            Self::AtomWsCallUserExperienceLatencyReported => {
29982                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
29983            }
29984            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
29985            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
29986            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
29987                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
29988            }
29989            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
29990                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
29991            }
29992            Self::AtomWsComplicationsImpactedNotificationEventReported => {
29993                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
29994            }
29995            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
29996            Self::AtomWsNotificationManagedDismissalSync => {
29997                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
29998            }
29999            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
30000            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
30001            Self::AtomWsFavoriteWatchFaceSnapshot => {
30002                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
30003            }
30004            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
30005                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
30006            }
30007            Self::AtomWsWatchFaceCustomizationSnapshot => {
30008                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
30009            }
30010            Self::AtomWearAdaptiveSuspendStatsReported => {
30011                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
30012            }
30013            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
30014                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
30015            }
30016            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
30017                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
30018            }
30019            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
30020            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
30021            Self::AtomWearTimeSyncAttemptCompleted => {
30022                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
30023            }
30024            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
30025            Self::AtomWearSetupWizardDeviceStatusReported => {
30026                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
30027            }
30028            Self::AtomWearSetupWizardPairingCompleted => {
30029                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
30030            }
30031            Self::AtomWearSetupWizardConnectionEstablished => {
30032                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
30033            }
30034            Self::AtomWearSetupWizardCheckinCompleted => {
30035                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
30036            }
30037            Self::AtomWearSetupWizardCompanionTimeReported => {
30038                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
30039            }
30040            Self::AtomWearSetupWizardStatusReported => {
30041                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
30042            }
30043            Self::AtomWearSetupWizardHeartbeatReported => {
30044                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
30045            }
30046            Self::AtomWearSetupWizardFrpTriggered => {
30047                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
30048            }
30049            Self::AtomWearSetupWizardSystemUpdateTriggered => {
30050                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
30051            }
30052            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
30053                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
30054            }
30055            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
30056            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
30057            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
30058            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
30059            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
30060            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
30061            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
30062            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
30063            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
30064            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
30065            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
30066            Self::AtomIgnoredInflationFailuresReported => {
30067                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
30068            }
30069            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
30070            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
30071            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
30072            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
30073            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
30074            Self::AtomMediaControlApiUsageReported => {
30075                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
30076            }
30077            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
30078            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
30079                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
30080            }
30081            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
30082                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
30083            }
30084            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
30085                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
30086            }
30087            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
30088            Self::AtomSysproxyBluetoothBytesTransfer => {
30089                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
30090            }
30091            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
30092            Self::AtomWearCompanionConnectionState => {
30093                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
30094            }
30095            Self::AtomSysproxyServiceStateUpdated => {
30096                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
30097            }
30098            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
30099            Self::AtomTestUprobestatsAtomReported => {
30100                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
30101            }
30102            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
30103            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
30104            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
30105            Self::AtomThreadnetworkTelemetryDataReported => {
30106                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
30107            }
30108            Self::AtomThreadnetworkTopoEntryRepeated => {
30109                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
30110            }
30111            Self::AtomThreadnetworkDeviceInfoReported => {
30112                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
30113            }
30114            Self::AtomCellularRadioPowerStateChanged => {
30115                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
30116            }
30117            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
30118            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
30119            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
30120            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
30121            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
30122            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
30123            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
30124            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
30125            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
30126            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
30127            Self::AtomSatelliteSosMessageRecommender => {
30128                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
30129            }
30130            Self::AtomCarrierRoamingSatelliteSession => {
30131                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
30132            }
30133            Self::AtomCarrierRoamingSatelliteControllerStats => {
30134                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
30135            }
30136            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
30137            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
30138            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
30139            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
30140            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
30141            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
30142            Self::AtomQnsFallbackRestrictionChanged => {
30143                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
30144            }
30145            Self::AtomQnsRatPreferenceMismatchInfo => {
30146                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
30147            }
30148            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
30149            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
30150            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
30151                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
30152            }
30153            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
30154            Self::AtomCallStats => "ATOM_CALL_STATS",
30155            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
30156            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
30157            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
30158            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
30159            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
30160            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
30161            Self::AtomDisplaySwitchLatencyTracked => {
30162                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
30163            }
30164            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
30165            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
30166            Self::AtomCommunalHubWidgetEventReported => {
30167                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
30168            }
30169            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
30170            Self::AtomContextualEducationTriggered => {
30171                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
30172            }
30173            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
30174            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
30175            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
30176            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
30177            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
30178            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
30179            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
30180            Self::AtomSandboxActivityEventOccurred => {
30181                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
30182            }
30183            Self::AtomSdkSandboxRestrictedAccessInSession => {
30184                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
30185            }
30186            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
30187            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
30188            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
30189            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
30190            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
30191            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
30192            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
30193            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
30194            Self::AtomMediaProviderDatabaseRollbackReported => {
30195                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
30196            }
30197            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
30198            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
30199            Self::AtomScreenTimeoutOverrideReported => {
30200                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
30201            }
30202            Self::AtomScreenInteractiveSessionReported => {
30203                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
30204            }
30205            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
30206            Self::AtomAtom9999 => "ATOM_ATOM_9999",
30207            Self::AtomAtom99999 => "ATOM_ATOM_99999",
30208            Self::AtomPhotopickerSessionInfoReported => {
30209                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
30210            }
30211            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
30212            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
30213            Self::AtomPhotopickerMediaItemStatusReported => {
30214                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
30215            }
30216            Self::AtomPhotopickerPreviewInfoLogged => {
30217                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
30218            }
30219            Self::AtomPhotopickerMenuInteractionLogged => {
30220                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
30221            }
30222            Self::AtomPhotopickerBannerInteractionLogged => {
30223                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
30224            }
30225            Self::AtomPhotopickerMediaLibraryInfoLogged => {
30226                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
30227            }
30228            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
30229            Self::AtomPhotopickerMediaGridSyncInfoReported => {
30230                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
30231            }
30232            Self::AtomPhotopickerAlbumSyncInfoReported => {
30233                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
30234            }
30235            Self::AtomPhotopickerSearchInfoReported => {
30236                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
30237            }
30238            Self::AtomSearchDataExtractionDetailsReported => {
30239                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
30240            }
30241            Self::AtomEmbeddedPhotopickerInfoReported => {
30242                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
30243            }
30244            Self::AtomPermissionRationaleDialogViewed => {
30245                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
30246            }
30247            Self::AtomPermissionRationaleDialogActionReported => {
30248                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
30249            }
30250            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
30251                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
30252            }
30253            Self::AtomAppDataSharingUpdatesFragmentViewed => {
30254                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
30255            }
30256            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
30257                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
30258            }
30259            Self::AtomEnhancedConfirmationDialogResultReported => {
30260                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
30261            }
30262            Self::AtomEnhancedConfirmationRestrictionCleared => {
30263                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
30264            }
30265            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
30266            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
30267            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
30268            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
30269            Self::AtomComponentStateChangedReported => {
30270                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
30271            }
30272            Self::AtomOndevicepersonalizationApiCalled => {
30273                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
30274            }
30275            Self::AtomOndevicepersonalizationTraceEvent => {
30276                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
30277            }
30278            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
30279            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
30280            Self::AtomNfcPollingLoopNotificationReported => {
30281                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
30282            }
30283            Self::AtomNfcProprietaryCapabilitiesReported => {
30284                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
30285            }
30286            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
30287            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
30288            Self::AtomMicroxrDeviceBootCompleteReported => {
30289                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
30290            }
30291            Self::AtomMteState => "ATOM_MTE_STATE",
30292            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
30293            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
30294            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
30295            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
30296            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
30297            Self::AtomMediaCodecReclaimRequestCompleted => {
30298                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
30299            }
30300            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
30301            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
30302            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
30303            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
30304            Self::AtomChreSignificantMotionStateChanged => {
30305                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
30306            }
30307            Self::AtomPopulationDensityProviderLoadingReported => {
30308                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
30309            }
30310            Self::AtomDensityBasedCoarseLocationsUsageReported => {
30311                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
30312            }
30313            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
30314                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
30315            }
30316            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
30317            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
30318            Self::AtomKeyboardSystemsEventReported => {
30319                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
30320            }
30321            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
30322            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
30323            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
30324            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
30325            Self::AtomIkeLivenessCheckSessionValidated => {
30326                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
30327            }
30328            Self::AtomNegotiatedSecurityAssociation => {
30329                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
30330            }
30331            Self::AtomHotwordEgressSizeAtomReported => {
30332                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
30333            }
30334            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
30335            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
30336            Self::AtomHealthConnectAppOpenedReported => {
30337                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
30338            }
30339            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
30340            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
30341            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
30342            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
30343            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
30344            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
30345            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
30346            Self::AtomHealthConnectExportImportStatsReported => {
30347                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
30348            }
30349            Self::AtomHealthConnectPermissionStats => {
30350                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
30351            }
30352            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
30353            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
30354            Self::AtomHealthConnectPhrStorageStats => {
30355                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
30356            }
30357            Self::AtomHealthConnectRestrictedEcosystemStats => {
30358                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
30359            }
30360            Self::AtomHealthConnectEcosystemStats => {
30361                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
30362            }
30363            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
30364            Self::AtomHdmiSoundbarModeStatusReported => {
30365                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
30366            }
30367            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
30368                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
30369            }
30370            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
30371            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
30372            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
30373            Self::AtomApplicationGrammaticalInflectionChanged => {
30374                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
30375            }
30376            Self::AtomSystemGrammaticalInflectionChanged => {
30377                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
30378            }
30379            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
30380            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
30381            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
30382            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
30383            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
30384            Self::AtomStylusPredictionMetricsReported => {
30385                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
30386            }
30387            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
30388            Self::AtomMediaProjectionStateChanged => {
30389                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
30390            }
30391            Self::AtomMediaProjectionTargetChanged => {
30392                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
30393            }
30394            Self::AtomExcessiveBinderProxyCountReported => {
30395                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
30396            }
30397            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
30398            Self::AtomMobileBytesTransferByProcState => {
30399                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
30400            }
30401            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
30402            Self::AtomSensitiveContentMediaProjectionSession => {
30403                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
30404            }
30405            Self::AtomSensitiveNotificationAppProtectionSession => {
30406                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
30407            }
30408            Self::AtomSensitiveNotificationAppProtectionApplied => {
30409                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
30410            }
30411            Self::AtomSensitiveNotificationRedaction => {
30412                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
30413            }
30414            Self::AtomSensitiveContentAppProtection => {
30415                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
30416            }
30417            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
30418            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
30419            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
30420            Self::AtomPowerSaveTempAllowlistChanged => {
30421                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
30422            }
30423            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
30424            Self::AtomContentOrFileUriEventReported => {
30425                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
30426            }
30427            Self::AtomDeviceIdleTempAllowlistUpdated => {
30428                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
30429            }
30430            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
30431                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
30432            }
30433            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
30434            Self::AtomJankFrameCountByWidgetReported => {
30435                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
30436            }
30437            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
30438            Self::AtomNotificationChannelClassification => {
30439                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
30440            }
30441            Self::AtomCameraStatusForCompatibilityChanged => {
30442                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
30443            }
30444            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
30445            Self::AtomFederatedComputeTrainingEventReported => {
30446                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
30447            }
30448            Self::AtomExampleIteratorNextLatencyReported => {
30449                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
30450            }
30451            Self::AtomFederatedComputeTraceEventReported => {
30452                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
30453            }
30454            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
30455            Self::AtomExpressHistogramSampleReported => {
30456                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
30457            }
30458            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
30459            Self::AtomExpressUidHistogramSampleReported => {
30460                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
30461            }
30462            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
30463            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
30464            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
30465            Self::AtomExternalDisplayStateChanged => {
30466                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
30467            }
30468            Self::AtomDisplayModeDirectorVoteChanged => {
30469                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
30470            }
30471            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
30472            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
30473            Self::AtomDeviceLockCheckInRequestReported => {
30474                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
30475            }
30476            Self::AtomDeviceLockProvisioningCompleteReported => {
30477                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
30478            }
30479            Self::AtomDeviceLockKioskAppRequestReported => {
30480                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
30481            }
30482            Self::AtomDeviceLockCheckInRetryReported => {
30483                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
30484            }
30485            Self::AtomDeviceLockProvisionFailureReported => {
30486                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
30487            }
30488            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
30489                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
30490            }
30491            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
30492            Self::AtomDesktopModeSessionTaskUpdate => {
30493                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
30494            }
30495            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
30496            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
30497            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
30498            Self::AtomCronetEngineBuilderInitialized => {
30499                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
30500            }
30501            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
30502            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
30503            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
30504            Self::AtomCredentialManagerInitPhaseReported => {
30505                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
30506            }
30507            Self::AtomCredentialManagerCandidatePhaseReported => {
30508                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
30509            }
30510            Self::AtomCredentialManagerFinalPhaseReported => {
30511                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
30512            }
30513            Self::AtomCredentialManagerTotalReported => {
30514                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
30515            }
30516            Self::AtomCredentialManagerFinalnouidReported => {
30517                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
30518            }
30519            Self::AtomCredentialManagerGetReported => {
30520                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
30521            }
30522            Self::AtomCredentialManagerAuthClickReported => {
30523                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
30524            }
30525            Self::AtomCredentialManagerApiv2Called => {
30526                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
30527            }
30528            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
30529            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
30530            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
30531            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
30532            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
30533            Self::AtomCoreNetworkingTerribleErrorOccurred => {
30534                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
30535            }
30536            Self::AtomNetworkStatsRecorderFileOperated => {
30537                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
30538            }
30539            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
30540            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
30541            Self::AtomTetheringActiveSessionsReported => {
30542                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
30543            }
30544            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
30545                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
30546            }
30547            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
30548            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
30549            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
30550            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
30551            Self::AtomCertificateTransparencyLogListStateChanged => {
30552                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
30553            }
30554            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
30555            Self::AtomCertificateTransparencyVerificationReported => {
30556                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
30557            }
30558            Self::AtomCameraFeatureCombinationQueryEvent => {
30559                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
30560            }
30561            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
30562            Self::AtomBluetoothHashedDeviceNameReported => {
30563                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
30564            }
30565            Self::AtomBluetoothL2capCocClientConnection => {
30566                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
30567            }
30568            Self::AtomBluetoothL2capCocServerConnection => {
30569                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
30570            }
30571            Self::AtomBluetoothLeSessionConnected => {
30572                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
30573            }
30574            Self::AtomRestrictedBluetoothDeviceNameReported => {
30575                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
30576            }
30577            Self::AtomBluetoothProfileConnectionAttempted => {
30578                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
30579            }
30580            Self::AtomBluetoothContentProfileErrorReported => {
30581                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
30582            }
30583            Self::AtomBluetoothRfcommConnectionAttempted => {
30584                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
30585            }
30586            Self::AtomRemoteDeviceInformationWithMetricId => {
30587                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
30588            }
30589            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
30590            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
30591            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
30592            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
30593            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
30594            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
30595            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
30596            Self::AtomBluetoothCrossLayerEventReported => {
30597                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
30598            }
30599            Self::AtomBroadcastAudioSessionReported => {
30600                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
30601            }
30602            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
30603            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
30604                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
30605            }
30606            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
30607            Self::AtomHearingDeviceActiveEventReported => {
30608                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
30609            }
30610            Self::AtomBackportedFixStatusReported => {
30611                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
30612            }
30613            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
30614            Self::AtomCarSystemUiDataSubscriptionEventReported => {
30615                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
30616            }
30617            Self::AtomCarSettingsDataSubscriptionEventReported => {
30618                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
30619            }
30620            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
30621            Self::AtomCarWakeupFromSuspendReported => {
30622                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
30623            }
30624            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
30625            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
30626            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
30627            Self::AtomAutofillFillRequestReported => {
30628                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
30629            }
30630            Self::AtomAutofillFillResponseReported => {
30631                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
30632            }
30633            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
30634            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
30635            Self::AtomAutofillFieldClassificationEventReported => {
30636                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
30637            }
30638            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
30639            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
30640            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
30641            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
30642            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
30643            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
30644            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
30645            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
30646            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
30647            Self::AtomAppSearchSetSchemaStatsReported => {
30648                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
30649            }
30650            Self::AtomAppSearchSchemaMigrationStatsReported => {
30651                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
30652            }
30653            Self::AtomAppSearchUsageSearchIntentStatsReported => {
30654                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
30655            }
30656            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
30657                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
30658            }
30659            Self::AtomAppSearchAppsIndexerStatsReported => {
30660                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
30661            }
30662            Self::AtomAppFunctionsRequestReported => {
30663                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
30664            }
30665            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
30666            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
30667            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
30668            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
30669            Self::AtomAiWallpapersTemplateSelected => {
30670                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
30671            }
30672            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
30673            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
30674            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
30675            Self::AtomJsscriptengineLatencyReported => {
30676                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
30677            }
30678            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
30679            Self::AtomAdServicesMesurementReportsUploaded => {
30680                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
30681            }
30682            Self::AtomMobileDataDownloadFileGroupStatusReported => {
30683                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
30684            }
30685            Self::AtomMobileDataDownloadDownloadResultReported => {
30686                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
30687            }
30688            Self::AtomAdServicesSettingsUsageReported => {
30689                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
30690            }
30691            Self::AtomBackgroundFetchProcessReported => {
30692                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
30693            }
30694            Self::AtomUpdateCustomAudienceProcessReported => {
30695                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
30696            }
30697            Self::AtomRunAdBiddingProcessReported => {
30698                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
30699            }
30700            Self::AtomRunAdScoringProcessReported => {
30701                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
30702            }
30703            Self::AtomRunAdSelectionProcessReported => {
30704                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
30705            }
30706            Self::AtomRunAdBiddingPerCaProcessReported => {
30707                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
30708            }
30709            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
30710                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
30711            }
30712            Self::AtomAdServicesMeasurementRegistrations => {
30713                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
30714            }
30715            Self::AtomAdServicesGetTopicsReported => {
30716                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
30717            }
30718            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
30719                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
30720            }
30721            Self::AtomAdServicesEpochComputationClassifierReported => {
30722                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
30723            }
30724            Self::AtomAdServicesBackCompatGetTopicsReported => {
30725                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
30726            }
30727            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
30728                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
30729            }
30730            Self::AtomAdServicesMeasurementDebugKeys => {
30731                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
30732            }
30733            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
30734            Self::AtomAdServicesBackgroundJobsExecutionReported => {
30735                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
30736            }
30737            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
30738                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
30739            }
30740            Self::AtomAdServicesMeasurementAttribution => {
30741                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
30742            }
30743            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
30744            Self::AtomAdServicesMeasurementWipeout => {
30745                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
30746            }
30747            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
30748                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
30749            }
30750            Self::AtomAdServicesEnrollmentDataStored => {
30751                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
30752            }
30753            Self::AtomAdServicesEnrollmentFileDownloaded => {
30754                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
30755            }
30756            Self::AtomAdServicesEnrollmentMatched => {
30757                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
30758            }
30759            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
30760            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
30761            Self::AtomAdServicesMeasurementClickVerification => {
30762                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
30763            }
30764            Self::AtomAdServicesEncryptionKeyFetched => {
30765                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
30766            }
30767            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
30768                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
30769            }
30770            Self::AtomDestinationRegisteredBeacons => {
30771                "ATOM_DESTINATION_REGISTERED_BEACONS"
30772            }
30773            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
30774            Self::AtomInteractionReportingTableCleared => {
30775                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
30776            }
30777            Self::AtomAppManifestConfigHelperCalled => {
30778                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
30779            }
30780            Self::AtomAdFilteringProcessJoinCaReported => {
30781                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
30782            }
30783            Self::AtomAdFilteringProcessAdSelectionReported => {
30784                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
30785            }
30786            Self::AtomAdCounterHistogramUpdaterReported => {
30787                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
30788            }
30789            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
30790            Self::AtomKAnonImmediateSignJoinStatusReported => {
30791                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
30792            }
30793            Self::AtomKAnonBackgroundJobStatusReported => {
30794                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
30795            }
30796            Self::AtomKAnonInitializeStatusReported => {
30797                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
30798            }
30799            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
30800            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
30801            Self::AtomKAnonKeyAttestationStatusReported => {
30802                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
30803            }
30804            Self::AtomGetAdSelectionDataApiCalled => {
30805                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
30806            }
30807            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
30808                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
30809            }
30810            Self::AtomBackgroundJobSchedulingReported => {
30811                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
30812            }
30813            Self::AtomTopicsEncryptionEpochComputationReported => {
30814                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
30815            }
30816            Self::AtomTopicsEncryptionGetTopicsReported => {
30817                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
30818            }
30819            Self::AtomAdservicesShellCommandCalled => {
30820                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
30821            }
30822            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
30823            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
30824            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
30825            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
30826            Self::AtomPersistAdSelectionResultCalled => {
30827                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
30828            }
30829            Self::AtomServerAuctionKeyFetchCalled => {
30830                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
30831            }
30832            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
30833                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
30834            }
30835            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
30836                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
30837            }
30838            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
30839                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
30840            }
30841            Self::AtomSelectAdsFromOutcomesApiCalled => {
30842                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
30843            }
30844            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
30845            Self::AtomAdServicesEnrollmentTransactionStats => {
30846                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
30847            }
30848            Self::AtomAdServicesCobaltLoggerEventReported => {
30849                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
30850            }
30851            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
30852                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
30853            }
30854            Self::AtomUpdateSignalsProcessReported => {
30855                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
30856            }
30857            Self::AtomTopicsScheduleEpochJobSettingReported => {
30858                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
30859            }
30860            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
30861                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
30862            }
30863            Self::AtomScheduledCustomAudienceUpdatePerformed => {
30864                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
30865            }
30866            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
30867                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
30868            }
30869            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
30870                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
30871            }
30872            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
30873            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
30874            Self::AtomThermalHeadroomThresholdsCalled => {
30875                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
30876            }
30877            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
30878            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
30879            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
30880            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
30881                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
30882            }
30883            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
30884            Self::AtomAccessibilityCheckResultReported => {
30885                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
30886            }
30887        }
30888    }
30889    /// Creates an enum from field names used in the ProtoBuf definition.
30890    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
30891        match value {
30892            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
30893            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
30894            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
30895            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
30896            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
30897            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
30898            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
30899            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
30900                Some(Self::AtomScheduledJobStateChanged)
30901            }
30902            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
30903            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
30904            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
30905                Some(Self::AtomLongPartialWakelockStateChanged)
30906            }
30907            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
30908                Some(Self::AtomMobileRadioPowerStateChanged)
30909            }
30910            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
30911                Some(Self::AtomWifiRadioPowerStateChanged)
30912            }
30913            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
30914                Some(Self::AtomActivityManagerSleepStateChanged)
30915            }
30916            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
30917                Some(Self::AtomMemoryFactorStateChanged)
30918            }
30919            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
30920                Some(Self::AtomExcessiveCpuUsageReported)
30921            }
30922            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
30923            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
30924                Some(Self::AtomProcessMemoryStatReported)
30925            }
30926            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
30927            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
30928                Some(Self::AtomBatterySaverModeStateChanged)
30929            }
30930            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
30931                Some(Self::AtomDeviceIdleModeStateChanged)
30932            }
30933            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
30934                Some(Self::AtomDeviceIdlingModeStateChanged)
30935            }
30936            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
30937            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
30938            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
30939            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
30940            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
30941            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
30942                Some(Self::AtomProcessLifeCycleStateChanged)
30943            }
30944            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
30945            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
30946            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
30947            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
30948            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
30949            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
30950            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
30951            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
30952            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
30953            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
30954                Some(Self::AtomWifiSignalStrengthChanged)
30955            }
30956            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
30957            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
30958                Some(Self::AtomPhoneSignalStrengthChanged)
30959            }
30960            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
30961            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
30962                Some(Self::AtomActivityForegroundStateChanged)
30963            }
30964            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
30965            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
30966            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
30967            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
30968            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
30969            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
30970            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
30971            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
30972            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
30973            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
30974                Some(Self::AtomPictureInPictureStateChanged)
30975            }
30976            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
30977                Some(Self::AtomWifiMulticastLockStateChanged)
30978            }
30979            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
30980                Some(Self::AtomAppStartMemoryStateCaptured)
30981            }
30982            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
30983            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
30984            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
30985            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
30986                Some(Self::AtomForegroundServiceStateChanged)
30987            }
30988            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
30989            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
30990            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
30991                Some(Self::AtomKeyguardBouncerStateChanged)
30992            }
30993            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
30994                Some(Self::AtomKeyguardBouncerPasswordEntered)
30995            }
30996            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
30997            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
30998                Some(Self::AtomResourceConfigurationChanged)
30999            }
31000            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
31001                Some(Self::AtomBluetoothEnabledStateChanged)
31002            }
31003            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
31004                Some(Self::AtomBluetoothConnectionStateChanged)
31005            }
31006            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
31007            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
31008                Some(Self::AtomUsbConnectorStateChanged)
31009            }
31010            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
31011            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
31012            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
31013            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
31014            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
31015                Some(Self::AtomMobileConnectionStateChanged)
31016            }
31017            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
31018                Some(Self::AtomMobileRadioTechnologyChanged)
31019            }
31020            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
31021            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
31022            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
31023            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
31024            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
31025            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
31026            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
31027            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
31028                Some(Self::AtomDeferredJobStatsReported)
31029            }
31030            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
31031            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
31032            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
31033            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
31034            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
31035            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
31036            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
31037            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
31038            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
31039                Some(Self::AtomPhoneServiceStateChanged)
31040            }
31041            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
31042            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
31043            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
31044            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
31045            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
31046            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
31047            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
31048            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
31049            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
31050            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
31051            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
31052                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
31053            }
31054            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
31055            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
31056            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
31057                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
31058            }
31059            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
31060            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
31061            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
31062            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
31063                Some(Self::AtomDocsUiUserActionReported)
31064            }
31065            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
31066            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
31067            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
31068            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
31069            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
31070                Some(Self::AtomDocsUiPickerLaunchedFromReported)
31071            }
31072            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
31073                Some(Self::AtomDocsUiPickResultReported)
31074            }
31075            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
31076                Some(Self::AtomDocsUiSearchModeReported)
31077            }
31078            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
31079                Some(Self::AtomDocsUiSearchTypeReported)
31080            }
31081            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
31082            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
31083                Some(Self::AtomRescuePartyResetReported)
31084            }
31085            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
31086            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
31087            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
31088                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
31089            }
31090            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
31091                Some(Self::AtomBluetoothAclConnectionStateChanged)
31092            }
31093            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
31094                Some(Self::AtomBluetoothScoConnectionStateChanged)
31095            }
31096            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
31097            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
31098                Some(Self::AtomAppOptimizedAfterDowngraded)
31099            }
31100            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
31101            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
31102                Some(Self::AtomGnssNfwNotificationReported)
31103            }
31104            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
31105                Some(Self::AtomGnssConfigurationReported)
31106            }
31107            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
31108                Some(Self::AtomUsbPortOverheatEventReported)
31109            }
31110            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
31111            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
31112            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
31113            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
31114            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
31115            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
31116                Some(Self::AtomNfcHceTransactionOccurred)
31117            }
31118            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
31119            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
31120            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
31121                Some(Self::AtomBroadcastDispatchLatencyReported)
31122            }
31123            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
31124                Some(Self::AtomAttentionManagerServiceResultReported)
31125            }
31126            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
31127            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
31128            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
31129            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
31130            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
31131                Some(Self::AtomBiometricSystemHealthIssueDetected)
31132            }
31133            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
31134            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
31135                Some(Self::AtomScheduledJobConstraintChanged)
31136            }
31137            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
31138                Some(Self::AtomBluetoothActiveDeviceChanged)
31139            }
31140            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
31141                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
31142            }
31143            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
31144                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
31145            }
31146            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
31147                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
31148            }
31149            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
31150                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
31151            }
31152            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
31153                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
31154            }
31155            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
31156                Some(Self::AtomBluetoothDeviceRssiReported)
31157            }
31158            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
31159                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
31160            }
31161            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
31162                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
31163            }
31164            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
31165                Some(Self::AtomBluetoothHciTimeoutReported)
31166            }
31167            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
31168                Some(Self::AtomBluetoothQualityReportReported)
31169            }
31170            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
31171                Some(Self::AtomBluetoothDeviceInfoReported)
31172            }
31173            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
31174                Some(Self::AtomBluetoothRemoteVersionInfoReported)
31175            }
31176            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
31177                Some(Self::AtomBluetoothSdpAttributeReported)
31178            }
31179            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
31180                Some(Self::AtomBluetoothBondStateChanged)
31181            }
31182            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
31183                Some(Self::AtomBluetoothClassicPairingEventReported)
31184            }
31185            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
31186                Some(Self::AtomBluetoothSmpPairingEventReported)
31187            }
31188            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
31189                Some(Self::AtomScreenTimeoutExtensionReported)
31190            }
31191            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
31192            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
31193                Some(Self::AtomPermissionGrantRequestResultReported)
31194            }
31195            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
31196                Some(Self::AtomBluetoothSocketConnectionStateChanged)
31197            }
31198            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
31199                Some(Self::AtomDeviceIdentifierAccessDenied)
31200            }
31201            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
31202                Some(Self::AtomBubbleDeveloperErrorReported)
31203            }
31204            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
31205                Some(Self::AtomAssistGestureStageReported)
31206            }
31207            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
31208                Some(Self::AtomAssistGestureFeedbackReported)
31209            }
31210            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
31211                Some(Self::AtomAssistGestureProgressReported)
31212            }
31213            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
31214            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
31215            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
31216            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
31217                Some(Self::AtomPrivacyIndicatorsInteracted)
31218            }
31219            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
31220                Some(Self::AtomAppInstallOnExternalStorageReported)
31221            }
31222            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
31223            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
31224            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
31225            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
31226                Some(Self::AtomSystemServerWatchdogOccurred)
31227            }
31228            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
31229            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
31230                Some(Self::AtomBluetoothClassOfDeviceReported)
31231            }
31232            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
31233                Some(Self::AtomIntelligenceEventReported)
31234            }
31235            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
31236                Some(Self::AtomThermalThrottlingSeverityStateChanged)
31237            }
31238            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
31239                Some(Self::AtomRoleRequestResultReported)
31240            }
31241            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
31242                Some(Self::AtomMediametricsAudiopolicyReported)
31243            }
31244            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
31245                Some(Self::AtomMediametricsAudiorecordReported)
31246            }
31247            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
31248                Some(Self::AtomMediametricsAudiothreadReported)
31249            }
31250            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
31251                Some(Self::AtomMediametricsAudiotrackReported)
31252            }
31253            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
31254                Some(Self::AtomMediametricsCodecReported)
31255            }
31256            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
31257                Some(Self::AtomMediametricsDrmWidevineReported)
31258            }
31259            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
31260                Some(Self::AtomMediametricsExtractorReported)
31261            }
31262            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
31263                Some(Self::AtomMediametricsMediadrmReported)
31264            }
31265            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
31266                Some(Self::AtomMediametricsNuplayerReported)
31267            }
31268            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
31269                Some(Self::AtomMediametricsRecorderReported)
31270            }
31271            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
31272                Some(Self::AtomMediametricsDrmmanagerReported)
31273            }
31274            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
31275            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
31276            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
31277            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
31278                Some(Self::AtomContentCaptureCallerMismatchReported)
31279            }
31280            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
31281                Some(Self::AtomContentCaptureServiceEvents)
31282            }
31283            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
31284                Some(Self::AtomContentCaptureSessionEvents)
31285            }
31286            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
31287            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
31288                Some(Self::AtomLocationManagerApiUsageReported)
31289            }
31290            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
31291                Some(Self::AtomReviewPermissionsFragmentResultReported)
31292            }
31293            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
31294                Some(Self::AtomRuntimePermissionsUpgradeResult)
31295            }
31296            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
31297                Some(Self::AtomGrantPermissionsActivityButtonActions)
31298            }
31299            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
31300                Some(Self::AtomLocationAccessCheckNotificationAction)
31301            }
31302            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
31303                Some(Self::AtomAppPermissionFragmentActionReported)
31304            }
31305            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
31306                Some(Self::AtomAppPermissionFragmentViewed)
31307            }
31308            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
31309                Some(Self::AtomAppPermissionsFragmentViewed)
31310            }
31311            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
31312                Some(Self::AtomPermissionAppsFragmentViewed)
31313            }
31314            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
31315            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
31316            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
31317            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
31318            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
31319                Some(Self::AtomExclusionRectStateChanged)
31320            }
31321            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
31322                Some(Self::AtomBackGestureReportedReported)
31323            }
31324            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
31325                Some(Self::AtomUpdateEngineUpdateAttemptReported)
31326            }
31327            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
31328                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
31329            }
31330            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
31331            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
31332                Some(Self::AtomAppCompatibilityChangeReported)
31333            }
31334            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
31335            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
31336                Some(Self::AtomVmsClientConnectionStateChanged)
31337            }
31338            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
31339                Some(Self::AtomMediaProviderScanOccurred)
31340            }
31341            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
31342            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
31343                Some(Self::AtomMediaProviderPermissionRequested)
31344            }
31345            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
31346                Some(Self::AtomMediaProviderSchemaChanged)
31347            }
31348            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
31349                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
31350            }
31351            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
31352                Some(Self::AtomRebootEscrowRecoveryReported)
31353            }
31354            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
31355                Some(Self::AtomBootTimeEventDurationReported)
31356            }
31357            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
31358                Some(Self::AtomBootTimeEventElapsedTimeReported)
31359            }
31360            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
31361                Some(Self::AtomBootTimeEventUtcTimeReported)
31362            }
31363            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
31364                Some(Self::AtomBootTimeEventErrorCodeReported)
31365            }
31366            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
31367            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
31368            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
31369                Some(Self::AtomNotificationPanelReported)
31370            }
31371            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
31372                Some(Self::AtomNotificationChannelModified)
31373            }
31374            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
31375                Some(Self::AtomIntegrityCheckResultReported)
31376            }
31377            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
31378            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
31379            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
31380            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
31381            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
31382            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
31383                Some(Self::AtomWifiConnectionResultReported)
31384            }
31385            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
31386            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
31387            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
31388                Some(Self::AtomForegroundServiceAppOpSessionEnded)
31389            }
31390            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
31391            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
31392            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
31393            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
31394            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
31395            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
31396            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
31397                Some(Self::AtomPackageInstallerV2Reported)
31398            }
31399            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
31400                Some(Self::AtomUserLifecycleJourneyReported)
31401            }
31402            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
31403                Some(Self::AtomUserLifecycleEventOccurred)
31404            }
31405            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
31406                Some(Self::AtomAccessibilityShortcutReported)
31407            }
31408            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
31409                Some(Self::AtomAccessibilityServiceReported)
31410            }
31411            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
31412                Some(Self::AtomDocsUiDragAndDropReported)
31413            }
31414            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
31415            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
31416                Some(Self::AtomAutoRevokeNotificationClicked)
31417            }
31418            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
31419                Some(Self::AtomAutoRevokeFragmentAppViewed)
31420            }
31421            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
31422                Some(Self::AtomAutoRevokedAppInteraction)
31423            }
31424            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
31425                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
31426            }
31427            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
31428            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
31429                Some(Self::AtomAudioPowerUsageDataReported)
31430            }
31431            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
31432            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
31433                Some(Self::AtomMediaoutputOpSwitchReported)
31434            }
31435            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
31436            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
31437            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
31438            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
31439                Some(Self::AtomAssistantInvocationReported)
31440            }
31441            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
31442            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
31443                Some(Self::AtomCarUserHalModifyUserRequestReported)
31444            }
31445            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
31446                Some(Self::AtomCarUserHalModifyUserResponseReported)
31447            }
31448            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
31449                Some(Self::AtomCarUserHalPostSwitchResponseReported)
31450            }
31451            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
31452                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
31453            }
31454            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
31455                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
31456            }
31457            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
31458                Some(Self::AtomCarUserHalUserAssociationRequestReported)
31459            }
31460            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
31461                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
31462            }
31463            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
31464                Some(Self::AtomNetworkIpProvisioningReported)
31465            }
31466            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
31467                Some(Self::AtomNetworkDhcpRenewReported)
31468            }
31469            "ATOM_NETWORK_VALIDATION_REPORTED" => {
31470                Some(Self::AtomNetworkValidationReported)
31471            }
31472            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
31473                Some(Self::AtomNetworkStackQuirkReported)
31474            }
31475            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
31476                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
31477            }
31478            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
31479                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
31480            }
31481            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
31482                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
31483            }
31484            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
31485                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
31486            }
31487            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
31488            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
31489            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
31490            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
31491                Some(Self::AtomContactsProviderStatusReported)
31492            }
31493            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
31494                Some(Self::AtomKeystoreKeyEventReported)
31495            }
31496            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
31497            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
31498            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
31499                Some(Self::AtomUiInteractionFrameInfoReported)
31500            }
31501            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
31502            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
31503            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
31504                Some(Self::AtomWifiConnectionStateChanged)
31505            }
31506            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
31507                Some(Self::AtomHdmiCecActiveSourceChanged)
31508            }
31509            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
31510            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
31511            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
31512            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
31513                Some(Self::AtomCarrierIdMismatchReported)
31514            }
31515            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
31516            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
31517                Some(Self::AtomDataStallRecoveryReported)
31518            }
31519            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
31520                Some(Self::AtomMediametricsMediaparserReported)
31521            }
31522            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
31523            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
31524                Some(Self::AtomTextClassifierApiUsageReported)
31525            }
31526            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
31527                Some(Self::AtomCarWatchdogKillStatsReported)
31528            }
31529            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
31530                Some(Self::AtomMediametricsPlaybackReported)
31531            }
31532            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
31533            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
31534                Some(Self::AtomMediaPlaybackStateChanged)
31535            }
31536            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
31537                Some(Self::AtomMediaPlaybackErrorReported)
31538            }
31539            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
31540                Some(Self::AtomMediaPlaybackTrackChanged)
31541            }
31542            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
31543            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
31544            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
31545            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
31546            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
31547            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
31548            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
31549                Some(Self::AtomImsServiceEntitlementUpdated)
31550            }
31551            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
31552            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
31553                Some(Self::AtomSimSpecificSettingsRestored)
31554            }
31555            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
31556                Some(Self::AtomTextClassifierDownloadReported)
31557            }
31558            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
31559            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
31560            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
31561                Some(Self::AtomBluetoothHalCrashReasonReported)
31562            }
31563            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
31564                Some(Self::AtomRebootEscrowPreparationReported)
31565            }
31566            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
31567                Some(Self::AtomRebootEscrowLskfCaptureReported)
31568            }
31569            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
31570                Some(Self::AtomRebootEscrowRebootReported)
31571            }
31572            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
31573            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
31574                Some(Self::AtomMediametricsAaudiostreamReported)
31575            }
31576            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
31577                Some(Self::AtomMediaTranscodingSessionEnded)
31578            }
31579            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
31580                Some(Self::AtomMagnificationUsageReported)
31581            }
31582            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
31583                Some(Self::AtomMagnificationModeWithImeOnReported)
31584            }
31585            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
31586                Some(Self::AtomAppSearchCallStatsReported)
31587            }
31588            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
31589                Some(Self::AtomAppSearchPutDocumentStatsReported)
31590            }
31591            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
31592            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
31593            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
31594            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
31595            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
31596                Some(Self::AtomAuthPromptAuthenticateInvoked)
31597            }
31598            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
31599                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
31600            }
31601            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
31602            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
31603            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
31604            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
31605                Some(Self::AtomLongRebootBlockingReported)
31606            }
31607            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
31608                Some(Self::AtomLocationTimeZoneProviderStateChanged)
31609            }
31610            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
31611            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
31612                Some(Self::AtomTimeoutAutoExtendedReported)
31613            }
31614            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
31615            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
31616            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
31617                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
31618            }
31619            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
31620                Some(Self::AtomUserLevelHibernationStateChanged)
31621            }
31622            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
31623                Some(Self::AtomAppSearchInitializeStatsReported)
31624            }
31625            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
31626                Some(Self::AtomAppSearchQueryStatsReported)
31627            }
31628            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
31629            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
31630                Some(Self::AtomNetworkIpReachabilityMonitorReported)
31631            }
31632            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
31633            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
31634                Some(Self::AtomAnrOccurredProcessingStarted)
31635            }
31636            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
31637                Some(Self::AtomAppSearchRemoveStatsReported)
31638            }
31639            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
31640            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
31641                Some(Self::AtomPermissionUsageFragmentInteraction)
31642            }
31643            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
31644                Some(Self::AtomPermissionDetailsInteraction)
31645            }
31646            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
31647                Some(Self::AtomPrivacySensorToggleInteraction)
31648            }
31649            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
31650                Some(Self::AtomPrivacyToggleDialogInteraction)
31651            }
31652            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
31653                Some(Self::AtomAppSearchOptimizeStatsReported)
31654            }
31655            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
31656                Some(Self::AtomNonA11yToolServiceWarningReport)
31657            }
31658            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
31659            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
31660                Some(Self::AtomSizeCompatRestartButtonEventReported)
31661            }
31662            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
31663            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
31664                Some(Self::AtomNetworkDnsHandshakeReported)
31665            }
31666            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
31667                Some(Self::AtomBluetoothCodePathCounter)
31668            }
31669            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
31670                Some(Self::AtomBluetoothLeBatchScanReportDelay)
31671            }
31672            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
31673                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
31674            }
31675            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
31676                Some(Self::AtomNeuralnetworksCompilationCompleted)
31677            }
31678            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
31679                Some(Self::AtomNeuralnetworksExecutionCompleted)
31680            }
31681            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
31682                Some(Self::AtomNeuralnetworksCompilationFailed)
31683            }
31684            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
31685                Some(Self::AtomNeuralnetworksExecutionFailed)
31686            }
31687            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
31688            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
31689            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
31690                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
31691            }
31692            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
31693                Some(Self::AtomChreCodeDownloadTransacted)
31694            }
31695            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
31696            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
31697            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
31698            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
31699                Some(Self::AtomUwbRangingMeasurementReceived)
31700            }
31701            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
31702                Some(Self::AtomTextClassifierDownloadWorkScheduled)
31703            }
31704            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
31705                Some(Self::AtomTextClassifierDownloadWorkCompleted)
31706            }
31707            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
31708            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
31709            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
31710                Some(Self::AtomNearbyDeviceScanStateChanged)
31711            }
31712            "ATOM_APPLICATION_LOCALES_CHANGED" => {
31713                Some(Self::AtomApplicationLocalesChanged)
31714            }
31715            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
31716                Some(Self::AtomMediametricsAudiotrackstatusReported)
31717            }
31718            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
31719                Some(Self::AtomFoldStateDurationReported)
31720            }
31721            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
31722                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
31723            }
31724            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
31725            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
31726                Some(Self::AtomDisplayHbmBrightnessChanged)
31727            }
31728            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
31729                Some(Self::AtomPersistentUriPermissionsFlushed)
31730            }
31731            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
31732                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
31733            }
31734            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
31735            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
31736            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
31737            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
31738                Some(Self::AtomWearSettingsUiInteracted)
31739            }
31740            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
31741                Some(Self::AtomTracingServiceReportEvent)
31742            }
31743            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
31744                Some(Self::AtomMediametricsAudiorecordstatusReported)
31745            }
31746            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
31747            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
31748            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
31749                Some(Self::AtomWifiP2pConnectionReported)
31750            }
31751            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
31752            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
31753                Some(Self::AtomHotwordDetectorCreateRequested)
31754            }
31755            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
31756                Some(Self::AtomHotwordDetectionServiceInitResultReported)
31757            }
31758            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
31759                Some(Self::AtomHotwordDetectionServiceRestarted)
31760            }
31761            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
31762                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
31763            }
31764            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
31765            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
31766                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
31767            }
31768            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
31769                Some(Self::AtomContactsIndexerUpdateStatsReported)
31770            }
31771            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
31772                Some(Self::AtomAppBackgroundRestrictionsInfo)
31773            }
31774            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
31775                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
31776            }
31777            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
31778                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
31779            }
31780            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
31781                Some(Self::AtomPermissionReminderNotificationInteracted)
31782            }
31783            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
31784                Some(Self::AtomRecentPermissionDecisionsInteracted)
31785            }
31786            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
31787                Some(Self::AtomGnssPsdsDownloadReported)
31788            }
31789            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
31790                Some(Self::AtomLeAudioConnectionSessionReported)
31791            }
31792            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
31793                Some(Self::AtomLeAudioBroadcastSessionReported)
31794            }
31795            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
31796            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
31797                Some(Self::AtomTaskManagerEventReported)
31798            }
31799            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
31800            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
31801                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
31802            }
31803            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
31804                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
31805            }
31806            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
31807                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
31808            }
31809            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
31810                Some(Self::AtomWifiSetupFailureCrashReported)
31811            }
31812            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
31813            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
31814                Some(Self::AtomIsolatedCompilationScheduled)
31815            }
31816            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
31817            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
31818                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
31819            }
31820            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
31821                Some(Self::AtomSystemServerPreWatchdogOccurred)
31822            }
31823            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
31824            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
31825            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
31826                Some(Self::AtomRemoteKeyProvisioningAttempt)
31827            }
31828            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
31829                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
31830            }
31831            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
31832                Some(Self::AtomRemoteKeyProvisioningTiming)
31833            }
31834            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
31835                Some(Self::AtomMediaoutputOpInteractionReport)
31836            }
31837            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
31838            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
31839                Some(Self::AtomAutofillPresentationEventReported)
31840            }
31841            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
31842            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
31843                Some(Self::AtomSafetySourceStateCollected)
31844            }
31845            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
31846                Some(Self::AtomSafetyCenterSystemEventReported)
31847            }
31848            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
31849                Some(Self::AtomSafetyCenterInteractionReported)
31850            }
31851            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
31852                Some(Self::AtomSettingsProviderSettingChanged)
31853            }
31854            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
31855                Some(Self::AtomBroadcastDeliveryEventReported)
31856            }
31857            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
31858                Some(Self::AtomServiceRequestEventReported)
31859            }
31860            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
31861                Some(Self::AtomProviderAcquisitionEventReported)
31862            }
31863            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
31864                Some(Self::AtomBluetoothDeviceNameReported)
31865            }
31866            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
31867            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
31868            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
31869            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
31870                Some(Self::AtomCbReceiverFeatureChanged)
31871            }
31872            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
31873                Some(Self::AtomPrivacySignalNotificationInteraction)
31874            }
31875            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
31876                Some(Self::AtomPrivacySignalIssueCardInteraction)
31877            }
31878            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
31879                Some(Self::AtomPrivacySignalsJobFailure)
31880            }
31881            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
31882            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
31883            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
31884            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
31885            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
31886            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
31887                Some(Self::AtomNetworkDnsServerSupportReported)
31888            }
31889            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
31890            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
31891            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
31892                Some(Self::AtomAmbientBrightnessStatsReported)
31893            }
31894            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
31895                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
31896            }
31897            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
31898                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
31899            }
31900            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
31901                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
31902            }
31903            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
31904                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
31905            }
31906            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
31907            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
31908                Some(Self::AtomDeviceWideJobConstraintChanged)
31909            }
31910            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
31911            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
31912            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
31913            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
31914                Some(Self::AtomSystemDefaultNetworkChanged)
31915            }
31916            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
31917                Some(Self::AtomIwlanSetupDataCallResultReported)
31918            }
31919            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
31920                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
31921            }
31922            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
31923                Some(Self::AtomAirplaneModeSessionReported)
31924            }
31925            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
31926            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
31927            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
31928                Some(Self::AtomPackageInstallationSessionReported)
31929            }
31930            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
31931                Some(Self::AtomDefaultNetworkRematchInfo)
31932            }
31933            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
31934                Some(Self::AtomNetworkSelectionPerformance)
31935            }
31936            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
31937            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
31938                Some(Self::AtomBluetoothDisconnectionReasonReported)
31939            }
31940            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
31941                Some(Self::AtomBluetoothLocalVersionsReported)
31942            }
31943            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
31944                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
31945            }
31946            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
31947                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
31948            }
31949            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
31950            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
31951                Some(Self::AtomBrightnessConfigurationUpdated)
31952            }
31953            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
31954                Some(Self::AtomWearMediaOutputSwitcherLaunched)
31955            }
31956            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
31957                Some(Self::AtomWearMediaOutputSwitcherFinished)
31958            }
31959            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
31960                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
31961            }
31962            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
31963                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
31964            }
31965            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
31966                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
31967            }
31968            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
31969                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
31970            }
31971            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
31972                Some(Self::AtomPackageManagerSnapshotReported)
31973            }
31974            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
31975                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
31976            }
31977            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
31978                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
31979            }
31980            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
31981            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
31982                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
31983            }
31984            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
31985            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
31986                Some(Self::AtomWsWatchFaceFavoriteActionReported)
31987            }
31988            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
31989                Some(Self::AtomWsWatchFaceSetActionReported)
31990            }
31991            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
31992                Some(Self::AtomPackageUninstallationReported)
31993            }
31994            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
31995            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
31996                Some(Self::AtomGameModeConfigurationChanged)
31997            }
31998            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
31999            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
32000                Some(Self::AtomNetworkSliceSessionEnded)
32001            }
32002            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
32003                Some(Self::AtomNetworkSliceDailyDataUsageReported)
32004            }
32005            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
32006            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
32007            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
32008                Some(Self::AtomNfcReaderConflictOccurred)
32009            }
32010            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
32011            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
32012                Some(Self::AtomGetTypeAccessedWithoutPermission)
32013            }
32014            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
32015                Some(Self::AtomMobileBundledAppInfoGathered)
32016            }
32017            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
32018                Some(Self::AtomWsWatchFaceComplicationSetChanged)
32019            }
32020            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
32021            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
32022            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
32023            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
32024            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
32025            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
32026                Some(Self::AtomUnsafeIntentEventReported)
32027            }
32028            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
32029                Some(Self::AtomPerformanceHintSessionReported)
32030            }
32031            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
32032                Some(Self::AtomMediametricsMidiDeviceCloseReported)
32033            }
32034            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
32035            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
32036                Some(Self::AtomHotwordAudioEgressEventReported)
32037            }
32038            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
32039                Some(Self::AtomLocationEnabledStateChanged)
32040            }
32041            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
32042            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
32043                Some(Self::AtomUsbComplianceWarningsReported)
32044            }
32045            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
32046                Some(Self::AtomAppSupportedLocalesChanged)
32047            }
32048            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
32049                Some(Self::AtomMediaProviderVolumeRecoveryReported)
32050            }
32051            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
32052                Some(Self::AtomBiometricPropertiesCollected)
32053            }
32054            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
32055            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
32056            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
32057            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
32058            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
32059                Some(Self::AtomDeviceLogAccessEventReported)
32060            }
32061            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
32062            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
32063            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
32064            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
32065                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
32066            }
32067            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
32068            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
32069            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
32070                Some(Self::AtomWsNotificationBridgemodeUpdated)
32071            }
32072            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
32073                Some(Self::AtomWsNotificationDismissalActioned)
32074            }
32075            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
32076            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
32077            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
32078            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
32079                Some(Self::AtomWifiBytesTransferByFgBg)
32080            }
32081            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
32082            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
32083                Some(Self::AtomMobileBytesTransferByFgBg)
32084            }
32085            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
32086            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
32087            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
32088            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
32089            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
32090            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
32091            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
32092            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
32093            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
32094            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
32095            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
32096            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
32097            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
32098            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
32099            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
32100            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
32101            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
32102            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
32103            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
32104            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
32105            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
32106            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
32107            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
32108            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
32109            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
32110            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
32111            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
32112            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
32113            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
32114            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
32115            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
32116            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
32117            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
32118                Some(Self::AtomOnDevicePowerMeasurement)
32119            }
32120            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
32121                Some(Self::AtomDeviceCalculatedPowerUse)
32122            }
32123            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
32124                Some(Self::AtomProcessMemoryHighWaterMark)
32125            }
32126            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
32127            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
32128            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
32129            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
32130            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
32131                Some(Self::AtomDebugFailingElapsedClock)
32132            }
32133            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
32134            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
32135            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
32136            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
32137            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
32138            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
32139            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
32140            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
32141            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
32142            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
32143                Some(Self::AtomAppsOnExternalStorageInfo)
32144            }
32145            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
32146            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
32147            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
32148            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
32149                Some(Self::AtomProcessSystemIonHeapSize)
32150            }
32151            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
32152                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
32153            }
32154            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
32155                Some(Self::AtomSurfaceflingerStatsLayerInfo)
32156            }
32157            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
32158            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
32159            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
32160            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
32161                Some(Self::AtomDangerousPermissionStateSampled)
32162            }
32163            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
32164            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
32165            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
32166            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
32167                Some(Self::AtomPackageNotificationPreferences)
32168            }
32169            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
32170                Some(Self::AtomPackageNotificationChannelPreferences)
32171            }
32172            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
32173                Some(Self::AtomPackageNotificationChannelGroupPreferences)
32174            }
32175            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
32176            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
32177            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
32178            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
32179            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
32180            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
32181                Some(Self::AtomSupportedRadioAccessFamily)
32182            }
32183            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
32184            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
32185            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
32186            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
32187                Some(Self::AtomBytesTransferByTagAndMetered)
32188            }
32189            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
32190            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
32191                Some(Self::AtomGeneralExternalStorageAccessStats)
32192            }
32193            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
32194            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
32195            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
32196            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
32197            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
32198            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
32199                Some(Self::AtomCellularDataServiceSwitch)
32200            }
32201            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
32202            "ATOM_IMS_REGISTRATION_TERMINATION" => {
32203                Some(Self::AtomImsRegistrationTermination)
32204            }
32205            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
32206            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
32207            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
32208            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
32209            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
32210                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
32211            }
32212            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
32213            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
32214            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
32215            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
32216            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
32217            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
32218            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
32219            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
32220            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
32221            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
32222            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
32223            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
32224            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
32225                Some(Self::AtomBatteryUsageStatsBeforeReset)
32226            }
32227            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
32228                Some(Self::AtomBatteryUsageStatsSinceReset)
32229            }
32230            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
32231                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
32232            }
32233            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
32234                Some(Self::AtomInstalledIncrementalPackage)
32235            }
32236            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
32237            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
32238            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
32239            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
32240                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
32241            }
32242            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
32243                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
32244            }
32245            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
32246                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
32247            }
32248            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
32249                Some(Self::AtomKeystore2AtomWithOverflow)
32250            }
32251            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
32252                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
32253            }
32254            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
32255                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
32256            }
32257            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
32258            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
32259            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
32260            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
32261                Some(Self::AtomAccessibilityShortcutStats)
32262            }
32263            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
32264                Some(Self::AtomAccessibilityFloatingMenuStats)
32265            }
32266            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
32267                Some(Self::AtomDataUsageBytesTransferV2)
32268            }
32269            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
32270            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
32271                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
32272            }
32273            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
32274                Some(Self::AtomCarWatchdogUidIoUsageSummary)
32275            }
32276            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
32277                Some(Self::AtomImsRegistrationFeatureTagStats)
32278            }
32279            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
32280                Some(Self::AtomRcsClientProvisioningStats)
32281            }
32282            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
32283            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
32284            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
32285                Some(Self::AtomSipTransportFeatureTagStats)
32286            }
32287            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
32288            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
32289            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
32290                Some(Self::AtomImsDedicatedBearerListenerEvent)
32291            }
32292            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
32293            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
32294                Some(Self::AtomImsRegistrationServiceDescStats)
32295            }
32296            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
32297            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
32298            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
32299            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
32300            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
32301            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
32302                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
32303            }
32304            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
32305            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
32306                Some(Self::AtomPinnedFileSizesPerPackage)
32307            }
32308            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
32309                Some(Self::AtomPendingIntentsPerPackage)
32310            }
32311            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
32312            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
32313                Some(Self::AtomTelephonyNetworkRequestsV2)
32314            }
32315            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
32316                Some(Self::AtomDeviceTelephonyProperties)
32317            }
32318            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
32319                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
32320            }
32321            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
32322            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
32323            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
32324            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
32325            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
32326            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
32327            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
32328            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
32329                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
32330            }
32331            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
32332            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
32333            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
32334            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
32335                Some(Self::AtomNetworkSliceRequestCount)
32336            }
32337            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
32338            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
32339                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
32340            }
32341            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
32342            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
32343            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
32344            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
32345            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
32346            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
32347                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
32348            }
32349            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
32350            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
32351            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
32352                Some(Self::AtomWifiSelfRecoveryTriggered)
32353            }
32354            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
32355            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
32356            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
32357            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
32358            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
32359            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
32360                Some(Self::AtomWifiAwareResourceUsingChanged)
32361            }
32362            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
32363            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
32364                Some(Self::AtomWifiLocalOnlyRequestReceived)
32365            }
32366            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
32367                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
32368            }
32369            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
32370            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
32371            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
32372            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
32373            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
32374            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
32375                Some(Self::AtomWifiApCapabilitiesReported)
32376            }
32377            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
32378            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
32379                Some(Self::AtomScorerPredictionResultReported)
32380            }
32381            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
32382            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
32383            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
32384            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
32385            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
32386                Some(Self::AtomWifiConfiguredNetworkInfo)
32387            }
32388            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
32389            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
32390            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
32391                Some(Self::AtomFirstOverlayStateChanged)
32392            }
32393            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
32394            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
32395                Some(Self::AtomWsIncomingCallActionReported)
32396            }
32397            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
32398                Some(Self::AtomWsCallDisconnectionReported)
32399            }
32400            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
32401            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
32402                Some(Self::AtomWsCallUserExperienceLatencyReported)
32403            }
32404            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
32405                Some(Self::AtomWsCallInteractionReported)
32406            }
32407            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
32408            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
32409                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
32410            }
32411            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
32412                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
32413            }
32414            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
32415                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
32416            }
32417            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
32418                Some(Self::AtomWsRemoteEventUsageReported)
32419            }
32420            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
32421                Some(Self::AtomWsNotificationManagedDismissalSync)
32422            }
32423            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
32424                Some(Self::AtomWsBugreportEventReported)
32425            }
32426            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
32427                Some(Self::AtomWsStandaloneModeSnapshot)
32428            }
32429            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
32430                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
32431            }
32432            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
32433                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
32434            }
32435            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
32436                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
32437            }
32438            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
32439                Some(Self::AtomWearAdaptiveSuspendStatsReported)
32440            }
32441            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
32442                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
32443            }
32444            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
32445                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
32446            }
32447            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
32448            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
32449            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
32450                Some(Self::AtomWearTimeSyncAttemptCompleted)
32451            }
32452            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
32453            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
32454                Some(Self::AtomWearSetupWizardDeviceStatusReported)
32455            }
32456            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
32457                Some(Self::AtomWearSetupWizardPairingCompleted)
32458            }
32459            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
32460                Some(Self::AtomWearSetupWizardConnectionEstablished)
32461            }
32462            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
32463                Some(Self::AtomWearSetupWizardCheckinCompleted)
32464            }
32465            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
32466                Some(Self::AtomWearSetupWizardCompanionTimeReported)
32467            }
32468            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
32469                Some(Self::AtomWearSetupWizardStatusReported)
32470            }
32471            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
32472                Some(Self::AtomWearSetupWizardHeartbeatReported)
32473            }
32474            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
32475                Some(Self::AtomWearSetupWizardFrpTriggered)
32476            }
32477            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
32478                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
32479            }
32480            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
32481                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
32482            }
32483            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
32484            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
32485            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
32486            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
32487                Some(Self::AtomLayoutExpressionInspected)
32488            }
32489            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
32490                Some(Self::AtomLayoutAnimationsInspected)
32491            }
32492            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
32493                Some(Self::AtomMaterialComponentsInspected)
32494            }
32495            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
32496            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
32497            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
32498            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
32499            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
32500            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
32501                Some(Self::AtomIgnoredInflationFailuresReported)
32502            }
32503            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
32504            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
32505            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
32506            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
32507            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
32508                Some(Self::AtomMediaSessionStateChanged)
32509            }
32510            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
32511                Some(Self::AtomMediaControlApiUsageReported)
32512            }
32513            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
32514            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
32515                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
32516            }
32517            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
32518                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
32519            }
32520            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
32521                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
32522            }
32523            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
32524            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
32525                Some(Self::AtomSysproxyBluetoothBytesTransfer)
32526            }
32527            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
32528                Some(Self::AtomSysproxyConnectionUpdated)
32529            }
32530            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
32531                Some(Self::AtomWearCompanionConnectionState)
32532            }
32533            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
32534                Some(Self::AtomSysproxyServiceStateUpdated)
32535            }
32536            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
32537            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
32538                Some(Self::AtomTestUprobestatsAtomReported)
32539            }
32540            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
32541            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
32542            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
32543                Some(Self::AtomBootIntegrityInfoReported)
32544            }
32545            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
32546                Some(Self::AtomThreadnetworkTelemetryDataReported)
32547            }
32548            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
32549                Some(Self::AtomThreadnetworkTopoEntryRepeated)
32550            }
32551            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
32552                Some(Self::AtomThreadnetworkDeviceInfoReported)
32553            }
32554            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
32555                Some(Self::AtomCellularRadioPowerStateChanged)
32556            }
32557            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
32558            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
32559            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
32560            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
32561            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
32562                Some(Self::AtomCellularIdentifierDisclosed)
32563            }
32564            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
32565            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
32566            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
32567                Some(Self::AtomSatelliteIncomingDatagram)
32568            }
32569            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
32570                Some(Self::AtomSatelliteOutgoingDatagram)
32571            }
32572            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
32573            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
32574                Some(Self::AtomSatelliteSosMessageRecommender)
32575            }
32576            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
32577                Some(Self::AtomCarrierRoamingSatelliteSession)
32578            }
32579            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
32580                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
32581            }
32582            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
32583                Some(Self::AtomControllerStatsPerPackage)
32584            }
32585            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
32586            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
32587            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
32588                Some(Self::AtomSatelliteAccessController)
32589            }
32590            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
32591            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
32592            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
32593                Some(Self::AtomQnsFallbackRestrictionChanged)
32594            }
32595            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
32596                Some(Self::AtomQnsRatPreferenceMismatchInfo)
32597            }
32598            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
32599            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
32600            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
32601                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
32602            }
32603            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
32604            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
32605            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
32606            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
32607            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
32608            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
32609                Some(Self::AtomLockscreenShortcutSelected)
32610            }
32611            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
32612                Some(Self::AtomLockscreenShortcutTriggered)
32613            }
32614            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
32615                Some(Self::AtomLauncherImpressionEventV2)
32616            }
32617            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
32618                Some(Self::AtomDisplaySwitchLatencyTracked)
32619            }
32620            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
32621                Some(Self::AtomNotificationListenerService)
32622            }
32623            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
32624            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
32625                Some(Self::AtomCommunalHubWidgetEventReported)
32626            }
32627            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
32628                Some(Self::AtomPeripheralTutorialLaunched)
32629            }
32630            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
32631                Some(Self::AtomContextualEducationTriggered)
32632            }
32633            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
32634            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
32635                Some(Self::AtomTestExtensionAtomReported)
32636            }
32637            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
32638                Some(Self::AtomTestRestrictedAtomReported)
32639            }
32640            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
32641            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
32642            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
32643            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
32644            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
32645                Some(Self::AtomSandboxActivityEventOccurred)
32646            }
32647            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
32648                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
32649            }
32650            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
32651            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
32652            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
32653            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
32654            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
32655            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
32656            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
32657            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
32658            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
32659                Some(Self::AtomMediaProviderDatabaseRollbackReported)
32660            }
32661            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
32662                Some(Self::AtomBackupSetupStatusReported)
32663            }
32664            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
32665            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
32666                Some(Self::AtomScreenTimeoutOverrideReported)
32667            }
32668            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
32669                Some(Self::AtomScreenInteractiveSessionReported)
32670            }
32671            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
32672            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
32673            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
32674            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
32675                Some(Self::AtomPhotopickerSessionInfoReported)
32676            }
32677            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
32678                Some(Self::AtomPhotopickerApiInfoReported)
32679            }
32680            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
32681                Some(Self::AtomPhotopickerUiEventLogged)
32682            }
32683            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
32684                Some(Self::AtomPhotopickerMediaItemStatusReported)
32685            }
32686            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
32687                Some(Self::AtomPhotopickerPreviewInfoLogged)
32688            }
32689            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
32690                Some(Self::AtomPhotopickerMenuInteractionLogged)
32691            }
32692            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
32693                Some(Self::AtomPhotopickerBannerInteractionLogged)
32694            }
32695            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
32696                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
32697            }
32698            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
32699                Some(Self::AtomPhotopickerPageInfoLogged)
32700            }
32701            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
32702                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
32703            }
32704            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
32705                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
32706            }
32707            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
32708                Some(Self::AtomPhotopickerSearchInfoReported)
32709            }
32710            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
32711                Some(Self::AtomSearchDataExtractionDetailsReported)
32712            }
32713            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
32714                Some(Self::AtomEmbeddedPhotopickerInfoReported)
32715            }
32716            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
32717                Some(Self::AtomPermissionRationaleDialogViewed)
32718            }
32719            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
32720                Some(Self::AtomPermissionRationaleDialogActionReported)
32721            }
32722            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
32723                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
32724            }
32725            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
32726                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
32727            }
32728            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
32729                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
32730            }
32731            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
32732                Some(Self::AtomEnhancedConfirmationDialogResultReported)
32733            }
32734            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
32735                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
32736            }
32737            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
32738            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
32739            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
32740            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
32741            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
32742                Some(Self::AtomComponentStateChangedReported)
32743            }
32744            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
32745                Some(Self::AtomOndevicepersonalizationApiCalled)
32746            }
32747            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
32748                Some(Self::AtomOndevicepersonalizationTraceEvent)
32749            }
32750            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
32751                Some(Self::AtomNfcObserveModeStateChanged)
32752            }
32753            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
32754            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
32755                Some(Self::AtomNfcPollingLoopNotificationReported)
32756            }
32757            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
32758                Some(Self::AtomNfcProprietaryCapabilitiesReported)
32759            }
32760            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
32761                Some(Self::AtomNfcExitFrameTableChanged)
32762            }
32763            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
32764            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
32765                Some(Self::AtomMicroxrDeviceBootCompleteReported)
32766            }
32767            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
32768            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
32769            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
32770            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
32771            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
32772            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
32773                Some(Self::AtomMediaEditingEndedReported)
32774            }
32775            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
32776                Some(Self::AtomMediaCodecReclaimRequestCompleted)
32777            }
32778            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
32779            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
32780            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
32781            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
32782            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
32783                Some(Self::AtomChreSignificantMotionStateChanged)
32784            }
32785            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
32786                Some(Self::AtomPopulationDensityProviderLoadingReported)
32787            }
32788            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
32789                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
32790            }
32791            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
32792                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
32793            }
32794            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
32795            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
32796            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
32797                Some(Self::AtomKeyboardSystemsEventReported)
32798            }
32799            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
32800            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
32801                Some(Self::AtomInputEventLatencyReported)
32802            }
32803            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
32804            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
32805            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
32806                Some(Self::AtomIkeLivenessCheckSessionValidated)
32807            }
32808            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
32809                Some(Self::AtomNegotiatedSecurityAssociation)
32810            }
32811            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
32812                Some(Self::AtomHotwordEgressSizeAtomReported)
32813            }
32814            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
32815                Some(Self::AtomHealthConnectUiImpression)
32816            }
32817            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
32818                Some(Self::AtomHealthConnectUiInteraction)
32819            }
32820            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
32821                Some(Self::AtomHealthConnectAppOpenedReported)
32822            }
32823            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
32824            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
32825            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
32826                Some(Self::AtomHealthConnectStorageStats)
32827            }
32828            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
32829            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
32830            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
32831                Some(Self::AtomHealthConnectExportInvoked)
32832            }
32833            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
32834                Some(Self::AtomHealthConnectImportInvoked)
32835            }
32836            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
32837                Some(Self::AtomHealthConnectExportImportStatsReported)
32838            }
32839            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
32840                Some(Self::AtomHealthConnectPermissionStats)
32841            }
32842            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
32843                Some(Self::AtomHealthConnectPhrApiInvoked)
32844            }
32845            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
32846                Some(Self::AtomHealthConnectPhrUsageStats)
32847            }
32848            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
32849                Some(Self::AtomHealthConnectPhrStorageStats)
32850            }
32851            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
32852                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
32853            }
32854            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
32855                Some(Self::AtomHealthConnectEcosystemStats)
32856            }
32857            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
32858            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
32859                Some(Self::AtomHdmiSoundbarModeStatusReported)
32860            }
32861            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
32862                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
32863            }
32864            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
32865            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
32866            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
32867            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
32868                Some(Self::AtomApplicationGrammaticalInflectionChanged)
32869            }
32870            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
32871                Some(Self::AtomSystemGrammaticalInflectionChanged)
32872            }
32873            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
32874                Some(Self::AtomFullScreenIntentLaunched)
32875            }
32876            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
32877            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
32878            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
32879            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
32880            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
32881                Some(Self::AtomStylusPredictionMetricsReported)
32882            }
32883            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
32884            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
32885                Some(Self::AtomMediaProjectionStateChanged)
32886            }
32887            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
32888                Some(Self::AtomMediaProjectionTargetChanged)
32889            }
32890            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
32891                Some(Self::AtomExcessiveBinderProxyCountReported)
32892            }
32893            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
32894                Some(Self::AtomProxyBytesTransferByFgBg)
32895            }
32896            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
32897                Some(Self::AtomMobileBytesTransferByProcState)
32898            }
32899            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
32900            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
32901                Some(Self::AtomSensitiveContentMediaProjectionSession)
32902            }
32903            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
32904                Some(Self::AtomSensitiveNotificationAppProtectionSession)
32905            }
32906            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
32907                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
32908            }
32909            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
32910                Some(Self::AtomSensitiveNotificationRedaction)
32911            }
32912            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
32913                Some(Self::AtomSensitiveContentAppProtection)
32914            }
32915            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
32916                Some(Self::AtomAppRestrictionStateChanged)
32917            }
32918            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
32919            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
32920            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
32921                Some(Self::AtomPowerSaveTempAllowlistChanged)
32922            }
32923            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
32924            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
32925                Some(Self::AtomContentOrFileUriEventReported)
32926            }
32927            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
32928                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
32929            }
32930            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
32931                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
32932            }
32933            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
32934            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
32935                Some(Self::AtomJankFrameCountByWidgetReported)
32936            }
32937            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
32938            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
32939                Some(Self::AtomNotificationChannelClassification)
32940            }
32941            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
32942                Some(Self::AtomCameraStatusForCompatibilityChanged)
32943            }
32944            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
32945                Some(Self::AtomFederatedComputeApiCalled)
32946            }
32947            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
32948                Some(Self::AtomFederatedComputeTrainingEventReported)
32949            }
32950            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
32951                Some(Self::AtomExampleIteratorNextLatencyReported)
32952            }
32953            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
32954                Some(Self::AtomFederatedComputeTraceEventReported)
32955            }
32956            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
32957            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
32958                Some(Self::AtomExpressHistogramSampleReported)
32959            }
32960            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
32961            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
32962                Some(Self::AtomExpressUidHistogramSampleReported)
32963            }
32964            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
32965            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
32966            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
32967            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
32968                Some(Self::AtomExternalDisplayStateChanged)
32969            }
32970            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
32971                Some(Self::AtomDisplayModeDirectorVoteChanged)
32972            }
32973            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
32974                Some(Self::AtomDevicePolicyManagementMode)
32975            }
32976            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
32977            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
32978                Some(Self::AtomDeviceLockCheckInRequestReported)
32979            }
32980            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
32981                Some(Self::AtomDeviceLockProvisioningCompleteReported)
32982            }
32983            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
32984                Some(Self::AtomDeviceLockKioskAppRequestReported)
32985            }
32986            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
32987                Some(Self::AtomDeviceLockCheckInRetryReported)
32988            }
32989            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
32990                Some(Self::AtomDeviceLockProvisionFailureReported)
32991            }
32992            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
32993                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
32994            }
32995            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
32996            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
32997                Some(Self::AtomDesktopModeSessionTaskUpdate)
32998            }
32999            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
33000                Some(Self::AtomDesktopModeTaskSizeUpdated)
33001            }
33002            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
33003            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
33004            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
33005                Some(Self::AtomCronetEngineBuilderInitialized)
33006            }
33007            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
33008                Some(Self::AtomCronetHttpFlagsInitialized)
33009            }
33010            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
33011            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
33012                Some(Self::AtomCredentialManagerApiCalled)
33013            }
33014            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
33015                Some(Self::AtomCredentialManagerInitPhaseReported)
33016            }
33017            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
33018                Some(Self::AtomCredentialManagerCandidatePhaseReported)
33019            }
33020            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
33021                Some(Self::AtomCredentialManagerFinalPhaseReported)
33022            }
33023            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
33024                Some(Self::AtomCredentialManagerTotalReported)
33025            }
33026            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
33027                Some(Self::AtomCredentialManagerFinalnouidReported)
33028            }
33029            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
33030                Some(Self::AtomCredentialManagerGetReported)
33031            }
33032            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
33033                Some(Self::AtomCredentialManagerAuthClickReported)
33034            }
33035            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
33036                Some(Self::AtomCredentialManagerApiv2Called)
33037            }
33038            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
33039            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
33040                Some(Self::AtomVpnConnectionStateChanged)
33041            }
33042            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
33043            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
33044            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
33045            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
33046                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
33047            }
33048            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
33049                Some(Self::AtomNetworkStatsRecorderFileOperated)
33050            }
33051            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
33052                Some(Self::AtomDailyKeepaliveInfoReported)
33053            }
33054            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
33055                Some(Self::AtomNetworkRequestStateChanged)
33056            }
33057            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
33058                Some(Self::AtomTetheringActiveSessionsReported)
33059            }
33060            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
33061                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
33062            }
33063            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
33064            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
33065            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
33066            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
33067            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
33068                Some(Self::AtomCertificateTransparencyLogListStateChanged)
33069            }
33070            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
33071            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
33072                Some(Self::AtomCertificateTransparencyVerificationReported)
33073            }
33074            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
33075                Some(Self::AtomCameraFeatureCombinationQueryEvent)
33076            }
33077            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
33078            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
33079                Some(Self::AtomBluetoothHashedDeviceNameReported)
33080            }
33081            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
33082                Some(Self::AtomBluetoothL2capCocClientConnection)
33083            }
33084            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
33085                Some(Self::AtomBluetoothL2capCocServerConnection)
33086            }
33087            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
33088                Some(Self::AtomBluetoothLeSessionConnected)
33089            }
33090            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
33091                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
33092            }
33093            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
33094                Some(Self::AtomBluetoothProfileConnectionAttempted)
33095            }
33096            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
33097                Some(Self::AtomBluetoothContentProfileErrorReported)
33098            }
33099            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
33100                Some(Self::AtomBluetoothRfcommConnectionAttempted)
33101            }
33102            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
33103                Some(Self::AtomRemoteDeviceInformationWithMetricId)
33104            }
33105            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
33106            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
33107            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
33108            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
33109            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
33110            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
33111            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
33112            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
33113                Some(Self::AtomBluetoothCrossLayerEventReported)
33114            }
33115            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
33116                Some(Self::AtomBroadcastAudioSessionReported)
33117            }
33118            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
33119                Some(Self::AtomBroadcastAudioSyncReported)
33120            }
33121            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
33122                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
33123            }
33124            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
33125            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
33126                Some(Self::AtomHearingDeviceActiveEventReported)
33127            }
33128            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
33129                Some(Self::AtomBackportedFixStatusReported)
33130            }
33131            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
33132            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
33133                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
33134            }
33135            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
33136                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
33137            }
33138            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
33139            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
33140                Some(Self::AtomCarWakeupFromSuspendReported)
33141            }
33142            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
33143            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
33144                Some(Self::AtomCarCalmModeEventReported)
33145            }
33146            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
33147            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
33148                Some(Self::AtomAutofillFillRequestReported)
33149            }
33150            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
33151                Some(Self::AtomAutofillFillResponseReported)
33152            }
33153            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
33154                Some(Self::AtomAutofillSaveEventReported)
33155            }
33156            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
33157            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
33158                Some(Self::AtomAutofillFieldClassificationEventReported)
33159            }
33160            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
33161            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
33162            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
33163                Some(Self::AtomBackgroundDexoptJobEnded)
33164            }
33165            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
33166            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
33167            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
33168            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
33169            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
33170            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
33171            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
33172                Some(Self::AtomAppSearchSetSchemaStatsReported)
33173            }
33174            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
33175                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
33176            }
33177            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
33178                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
33179            }
33180            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
33181                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
33182            }
33183            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
33184                Some(Self::AtomAppSearchAppsIndexerStatsReported)
33185            }
33186            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
33187                Some(Self::AtomAppFunctionsRequestReported)
33188            }
33189            "ATOM_APEX_INSTALLATION_REQUESTED" => {
33190                Some(Self::AtomApexInstallationRequested)
33191            }
33192            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
33193            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
33194            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
33195                Some(Self::AtomAiWallpapersButtonPressed)
33196            }
33197            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
33198                Some(Self::AtomAiWallpapersTemplateSelected)
33199            }
33200            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
33201                Some(Self::AtomAiWallpapersTermSelected)
33202            }
33203            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
33204                Some(Self::AtomAiWallpapersWallpaperSet)
33205            }
33206            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
33207                Some(Self::AtomAiWallpapersSessionSummary)
33208            }
33209            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
33210                Some(Self::AtomJsscriptengineLatencyReported)
33211            }
33212            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
33213            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
33214                Some(Self::AtomAdServicesMesurementReportsUploaded)
33215            }
33216            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
33217                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
33218            }
33219            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
33220                Some(Self::AtomMobileDataDownloadDownloadResultReported)
33221            }
33222            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
33223                Some(Self::AtomAdServicesSettingsUsageReported)
33224            }
33225            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
33226                Some(Self::AtomBackgroundFetchProcessReported)
33227            }
33228            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
33229                Some(Self::AtomUpdateCustomAudienceProcessReported)
33230            }
33231            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
33232                Some(Self::AtomRunAdBiddingProcessReported)
33233            }
33234            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
33235                Some(Self::AtomRunAdScoringProcessReported)
33236            }
33237            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
33238                Some(Self::AtomRunAdSelectionProcessReported)
33239            }
33240            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
33241                Some(Self::AtomRunAdBiddingPerCaProcessReported)
33242            }
33243            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
33244                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
33245            }
33246            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
33247                Some(Self::AtomAdServicesMeasurementRegistrations)
33248            }
33249            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
33250                Some(Self::AtomAdServicesGetTopicsReported)
33251            }
33252            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
33253                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
33254            }
33255            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
33256                Some(Self::AtomAdServicesEpochComputationClassifierReported)
33257            }
33258            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
33259                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
33260            }
33261            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
33262                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
33263            }
33264            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
33265                Some(Self::AtomAdServicesMeasurementDebugKeys)
33266            }
33267            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
33268            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
33269                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
33270            }
33271            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
33272                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
33273            }
33274            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
33275                Some(Self::AtomAdServicesMeasurementAttribution)
33276            }
33277            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
33278                Some(Self::AtomAdServicesMeasurementJobs)
33279            }
33280            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
33281                Some(Self::AtomAdServicesMeasurementWipeout)
33282            }
33283            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
33284                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
33285            }
33286            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
33287                Some(Self::AtomAdServicesEnrollmentDataStored)
33288            }
33289            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
33290                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
33291            }
33292            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
33293                Some(Self::AtomAdServicesEnrollmentMatched)
33294            }
33295            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
33296                Some(Self::AtomAdServicesConsentMigrated)
33297            }
33298            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
33299                Some(Self::AtomAdServicesEnrollmentFailed)
33300            }
33301            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
33302                Some(Self::AtomAdServicesMeasurementClickVerification)
33303            }
33304            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
33305                Some(Self::AtomAdServicesEncryptionKeyFetched)
33306            }
33307            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
33308                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
33309            }
33310            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
33311                Some(Self::AtomDestinationRegisteredBeacons)
33312            }
33313            "ATOM_REPORT_INTERACTION_API_CALLED" => {
33314                Some(Self::AtomReportInteractionApiCalled)
33315            }
33316            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
33317                Some(Self::AtomInteractionReportingTableCleared)
33318            }
33319            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
33320                Some(Self::AtomAppManifestConfigHelperCalled)
33321            }
33322            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
33323                Some(Self::AtomAdFilteringProcessJoinCaReported)
33324            }
33325            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
33326                Some(Self::AtomAdFilteringProcessAdSelectionReported)
33327            }
33328            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
33329                Some(Self::AtomAdCounterHistogramUpdaterReported)
33330            }
33331            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
33332            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
33333                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
33334            }
33335            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
33336                Some(Self::AtomKAnonBackgroundJobStatusReported)
33337            }
33338            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
33339                Some(Self::AtomKAnonInitializeStatusReported)
33340            }
33341            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
33342            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
33343            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
33344                Some(Self::AtomKAnonKeyAttestationStatusReported)
33345            }
33346            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
33347                Some(Self::AtomGetAdSelectionDataApiCalled)
33348            }
33349            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
33350                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
33351            }
33352            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
33353                Some(Self::AtomBackgroundJobSchedulingReported)
33354            }
33355            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
33356                Some(Self::AtomTopicsEncryptionEpochComputationReported)
33357            }
33358            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
33359                Some(Self::AtomTopicsEncryptionGetTopicsReported)
33360            }
33361            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
33362                Some(Self::AtomAdservicesShellCommandCalled)
33363            }
33364            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
33365            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
33366            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
33367            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
33368            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
33369                Some(Self::AtomPersistAdSelectionResultCalled)
33370            }
33371            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
33372                Some(Self::AtomServerAuctionKeyFetchCalled)
33373            }
33374            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
33375                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
33376            }
33377            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
33378                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
33379            }
33380            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
33381                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
33382            }
33383            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
33384                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
33385            }
33386            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
33387                Some(Self::AtomReportImpressionApiCalled)
33388            }
33389            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
33390                Some(Self::AtomAdServicesEnrollmentTransactionStats)
33391            }
33392            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
33393                Some(Self::AtomAdServicesCobaltLoggerEventReported)
33394            }
33395            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
33396                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
33397            }
33398            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
33399                Some(Self::AtomUpdateSignalsProcessReported)
33400            }
33401            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
33402                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
33403            }
33404            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
33405                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
33406            }
33407            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
33408                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
33409            }
33410            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
33411                Some(
33412                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
33413                )
33414            }
33415            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
33416                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
33417            }
33418            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
33419            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
33420            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
33421                Some(Self::AtomThermalHeadroomThresholdsCalled)
33422            }
33423            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
33424                Some(Self::AtomAdpfHintSessionTidCleanup)
33425            }
33426            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
33427                Some(Self::AtomThermalHeadroomThresholds)
33428            }
33429            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
33430            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
33431                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
33432            }
33433            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
33434            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
33435                Some(Self::AtomAccessibilityCheckResultReported)
33436            }
33437            _ => None,
33438        }
33439    }
33440}
33441/// Counter definitions for Linux's /proc/meminfo.
33442#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
33443#[repr(i32)]
33444pub enum MeminfoCounters {
33445    MeminfoUnspecified = 0,
33446    MeminfoMemTotal = 1,
33447    MeminfoMemFree = 2,
33448    MeminfoMemAvailable = 3,
33449    MeminfoBuffers = 4,
33450    MeminfoCached = 5,
33451    MeminfoSwapCached = 6,
33452    MeminfoActive = 7,
33453    MeminfoInactive = 8,
33454    MeminfoActiveAnon = 9,
33455    MeminfoInactiveAnon = 10,
33456    MeminfoActiveFile = 11,
33457    MeminfoInactiveFile = 12,
33458    MeminfoUnevictable = 13,
33459    MeminfoMlocked = 14,
33460    MeminfoSwapTotal = 15,
33461    MeminfoSwapFree = 16,
33462    MeminfoDirty = 17,
33463    MeminfoWriteback = 18,
33464    MeminfoAnonPages = 19,
33465    MeminfoMapped = 20,
33466    MeminfoShmem = 21,
33467    MeminfoSlab = 22,
33468    MeminfoSlabReclaimable = 23,
33469    MeminfoSlabUnreclaimable = 24,
33470    MeminfoKernelStack = 25,
33471    MeminfoPageTables = 26,
33472    MeminfoCommitLimit = 27,
33473    MeminfoCommitedAs = 28,
33474    MeminfoVmallocTotal = 29,
33475    MeminfoVmallocUsed = 30,
33476    MeminfoVmallocChunk = 31,
33477    MeminfoCmaTotal = 32,
33478    MeminfoCmaFree = 33,
33479    MeminfoGpu = 34,
33480    MeminfoZram = 35,
33481    MeminfoMisc = 36,
33482    MeminfoIonHeap = 37,
33483    MeminfoIonHeapPool = 38,
33484}
33485impl MeminfoCounters {
33486    /// String value of the enum field names used in the ProtoBuf definition.
33487    ///
33488    /// The values are not transformed in any way and thus are considered stable
33489    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
33490    pub fn as_str_name(&self) -> &'static str {
33491        match self {
33492            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
33493            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
33494            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
33495            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
33496            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
33497            Self::MeminfoCached => "MEMINFO_CACHED",
33498            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
33499            Self::MeminfoActive => "MEMINFO_ACTIVE",
33500            Self::MeminfoInactive => "MEMINFO_INACTIVE",
33501            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
33502            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
33503            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
33504            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
33505            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
33506            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
33507            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
33508            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
33509            Self::MeminfoDirty => "MEMINFO_DIRTY",
33510            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
33511            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
33512            Self::MeminfoMapped => "MEMINFO_MAPPED",
33513            Self::MeminfoShmem => "MEMINFO_SHMEM",
33514            Self::MeminfoSlab => "MEMINFO_SLAB",
33515            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
33516            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
33517            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
33518            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
33519            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
33520            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
33521            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
33522            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
33523            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
33524            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
33525            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
33526            Self::MeminfoGpu => "MEMINFO_GPU",
33527            Self::MeminfoZram => "MEMINFO_ZRAM",
33528            Self::MeminfoMisc => "MEMINFO_MISC",
33529            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
33530            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
33531        }
33532    }
33533    /// Creates an enum from field names used in the ProtoBuf definition.
33534    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
33535        match value {
33536            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
33537            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
33538            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
33539            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
33540            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
33541            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
33542            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
33543            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
33544            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
33545            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
33546            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
33547            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
33548            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
33549            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
33550            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
33551            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
33552            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
33553            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
33554            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
33555            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
33556            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
33557            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
33558            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
33559            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
33560            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
33561            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
33562            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
33563            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
33564            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
33565            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
33566            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
33567            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
33568            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
33569            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
33570            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
33571            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
33572            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
33573            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
33574            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
33575            _ => None,
33576        }
33577    }
33578}
33579/// Counter definitions for Linux's /proc/vmstat.
33580#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
33581#[repr(i32)]
33582pub enum VmstatCounters {
33583    VmstatUnspecified = 0,
33584    VmstatNrFreePages = 1,
33585    VmstatNrAllocBatch = 2,
33586    VmstatNrInactiveAnon = 3,
33587    VmstatNrActiveAnon = 4,
33588    VmstatNrInactiveFile = 5,
33589    VmstatNrActiveFile = 6,
33590    VmstatNrUnevictable = 7,
33591    VmstatNrMlock = 8,
33592    VmstatNrAnonPages = 9,
33593    VmstatNrMapped = 10,
33594    VmstatNrFilePages = 11,
33595    VmstatNrDirty = 12,
33596    VmstatNrWriteback = 13,
33597    VmstatNrSlabReclaimable = 14,
33598    VmstatNrSlabUnreclaimable = 15,
33599    VmstatNrPageTablePages = 16,
33600    VmstatNrKernelStack = 17,
33601    VmstatNrOverhead = 18,
33602    VmstatNrUnstable = 19,
33603    VmstatNrBounce = 20,
33604    VmstatNrVmscanWrite = 21,
33605    VmstatNrVmscanImmediateReclaim = 22,
33606    VmstatNrWritebackTemp = 23,
33607    VmstatNrIsolatedAnon = 24,
33608    VmstatNrIsolatedFile = 25,
33609    VmstatNrShmem = 26,
33610    VmstatNrDirtied = 27,
33611    VmstatNrWritten = 28,
33612    VmstatNrPagesScanned = 29,
33613    VmstatWorkingsetRefault = 30,
33614    VmstatWorkingsetActivate = 31,
33615    VmstatWorkingsetNodereclaim = 32,
33616    VmstatNrAnonTransparentHugepages = 33,
33617    VmstatNrFreeCma = 34,
33618    VmstatNrSwapcache = 35,
33619    VmstatNrDirtyThreshold = 36,
33620    VmstatNrDirtyBackgroundThreshold = 37,
33621    VmstatPgpgin = 38,
33622    VmstatPgpgout = 39,
33623    VmstatPgpgoutclean = 40,
33624    VmstatPswpin = 41,
33625    VmstatPswpout = 42,
33626    VmstatPgallocDma = 43,
33627    VmstatPgallocNormal = 44,
33628    VmstatPgallocMovable = 45,
33629    VmstatPgfree = 46,
33630    VmstatPgactivate = 47,
33631    VmstatPgdeactivate = 48,
33632    VmstatPgfault = 49,
33633    VmstatPgmajfault = 50,
33634    VmstatPgrefillDma = 51,
33635    VmstatPgrefillNormal = 52,
33636    VmstatPgrefillMovable = 53,
33637    VmstatPgstealKswapdDma = 54,
33638    VmstatPgstealKswapdNormal = 55,
33639    VmstatPgstealKswapdMovable = 56,
33640    VmstatPgstealDirectDma = 57,
33641    VmstatPgstealDirectNormal = 58,
33642    VmstatPgstealDirectMovable = 59,
33643    VmstatPgscanKswapdDma = 60,
33644    VmstatPgscanKswapdNormal = 61,
33645    VmstatPgscanKswapdMovable = 62,
33646    VmstatPgscanDirectDma = 63,
33647    VmstatPgscanDirectNormal = 64,
33648    VmstatPgscanDirectMovable = 65,
33649    VmstatPgscanDirectThrottle = 66,
33650    VmstatPginodesteal = 67,
33651    VmstatSlabsScanned = 68,
33652    VmstatKswapdInodesteal = 69,
33653    VmstatKswapdLowWmarkHitQuickly = 70,
33654    VmstatKswapdHighWmarkHitQuickly = 71,
33655    VmstatPageoutrun = 72,
33656    VmstatAllocstall = 73,
33657    VmstatPgrotated = 74,
33658    VmstatDropPagecache = 75,
33659    VmstatDropSlab = 76,
33660    VmstatPgmigrateSuccess = 77,
33661    VmstatPgmigrateFail = 78,
33662    VmstatCompactMigrateScanned = 79,
33663    VmstatCompactFreeScanned = 80,
33664    VmstatCompactIsolated = 81,
33665    VmstatCompactStall = 82,
33666    VmstatCompactFail = 83,
33667    VmstatCompactSuccess = 84,
33668    VmstatCompactDaemonWake = 85,
33669    VmstatUnevictablePgsCulled = 86,
33670    VmstatUnevictablePgsScanned = 87,
33671    VmstatUnevictablePgsRescued = 88,
33672    VmstatUnevictablePgsMlocked = 89,
33673    VmstatUnevictablePgsMunlocked = 90,
33674    VmstatUnevictablePgsCleared = 91,
33675    VmstatUnevictablePgsStranded = 92,
33676    VmstatNrZspages = 93,
33677    VmstatNrIonHeap = 94,
33678    VmstatNrGpuHeap = 95,
33679    VmstatAllocstallDma = 96,
33680    VmstatAllocstallMovable = 97,
33681    VmstatAllocstallNormal = 98,
33682    VmstatCompactDaemonFreeScanned = 99,
33683    VmstatCompactDaemonMigrateScanned = 100,
33684    VmstatNrFastrpc = 101,
33685    VmstatNrIndirectlyReclaimable = 102,
33686    VmstatNrIonHeapPool = 103,
33687    VmstatNrKernelMiscReclaimable = 104,
33688    VmstatNrShadowCallStackBytes = 105,
33689    VmstatNrShmemHugepages = 106,
33690    VmstatNrShmemPmdmapped = 107,
33691    VmstatNrUnreclaimablePages = 108,
33692    VmstatNrZoneActiveAnon = 109,
33693    VmstatNrZoneActiveFile = 110,
33694    VmstatNrZoneInactiveAnon = 111,
33695    VmstatNrZoneInactiveFile = 112,
33696    VmstatNrZoneUnevictable = 113,
33697    VmstatNrZoneWritePending = 114,
33698    VmstatOomKill = 115,
33699    VmstatPglazyfree = 116,
33700    VmstatPglazyfreed = 117,
33701    VmstatPgrefill = 118,
33702    VmstatPgscanDirect = 119,
33703    VmstatPgscanKswapd = 120,
33704    VmstatPgskipDma = 121,
33705    VmstatPgskipMovable = 122,
33706    VmstatPgskipNormal = 123,
33707    VmstatPgstealDirect = 124,
33708    VmstatPgstealKswapd = 125,
33709    VmstatSwapRa = 126,
33710    VmstatSwapRaHit = 127,
33711    VmstatWorkingsetRestore = 128,
33712    VmstatAllocstallDevice = 129,
33713    VmstatAllocstallDma32 = 130,
33714    VmstatBalloonDeflate = 131,
33715    VmstatBalloonInflate = 132,
33716    VmstatBalloonMigrate = 133,
33717    VmstatCmaAllocFail = 134,
33718    VmstatCmaAllocSuccess = 135,
33719    VmstatNrFileHugepages = 136,
33720    VmstatNrFilePmdmapped = 137,
33721    VmstatNrFollPinAcquired = 138,
33722    VmstatNrFollPinReleased = 139,
33723    VmstatNrSecPageTablePages = 140,
33724    VmstatNrShadowCallStack = 141,
33725    VmstatNrSwapcached = 142,
33726    VmstatNrThrottledWritten = 143,
33727    VmstatPgallocDevice = 144,
33728    VmstatPgallocDma32 = 145,
33729    VmstatPgdemoteDirect = 146,
33730    VmstatPgdemoteKswapd = 147,
33731    VmstatPgreuse = 148,
33732    VmstatPgscanAnon = 149,
33733    VmstatPgscanFile = 150,
33734    VmstatPgskipDevice = 151,
33735    VmstatPgskipDma32 = 152,
33736    VmstatPgstealAnon = 153,
33737    VmstatPgstealFile = 154,
33738    VmstatThpCollapseAlloc = 155,
33739    VmstatThpCollapseAllocFailed = 156,
33740    VmstatThpDeferredSplitPage = 157,
33741    VmstatThpFaultAlloc = 158,
33742    VmstatThpFaultFallback = 159,
33743    VmstatThpFaultFallbackCharge = 160,
33744    VmstatThpFileAlloc = 161,
33745    VmstatThpFileFallback = 162,
33746    VmstatThpFileFallbackCharge = 163,
33747    VmstatThpFileMapped = 164,
33748    VmstatThpMigrationFail = 165,
33749    VmstatThpMigrationSplit = 166,
33750    VmstatThpMigrationSuccess = 167,
33751    VmstatThpScanExceedNonePte = 168,
33752    VmstatThpScanExceedSharePte = 169,
33753    VmstatThpScanExceedSwapPte = 170,
33754    VmstatThpSplitPage = 171,
33755    VmstatThpSplitPageFailed = 172,
33756    VmstatThpSplitPmd = 173,
33757    VmstatThpSwpout = 174,
33758    VmstatThpSwpoutFallback = 175,
33759    VmstatThpZeroPageAlloc = 176,
33760    VmstatThpZeroPageAllocFailed = 177,
33761    VmstatVmaLockAbort = 178,
33762    VmstatVmaLockMiss = 179,
33763    VmstatVmaLockRetry = 180,
33764    VmstatVmaLockSuccess = 181,
33765    VmstatWorkingsetActivateAnon = 182,
33766    VmstatWorkingsetActivateFile = 183,
33767    VmstatWorkingsetNodes = 184,
33768    VmstatWorkingsetRefaultAnon = 185,
33769    VmstatWorkingsetRefaultFile = 186,
33770    VmstatWorkingsetRestoreAnon = 187,
33771    VmstatWorkingsetRestoreFile = 188,
33772}
33773impl VmstatCounters {
33774    /// String value of the enum field names used in the ProtoBuf definition.
33775    ///
33776    /// The values are not transformed in any way and thus are considered stable
33777    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
33778    pub fn as_str_name(&self) -> &'static str {
33779        match self {
33780            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
33781            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
33782            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
33783            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
33784            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
33785            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
33786            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
33787            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
33788            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
33789            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
33790            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
33791            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
33792            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
33793            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
33794            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
33795            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
33796            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
33797            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
33798            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
33799            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
33800            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
33801            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
33802            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
33803            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
33804            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
33805            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
33806            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
33807            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
33808            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
33809            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
33810            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
33811            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
33812            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
33813            Self::VmstatNrAnonTransparentHugepages => {
33814                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
33815            }
33816            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
33817            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
33818            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
33819            Self::VmstatNrDirtyBackgroundThreshold => {
33820                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
33821            }
33822            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
33823            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
33824            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
33825            Self::VmstatPswpin => "VMSTAT_PSWPIN",
33826            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
33827            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
33828            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
33829            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
33830            Self::VmstatPgfree => "VMSTAT_PGFREE",
33831            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
33832            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
33833            Self::VmstatPgfault => "VMSTAT_PGFAULT",
33834            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
33835            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
33836            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
33837            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
33838            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
33839            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
33840            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
33841            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
33842            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
33843            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
33844            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
33845            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
33846            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
33847            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
33848            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
33849            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
33850            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
33851            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
33852            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
33853            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
33854            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
33855            Self::VmstatKswapdHighWmarkHitQuickly => {
33856                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
33857            }
33858            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
33859            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
33860            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
33861            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
33862            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
33863            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
33864            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
33865            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
33866            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
33867            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
33868            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
33869            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
33870            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
33871            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
33872            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
33873            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
33874            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
33875            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
33876            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
33877            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
33878            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
33879            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
33880            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
33881            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
33882            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
33883            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
33884            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
33885            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
33886            Self::VmstatCompactDaemonMigrateScanned => {
33887                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
33888            }
33889            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
33890            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
33891            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
33892            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
33893            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
33894            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
33895            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
33896            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
33897            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
33898            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
33899            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
33900            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
33901            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
33902            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
33903            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
33904            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
33905            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
33906            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
33907            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
33908            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
33909            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
33910            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
33911            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
33912            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
33913            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
33914            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
33915            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
33916            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
33917            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
33918            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
33919            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
33920            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
33921            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
33922            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
33923            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
33924            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
33925            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
33926            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
33927            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
33928            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
33929            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
33930            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
33931            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
33932            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
33933            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
33934            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
33935            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
33936            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
33937            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
33938            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
33939            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
33940            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
33941            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
33942            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
33943            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
33944            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
33945            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
33946            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
33947            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
33948            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
33949            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
33950            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
33951            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
33952            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
33953            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
33954            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
33955            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
33956            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
33957            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
33958            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
33959            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
33960            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
33961            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
33962            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
33963            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
33964            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
33965            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
33966            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
33967            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
33968            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
33969            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
33970            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
33971            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
33972            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
33973            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
33974            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
33975            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
33976            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
33977        }
33978    }
33979    /// Creates an enum from field names used in the ProtoBuf definition.
33980    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
33981        match value {
33982            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
33983            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
33984            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
33985            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
33986            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
33987            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
33988            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
33989            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
33990            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
33991            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
33992            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
33993            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
33994            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
33995            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
33996            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
33997            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
33998            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
33999            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
34000            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
34001            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
34002            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
34003            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
34004            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
34005                Some(Self::VmstatNrVmscanImmediateReclaim)
34006            }
34007            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
34008            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
34009            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
34010            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
34011            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
34012            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
34013            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
34014            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
34015            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
34016            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
34017            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
34018                Some(Self::VmstatNrAnonTransparentHugepages)
34019            }
34020            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
34021            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
34022            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
34023            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
34024                Some(Self::VmstatNrDirtyBackgroundThreshold)
34025            }
34026            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
34027            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
34028            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
34029            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
34030            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
34031            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
34032            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
34033            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
34034            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
34035            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
34036            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
34037            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
34038            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
34039            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
34040            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
34041            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
34042            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
34043            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
34044            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
34045            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
34046            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
34047            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
34048            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
34049            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
34050            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
34051            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
34052            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
34053            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
34054            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
34055            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
34056            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
34057            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
34058            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
34059                Some(Self::VmstatKswapdLowWmarkHitQuickly)
34060            }
34061            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
34062                Some(Self::VmstatKswapdHighWmarkHitQuickly)
34063            }
34064            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
34065            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
34066            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
34067            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
34068            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
34069            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
34070            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
34071            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
34072            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
34073            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
34074            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
34075            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
34076            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
34077            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
34078            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
34079            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
34080            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
34081            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
34082            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
34083                Some(Self::VmstatUnevictablePgsMunlocked)
34084            }
34085            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
34086            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
34087            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
34088            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
34089            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
34090            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
34091            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
34092            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
34093            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
34094                Some(Self::VmstatCompactDaemonFreeScanned)
34095            }
34096            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
34097                Some(Self::VmstatCompactDaemonMigrateScanned)
34098            }
34099            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
34100            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
34101                Some(Self::VmstatNrIndirectlyReclaimable)
34102            }
34103            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
34104            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
34105                Some(Self::VmstatNrKernelMiscReclaimable)
34106            }
34107            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
34108                Some(Self::VmstatNrShadowCallStackBytes)
34109            }
34110            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
34111            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
34112            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
34113            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
34114            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
34115            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
34116            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
34117            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
34118            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
34119            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
34120            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
34121            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
34122            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
34123            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
34124            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
34125            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
34126            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
34127            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
34128            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
34129            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
34130            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
34131            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
34132            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
34133            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
34134            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
34135            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
34136            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
34137            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
34138            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
34139            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
34140            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
34141            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
34142            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
34143            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
34144            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
34145            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
34146            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
34147            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
34148            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
34149            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
34150            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
34151            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
34152            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
34153            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
34154            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
34155            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
34156            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
34157            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
34158            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
34159            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
34160            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
34161                Some(Self::VmstatThpCollapseAllocFailed)
34162            }
34163            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
34164            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
34165            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
34166            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
34167                Some(Self::VmstatThpFaultFallbackCharge)
34168            }
34169            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
34170            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
34171            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
34172            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
34173            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
34174            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
34175            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
34176            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
34177            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
34178            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
34179            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
34180            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
34181            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
34182            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
34183            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
34184            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
34185            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
34186                Some(Self::VmstatThpZeroPageAllocFailed)
34187            }
34188            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
34189            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
34190            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
34191            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
34192            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
34193            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
34194            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
34195            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
34196            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
34197            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
34198            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
34199            _ => None,
34200        }
34201    }
34202}
34203#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34204#[repr(i32)]
34205pub enum FtraceParseStatus {
34206    FtraceStatusUnspecified = 0,
34207    /// Not written, used for convenience of implementation:
34208    FtraceStatusOk = 1,
34209    /// Issues with reading data out of the ftrace ring buffer:
34210    FtraceStatusUnexpectedReadError = 2,
34211    FtraceStatusPartialPageRead = 3,
34212    /// Ring buffer binary data not matching our understanding of the layout:
34213    FtraceStatusAbiInvalidPageHeader = 4,
34214    FtraceStatusAbiShortEventHeader = 5,
34215    FtraceStatusAbiNullPadding = 6,
34216    FtraceStatusAbiShortPaddingLength = 7,
34217    FtraceStatusAbiInvalidPaddingLength = 8,
34218    FtraceStatusAbiShortTimeExtend = 9,
34219    FtraceStatusAbiShortTimeStamp = 10,
34220    FtraceStatusAbiShortDataLength = 11,
34221    FtraceStatusAbiZeroDataLength = 12,
34222    FtraceStatusAbiInvalidDataLength = 13,
34223    FtraceStatusAbiShortEventId = 14,
34224    FtraceStatusAbiEndOverflow = 15,
34225    /// Issues with parsing the event payload:
34226    FtraceStatusShortCompactEvent = 16,
34227    FtraceStatusInvalidEvent = 17,
34228}
34229impl FtraceParseStatus {
34230    /// String value of the enum field names used in the ProtoBuf definition.
34231    ///
34232    /// The values are not transformed in any way and thus are considered stable
34233    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34234    pub fn as_str_name(&self) -> &'static str {
34235        match self {
34236            Self::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
34237            Self::FtraceStatusOk => "FTRACE_STATUS_OK",
34238            Self::FtraceStatusUnexpectedReadError => {
34239                "FTRACE_STATUS_UNEXPECTED_READ_ERROR"
34240            }
34241            Self::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
34242            Self::FtraceStatusAbiInvalidPageHeader => {
34243                "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER"
34244            }
34245            Self::FtraceStatusAbiShortEventHeader => {
34246                "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER"
34247            }
34248            Self::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
34249            Self::FtraceStatusAbiShortPaddingLength => {
34250                "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH"
34251            }
34252            Self::FtraceStatusAbiInvalidPaddingLength => {
34253                "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH"
34254            }
34255            Self::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
34256            Self::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
34257            Self::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
34258            Self::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
34259            Self::FtraceStatusAbiInvalidDataLength => {
34260                "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH"
34261            }
34262            Self::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
34263            Self::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
34264            Self::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
34265            Self::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
34266        }
34267    }
34268    /// Creates an enum from field names used in the ProtoBuf definition.
34269    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34270        match value {
34271            "FTRACE_STATUS_UNSPECIFIED" => Some(Self::FtraceStatusUnspecified),
34272            "FTRACE_STATUS_OK" => Some(Self::FtraceStatusOk),
34273            "FTRACE_STATUS_UNEXPECTED_READ_ERROR" => {
34274                Some(Self::FtraceStatusUnexpectedReadError)
34275            }
34276            "FTRACE_STATUS_PARTIAL_PAGE_READ" => Some(Self::FtraceStatusPartialPageRead),
34277            "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER" => {
34278                Some(Self::FtraceStatusAbiInvalidPageHeader)
34279            }
34280            "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER" => {
34281                Some(Self::FtraceStatusAbiShortEventHeader)
34282            }
34283            "FTRACE_STATUS_ABI_NULL_PADDING" => Some(Self::FtraceStatusAbiNullPadding),
34284            "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH" => {
34285                Some(Self::FtraceStatusAbiShortPaddingLength)
34286            }
34287            "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH" => {
34288                Some(Self::FtraceStatusAbiInvalidPaddingLength)
34289            }
34290            "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND" => {
34291                Some(Self::FtraceStatusAbiShortTimeExtend)
34292            }
34293            "FTRACE_STATUS_ABI_SHORT_TIME_STAMP" => {
34294                Some(Self::FtraceStatusAbiShortTimeStamp)
34295            }
34296            "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH" => {
34297                Some(Self::FtraceStatusAbiShortDataLength)
34298            }
34299            "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH" => {
34300                Some(Self::FtraceStatusAbiZeroDataLength)
34301            }
34302            "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH" => {
34303                Some(Self::FtraceStatusAbiInvalidDataLength)
34304            }
34305            "FTRACE_STATUS_ABI_SHORT_EVENT_ID" => Some(Self::FtraceStatusAbiShortEventId),
34306            "FTRACE_STATUS_ABI_END_OVERFLOW" => Some(Self::FtraceStatusAbiEndOverflow),
34307            "FTRACE_STATUS_SHORT_COMPACT_EVENT" => {
34308                Some(Self::FtraceStatusShortCompactEvent)
34309            }
34310            "FTRACE_STATUS_INVALID_EVENT" => Some(Self::FtraceStatusInvalidEvent),
34311            _ => None,
34312        }
34313    }
34314}
34315#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34316#[repr(i32)]
34317pub enum FtraceClock {
34318    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
34319    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
34320    Unspecified = 0,
34321    Unknown = 1,
34322    Global = 2,
34323    Local = 3,
34324    MonoRaw = 4,
34325}
34326impl FtraceClock {
34327    /// String value of the enum field names used in the ProtoBuf definition.
34328    ///
34329    /// The values are not transformed in any way and thus are considered stable
34330    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34331    pub fn as_str_name(&self) -> &'static str {
34332        match self {
34333            Self::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
34334            Self::Unknown => "FTRACE_CLOCK_UNKNOWN",
34335            Self::Global => "FTRACE_CLOCK_GLOBAL",
34336            Self::Local => "FTRACE_CLOCK_LOCAL",
34337            Self::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
34338        }
34339    }
34340    /// Creates an enum from field names used in the ProtoBuf definition.
34341    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34342        match value {
34343            "FTRACE_CLOCK_UNSPECIFIED" => Some(Self::Unspecified),
34344            "FTRACE_CLOCK_UNKNOWN" => Some(Self::Unknown),
34345            "FTRACE_CLOCK_GLOBAL" => Some(Self::Global),
34346            "FTRACE_CLOCK_LOCAL" => Some(Self::Local),
34347            "FTRACE_CLOCK_MONO_RAW" => Some(Self::MonoRaw),
34348            _ => None,
34349        }
34350    }
34351}
34352#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34353#[repr(i32)]
34354pub enum ChromeCompositorSchedulerAction {
34355    CcSchedulerActionUnspecified = 0,
34356    CcSchedulerActionNone = 1,
34357    CcSchedulerActionSendBeginMainFrame = 2,
34358    CcSchedulerActionCommit = 3,
34359    CcSchedulerActionActivateSyncTree = 4,
34360    CcSchedulerActionDrawIfPossible = 5,
34361    CcSchedulerActionDrawForced = 6,
34362    CcSchedulerActionDrawAbort = 7,
34363    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
34364    CcSchedulerActionPrepareTiles = 9,
34365    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
34366    CcSchedulerActionPerformImplSideInvalidation = 11,
34367    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
34368    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
34369}
34370impl ChromeCompositorSchedulerAction {
34371    /// String value of the enum field names used in the ProtoBuf definition.
34372    ///
34373    /// The values are not transformed in any way and thus are considered stable
34374    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34375    pub fn as_str_name(&self) -> &'static str {
34376        match self {
34377            Self::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
34378            Self::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
34379            Self::CcSchedulerActionSendBeginMainFrame => {
34380                "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME"
34381            }
34382            Self::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
34383            Self::CcSchedulerActionActivateSyncTree => {
34384                "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE"
34385            }
34386            Self::CcSchedulerActionDrawIfPossible => {
34387                "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE"
34388            }
34389            Self::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
34390            Self::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
34391            Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation => {
34392                "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION"
34393            }
34394            Self::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
34395            Self::CcSchedulerActionInvalidateLayerTreeFrameSink => {
34396                "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK"
34397            }
34398            Self::CcSchedulerActionPerformImplSideInvalidation => {
34399                "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION"
34400            }
34401            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => {
34402                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL"
34403            }
34404            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => {
34405                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON"
34406            }
34407        }
34408    }
34409    /// Creates an enum from field names used in the ProtoBuf definition.
34410    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34411        match value {
34412            "CC_SCHEDULER_ACTION_UNSPECIFIED" => Some(Self::CcSchedulerActionUnspecified),
34413            "CC_SCHEDULER_ACTION_NONE" => Some(Self::CcSchedulerActionNone),
34414            "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME" => {
34415                Some(Self::CcSchedulerActionSendBeginMainFrame)
34416            }
34417            "CC_SCHEDULER_ACTION_COMMIT" => Some(Self::CcSchedulerActionCommit),
34418            "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE" => {
34419                Some(Self::CcSchedulerActionActivateSyncTree)
34420            }
34421            "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE" => {
34422                Some(Self::CcSchedulerActionDrawIfPossible)
34423            }
34424            "CC_SCHEDULER_ACTION_DRAW_FORCED" => Some(Self::CcSchedulerActionDrawForced),
34425            "CC_SCHEDULER_ACTION_DRAW_ABORT" => Some(Self::CcSchedulerActionDrawAbort),
34426            "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION" => {
34427                Some(Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation)
34428            }
34429            "CC_SCHEDULER_ACTION_PREPARE_TILES" => {
34430                Some(Self::CcSchedulerActionPrepareTiles)
34431            }
34432            "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK" => {
34433                Some(Self::CcSchedulerActionInvalidateLayerTreeFrameSink)
34434            }
34435            "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION" => {
34436                Some(Self::CcSchedulerActionPerformImplSideInvalidation)
34437            }
34438            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL" => {
34439                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil)
34440            }
34441            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON" => {
34442                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon)
34443            }
34444            _ => None,
34445        }
34446    }
34447}
34448/// RAIL Mode is an indication of the kind of work that a Renderer is currently
34449/// performing which is in turn used to prioritise work accordingly.
34450/// A fuller description of these modes can be found <https://web.dev/rail/>
34451#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
34452#[repr(i32)]
34453pub enum ChromeRailMode {
34454    RailModeNone = 0,
34455    RailModeResponse = 1,
34456    RailModeAnimation = 2,
34457    RailModeIdle = 3,
34458    RailModeLoad = 4,
34459}
34460impl ChromeRailMode {
34461    /// String value of the enum field names used in the ProtoBuf definition.
34462    ///
34463    /// The values are not transformed in any way and thus are considered stable
34464    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
34465    pub fn as_str_name(&self) -> &'static str {
34466        match self {
34467            Self::RailModeNone => "RAIL_MODE_NONE",
34468            Self::RailModeResponse => "RAIL_MODE_RESPONSE",
34469            Self::RailModeAnimation => "RAIL_MODE_ANIMATION",
34470            Self::RailModeIdle => "RAIL_MODE_IDLE",
34471            Self::RailModeLoad => "RAIL_MODE_LOAD",
34472        }
34473    }
34474    /// Creates an enum from field names used in the ProtoBuf definition.
34475    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
34476        match value {
34477            "RAIL_MODE_NONE" => Some(Self::RailModeNone),
34478            "RAIL_MODE_RESPONSE" => Some(Self::RailModeResponse),
34479            "RAIL_MODE_ANIMATION" => Some(Self::RailModeAnimation),
34480            "RAIL_MODE_IDLE" => Some(Self::RailModeIdle),
34481            "RAIL_MODE_LOAD" => Some(Self::RailModeLoad),
34482            _ => None,
34483        }
34484    }
34485}