Skip to main content

perfetto_trace_protos/
perfetto.protos.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct FtraceDescriptor {
4    /// Report the available atrace categories.
5    ///
6    /// Used by Traceur via `perfetto --query`.
7    #[prost(message, repeated, tag = "1")]
8    pub atrace_categories: ::prost::alloc::vec::Vec<ftrace_descriptor::AtraceCategory>,
9}
10/// Nested message and enum types in `FtraceDescriptor`.
11pub mod ftrace_descriptor {
12    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13    pub struct AtraceCategory {
14        #[prost(string, optional, tag = "1")]
15        pub name: ::core::option::Option<::prost::alloc::string::String>,
16        #[prost(string, optional, tag = "2")]
17        pub description: ::core::option::Option<::prost::alloc::string::String>,
18    }
19}
20/// Description of GPU counters.
21/// This message is sent by a GPU counter producer to specify the counters
22/// available in the hardware.
23#[derive(Clone, PartialEq, ::prost::Message)]
24pub struct GpuCounterDescriptor {
25    #[prost(message, repeated, tag = "1")]
26    pub specs: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterSpec>,
27    #[prost(message, repeated, tag = "2")]
28    pub blocks: ::prost::alloc::vec::Vec<gpu_counter_descriptor::GpuCounterBlock>,
29    #[prost(message, repeated, tag = "6")]
30    pub counter_groups: ::prost::alloc::vec::Vec<
31        gpu_counter_descriptor::GpuCounterGroupSpec,
32    >,
33    /// optional.  Minimum sampling period supported by the producer in
34    /// nanoseconds.
35    #[prost(uint64, optional, tag = "3")]
36    pub min_sampling_period_ns: ::core::option::Option<u64>,
37    /// optional.  Maximum sampling period supported by the producer in
38    /// nanoseconds.
39    #[prost(uint64, optional, tag = "4")]
40    pub max_sampling_period_ns: ::core::option::Option<u64>,
41    /// optional.  The producer supports counter sampling by instrumenting the
42    /// command buffer.
43    #[prost(bool, optional, tag = "5")]
44    pub supports_instrumented_sampling: ::core::option::Option<bool>,
45    /// optional.  The producer supports selecting counters by name via
46    /// GpuCounterConfig.counter_names. Not all producers support this; Android
47    /// GPU producers typically do not.
48    #[prost(bool, optional, tag = "7")]
49    pub supports_counter_names: ::core::option::Option<bool>,
50    /// optional.  The producer supports glob patterns in
51    /// GpuCounterConfig.counter_names for matching multiple counters by name.
52    #[prost(bool, optional, tag = "8")]
53    pub supports_counter_name_globs: ::core::option::Option<bool>,
54}
55/// Nested message and enum types in `GpuCounterDescriptor`.
56pub mod gpu_counter_descriptor {
57    #[derive(Clone, PartialEq, ::prost::Message)]
58    pub struct GpuCounterSpec {
59        #[prost(uint32, optional, tag = "1")]
60        pub counter_id: ::core::option::Option<u32>,
61        #[prost(string, optional, tag = "2")]
62        pub name: ::core::option::Option<::prost::alloc::string::String>,
63        #[prost(string, optional, tag = "3")]
64        pub description: ::core::option::Option<::prost::alloc::string::String>,
65        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "7")]
66        pub numerator_units: ::prost::alloc::vec::Vec<i32>,
67        #[prost(enumeration = "MeasureUnit", repeated, packed = "false", tag = "8")]
68        pub denominator_units: ::prost::alloc::vec::Vec<i32>,
69        #[prost(bool, optional, tag = "9")]
70        pub select_by_default: ::core::option::Option<bool>,
71        #[prost(enumeration = "GpuCounterGroup", repeated, packed = "false", tag = "10")]
72        pub groups: ::prost::alloc::vec::Vec<i32>,
73        #[prost(enumeration = "gpu_counter_spec::ValueDirection", optional, tag = "11")]
74        pub value_direction: ::core::option::Option<i32>,
75        #[prost(oneof = "gpu_counter_spec::PeakValue", tags = "5, 6")]
76        pub peak_value: ::core::option::Option<gpu_counter_spec::PeakValue>,
77    }
78    /// Nested message and enum types in `GpuCounterSpec`.
79    pub mod gpu_counter_spec {
80        /// Direction of the time interval that each emitted sample applies to.
81        /// A GPU counter is sampled at discrete timestamps, but its value really
82        /// represents a measurement over some interval around that timestamp
83        /// (e.g. average GPU utilization over the sampling window). This field
84        /// tells trace processor on which side of the timestamp that interval
85        /// lies, which controls where the value is drawn in the UI.
86        ///
87        /// Example: samples at t=10, 20, 30 with values 5, 7, 0.
88        ///    BACKWARDS_LOOKING: 5 covers (-inf, 10], 7 covers (10, 20], 0 covers
89        ///      (20, 30]; the UI draws 7 between t=10 and t=20.
90        ///    FORWARDS_LOOKING:  5 covers [10, 20), 7 covers [20, 30), 0 covers
91        ///      [30, +inf); the UI draws 5 between t=10 and t=20.
92        #[derive(
93            Clone,
94            Copy,
95            Debug,
96            PartialEq,
97            Eq,
98            Hash,
99            PartialOrd,
100            Ord,
101            ::prost::Enumeration
102        )]
103        #[repr(i32)]
104        pub enum ValueDirection {
105            /// Treated as BACKWARDS_LOOKING (the historical default).
106            Unspecified = 0,
107            /// The value applies to the interval ending at this event's timestamp.
108            /// This is the convention used by AGI and most existing GPU producers,
109            /// where a sample reports what happened during the window leading up
110            /// to the timestamp.
111            BackwardsLooking = 1,
112            /// The value applies to the interval starting at this event's
113            /// timestamp, matching standard Perfetto counters. Producers that emit
114            /// explicit zero samples to denote "no activity from here on" should
115            /// use this so the zero is not back-propagated over earlier non-zero
116            /// samples (<https://github.com/google/perfetto/issues/5683>).
117            ForwardsLooking = 2,
118        }
119        impl ValueDirection {
120            /// String value of the enum field names used in the ProtoBuf definition.
121            ///
122            /// The values are not transformed in any way and thus are considered stable
123            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
124            pub fn as_str_name(&self) -> &'static str {
125                match self {
126                    Self::Unspecified => "VALUE_DIRECTION_UNSPECIFIED",
127                    Self::BackwardsLooking => "VALUE_DIRECTION_BACKWARDS_LOOKING",
128                    Self::ForwardsLooking => "VALUE_DIRECTION_FORWARDS_LOOKING",
129                }
130            }
131            /// Creates an enum from field names used in the ProtoBuf definition.
132            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
133                match value {
134                    "VALUE_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
135                    "VALUE_DIRECTION_BACKWARDS_LOOKING" => Some(Self::BackwardsLooking),
136                    "VALUE_DIRECTION_FORWARDS_LOOKING" => Some(Self::ForwardsLooking),
137                    _ => None,
138                }
139            }
140        }
141        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
142        pub enum PeakValue {
143            #[prost(int64, tag = "5")]
144            IntPeakValue(i64),
145            #[prost(double, tag = "6")]
146            DoublePeakValue(f64),
147        }
148    }
149    /// Allow producer to group counters into block to represent counter islands.
150    /// A capacity may be specified to indicate the number of counters that can be
151    /// enable simultaneously in that block.
152    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
153    pub struct GpuCounterBlock {
154        /// required. Unique ID for the counter group.
155        #[prost(uint32, optional, tag = "1")]
156        pub block_id: ::core::option::Option<u32>,
157        /// optional. Number of counters supported by the block. No limit if unset.
158        #[prost(uint32, optional, tag = "2")]
159        pub block_capacity: ::core::option::Option<u32>,
160        /// optional. Name of block.
161        #[prost(string, optional, tag = "3")]
162        pub name: ::core::option::Option<::prost::alloc::string::String>,
163        /// optional. Description for the block.
164        #[prost(string, optional, tag = "4")]
165        pub description: ::core::option::Option<::prost::alloc::string::String>,
166        /// list of counters that are part of the block.
167        #[prost(uint32, repeated, packed = "false", tag = "5")]
168        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
169    }
170    /// Allow producer to define custom counter groups. Unlike the fixed
171    /// GpuCounterGroup enum (which provides broad categories), these groups
172    /// let the producer define hardware-specific groupings that the UI uses
173    /// to organize counter tracks. Can also be used to provide display names
174    /// and descriptions for the fixed GpuCounterGroup enum values by setting
175    /// group_id to the enum value.
176    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
177    pub struct GpuCounterGroupSpec {
178        /// required. Unique ID for this group within the descriptor.
179        #[prost(uint32, optional, tag = "1")]
180        pub group_id: ::core::option::Option<u32>,
181        /// optional. Display name for the group.
182        #[prost(string, optional, tag = "2")]
183        pub name: ::core::option::Option<::prost::alloc::string::String>,
184        /// optional. Description of the group.
185        #[prost(string, optional, tag = "3")]
186        pub description: ::core::option::Option<::prost::alloc::string::String>,
187        /// Counters that belong directly to this group (by counter_id).
188        #[prost(uint32, repeated, packed = "false", tag = "4")]
189        pub counter_ids: ::prost::alloc::vec::Vec<u32>,
190    }
191    /// Logical groups for a counter.  This is used in the UI to present the
192    /// related counters together.
193    #[derive(
194        Clone,
195        Copy,
196        Debug,
197        PartialEq,
198        Eq,
199        Hash,
200        PartialOrd,
201        Ord,
202        ::prost::Enumeration
203    )]
204    #[repr(i32)]
205    pub enum GpuCounterGroup {
206        Unclassified = 0,
207        System = 1,
208        Vertices = 2,
209        Fragments = 3,
210        Primitives = 4,
211        /// Includes counters relating to caching and bandwidth.
212        Memory = 5,
213        Compute = 6,
214        RayTracing = 7,
215    }
216    impl GpuCounterGroup {
217        /// String value of the enum field names used in the ProtoBuf definition.
218        ///
219        /// The values are not transformed in any way and thus are considered stable
220        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
221        pub fn as_str_name(&self) -> &'static str {
222            match self {
223                Self::Unclassified => "UNCLASSIFIED",
224                Self::System => "SYSTEM",
225                Self::Vertices => "VERTICES",
226                Self::Fragments => "FRAGMENTS",
227                Self::Primitives => "PRIMITIVES",
228                Self::Memory => "MEMORY",
229                Self::Compute => "COMPUTE",
230                Self::RayTracing => "RAY_TRACING",
231            }
232        }
233        /// Creates an enum from field names used in the ProtoBuf definition.
234        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
235            match value {
236                "UNCLASSIFIED" => Some(Self::Unclassified),
237                "SYSTEM" => Some(Self::System),
238                "VERTICES" => Some(Self::Vertices),
239                "FRAGMENTS" => Some(Self::Fragments),
240                "PRIMITIVES" => Some(Self::Primitives),
241                "MEMORY" => Some(Self::Memory),
242                "COMPUTE" => Some(Self::Compute),
243                "RAY_TRACING" => Some(Self::RayTracing),
244                _ => None,
245            }
246        }
247    }
248    /// next id: 41
249    #[derive(
250        Clone,
251        Copy,
252        Debug,
253        PartialEq,
254        Eq,
255        Hash,
256        PartialOrd,
257        Ord,
258        ::prost::Enumeration
259    )]
260    #[repr(i32)]
261    pub enum MeasureUnit {
262        None = 0,
263        Bit = 1,
264        Kilobit = 2,
265        Megabit = 3,
266        Gigabit = 4,
267        Terabit = 5,
268        Petabit = 6,
269        Byte = 7,
270        Kilobyte = 8,
271        Megabyte = 9,
272        Gigabyte = 10,
273        Terabyte = 11,
274        Petabyte = 12,
275        Hertz = 13,
276        Kilohertz = 14,
277        Megahertz = 15,
278        Gigahertz = 16,
279        Terahertz = 17,
280        Petahertz = 18,
281        Nanosecond = 19,
282        Microsecond = 20,
283        Millisecond = 21,
284        Second = 22,
285        Minute = 23,
286        Hour = 24,
287        Vertex = 25,
288        Pixel = 26,
289        Triangle = 27,
290        Primitive = 38,
291        Fragment = 39,
292        Milliwatt = 28,
293        Watt = 29,
294        Kilowatt = 30,
295        Joule = 31,
296        Volt = 32,
297        Ampere = 33,
298        Celsius = 34,
299        Fahrenheit = 35,
300        Kelvin = 36,
301        /// Values should be out of 100.
302        Percent = 37,
303        Instruction = 40,
304    }
305    impl MeasureUnit {
306        /// String value of the enum field names used in the ProtoBuf definition.
307        ///
308        /// The values are not transformed in any way and thus are considered stable
309        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
310        pub fn as_str_name(&self) -> &'static str {
311            match self {
312                Self::None => "NONE",
313                Self::Bit => "BIT",
314                Self::Kilobit => "KILOBIT",
315                Self::Megabit => "MEGABIT",
316                Self::Gigabit => "GIGABIT",
317                Self::Terabit => "TERABIT",
318                Self::Petabit => "PETABIT",
319                Self::Byte => "BYTE",
320                Self::Kilobyte => "KILOBYTE",
321                Self::Megabyte => "MEGABYTE",
322                Self::Gigabyte => "GIGABYTE",
323                Self::Terabyte => "TERABYTE",
324                Self::Petabyte => "PETABYTE",
325                Self::Hertz => "HERTZ",
326                Self::Kilohertz => "KILOHERTZ",
327                Self::Megahertz => "MEGAHERTZ",
328                Self::Gigahertz => "GIGAHERTZ",
329                Self::Terahertz => "TERAHERTZ",
330                Self::Petahertz => "PETAHERTZ",
331                Self::Nanosecond => "NANOSECOND",
332                Self::Microsecond => "MICROSECOND",
333                Self::Millisecond => "MILLISECOND",
334                Self::Second => "SECOND",
335                Self::Minute => "MINUTE",
336                Self::Hour => "HOUR",
337                Self::Vertex => "VERTEX",
338                Self::Pixel => "PIXEL",
339                Self::Triangle => "TRIANGLE",
340                Self::Primitive => "PRIMITIVE",
341                Self::Fragment => "FRAGMENT",
342                Self::Milliwatt => "MILLIWATT",
343                Self::Watt => "WATT",
344                Self::Kilowatt => "KILOWATT",
345                Self::Joule => "JOULE",
346                Self::Volt => "VOLT",
347                Self::Ampere => "AMPERE",
348                Self::Celsius => "CELSIUS",
349                Self::Fahrenheit => "FAHRENHEIT",
350                Self::Kelvin => "KELVIN",
351                Self::Percent => "PERCENT",
352                Self::Instruction => "INSTRUCTION",
353            }
354        }
355        /// Creates an enum from field names used in the ProtoBuf definition.
356        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
357            match value {
358                "NONE" => Some(Self::None),
359                "BIT" => Some(Self::Bit),
360                "KILOBIT" => Some(Self::Kilobit),
361                "MEGABIT" => Some(Self::Megabit),
362                "GIGABIT" => Some(Self::Gigabit),
363                "TERABIT" => Some(Self::Terabit),
364                "PETABIT" => Some(Self::Petabit),
365                "BYTE" => Some(Self::Byte),
366                "KILOBYTE" => Some(Self::Kilobyte),
367                "MEGABYTE" => Some(Self::Megabyte),
368                "GIGABYTE" => Some(Self::Gigabyte),
369                "TERABYTE" => Some(Self::Terabyte),
370                "PETABYTE" => Some(Self::Petabyte),
371                "HERTZ" => Some(Self::Hertz),
372                "KILOHERTZ" => Some(Self::Kilohertz),
373                "MEGAHERTZ" => Some(Self::Megahertz),
374                "GIGAHERTZ" => Some(Self::Gigahertz),
375                "TERAHERTZ" => Some(Self::Terahertz),
376                "PETAHERTZ" => Some(Self::Petahertz),
377                "NANOSECOND" => Some(Self::Nanosecond),
378                "MICROSECOND" => Some(Self::Microsecond),
379                "MILLISECOND" => Some(Self::Millisecond),
380                "SECOND" => Some(Self::Second),
381                "MINUTE" => Some(Self::Minute),
382                "HOUR" => Some(Self::Hour),
383                "VERTEX" => Some(Self::Vertex),
384                "PIXEL" => Some(Self::Pixel),
385                "TRIANGLE" => Some(Self::Triangle),
386                "PRIMITIVE" => Some(Self::Primitive),
387                "FRAGMENT" => Some(Self::Fragment),
388                "MILLIWATT" => Some(Self::Milliwatt),
389                "WATT" => Some(Self::Watt),
390                "KILOWATT" => Some(Self::Kilowatt),
391                "JOULE" => Some(Self::Joule),
392                "VOLT" => Some(Self::Volt),
393                "AMPERE" => Some(Self::Ampere),
394                "CELSIUS" => Some(Self::Celsius),
395                "FAHRENHEIT" => Some(Self::Fahrenheit),
396                "KELVIN" => Some(Self::Kelvin),
397                "PERCENT" => Some(Self::Percent),
398                "INSTRUCTION" => Some(Self::Instruction),
399                _ => None,
400            }
401        }
402    }
403}
404#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
405pub struct TrackEventCategory {
406    #[prost(string, optional, tag = "1")]
407    pub name: ::core::option::Option<::prost::alloc::string::String>,
408    #[prost(string, optional, tag = "2")]
409    pub description: ::core::option::Option<::prost::alloc::string::String>,
410    #[prost(string, repeated, tag = "3")]
411    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
412}
413#[derive(Clone, PartialEq, ::prost::Message)]
414pub struct TrackEventDescriptor {
415    #[prost(message, repeated, tag = "1")]
416    pub available_categories: ::prost::alloc::vec::Vec<TrackEventCategory>,
417}
418#[derive(Clone, PartialEq, ::prost::Message)]
419pub struct VmProgram {
420    #[prost(uint32, optional, tag = "1")]
421    pub version: ::core::option::Option<u32>,
422    #[prost(message, repeated, tag = "2")]
423    pub instructions: ::prost::alloc::vec::Vec<VmInstruction>,
424}
425#[derive(Clone, PartialEq, ::prost::Message)]
426pub struct VmInstruction {
427    #[prost(enumeration = "vm_instruction::AbortLevel", optional, tag = "6")]
428    pub abort_level: ::core::option::Option<i32>,
429    /// Sub-instructions executed if the current instruction succeeds
430    #[prost(message, repeated, tag = "7")]
431    pub nested_instructions: ::prost::alloc::vec::Vec<VmInstruction>,
432    #[prost(oneof = "vm_instruction::Operation", tags = "1, 2, 3, 4, 5")]
433    pub operation: ::core::option::Option<vm_instruction::Operation>,
434}
435/// Nested message and enum types in `VmInstruction`.
436pub mod vm_instruction {
437    #[derive(
438        Clone,
439        Copy,
440        Debug,
441        PartialEq,
442        Eq,
443        Hash,
444        PartialOrd,
445        Ord,
446        ::prost::Enumeration
447    )]
448    #[repr(i32)]
449    pub enum AbortLevel {
450        /// Skip current instruction but execute following ones
451        SkipCurrentInstruction = 1,
452        /// Skip current instruction as well as following ones (default)
453        SkipCurrentInstructionAndBreakOuter = 2,
454        /// Abort whole program
455        Abort = 3,
456    }
457    impl AbortLevel {
458        /// String value of the enum field names used in the ProtoBuf definition.
459        ///
460        /// The values are not transformed in any way and thus are considered stable
461        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
462        pub fn as_str_name(&self) -> &'static str {
463            match self {
464                Self::SkipCurrentInstruction => "SKIP_CURRENT_INSTRUCTION",
465                Self::SkipCurrentInstructionAndBreakOuter => {
466                    "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER"
467                }
468                Self::Abort => "ABORT",
469            }
470        }
471        /// Creates an enum from field names used in the ProtoBuf definition.
472        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
473            match value {
474                "SKIP_CURRENT_INSTRUCTION" => Some(Self::SkipCurrentInstruction),
475                "SKIP_CURRENT_INSTRUCTION_AND_BREAK_OUTER" => {
476                    Some(Self::SkipCurrentInstructionAndBreakOuter)
477                }
478                "ABORT" => Some(Self::Abort),
479                _ => None,
480            }
481        }
482    }
483    #[derive(Clone, PartialEq, ::prost::Oneof)]
484    pub enum Operation {
485        #[prost(message, tag = "1")]
486        Select(super::VmOpSelect),
487        #[prost(message, tag = "2")]
488        RegLoad(super::VmOpRegLoad),
489        #[prost(message, tag = "3")]
490        Merge(super::VmOpMerge),
491        #[prost(message, tag = "4")]
492        Set(super::VmOpSet),
493        #[prost(message, tag = "5")]
494        Del(super::VmOpDel),
495    }
496}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct VmOpSelect {
499    /// Enum SRC|DST|BOTH. Default=SRC.
500    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
501    pub cursor: ::core::option::Option<i32>,
502    #[prost(message, repeated, tag = "2")]
503    pub relative_path: ::prost::alloc::vec::Vec<vm_op_select::PathComponent>,
504    /// Creates the submessage if doesn't exist in the DST cursor
505    /// (think of mkdir -p). Only valid when cursor=DST|BOTH.
506    #[prost(bool, optional, tag = "3")]
507    pub create_if_not_exist: ::core::option::Option<bool>,
508}
509/// Nested message and enum types in `VmOpSelect`.
510pub mod vm_op_select {
511    /// A path component is either: (1) a field id to descend into (common case);
512    /// (2) an array index (for repeated fields); (3) a map lookup operation (for
513    /// repeated fields, where we snoop a sub-field as a map key)
514    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
515    pub struct PathComponent {
516        /// Only valid when using field_id. This makes select have foreach
517        /// semantics. This means that the body of nested_instructions is
518        /// executed several times, once per each repeated submessage.
519        #[prost(bool, optional, tag = "5")]
520        pub is_repeated: ::core::option::Option<bool>,
521        /// Only valid when using map_key_field_id. This defines which
522        /// register (R1..R32) should be used to match the key of the dict
523        /// in a map lookup operation.
524        /// In other words:
525        /// foreach msg in repeated message {
526        ///    if msg\[map_key_field_id\] == R\[register_to_match\] {
527        ///       break;  // Lookup succeeded, PathComponent resolves here.
528        ///    }
529        /// }
530        #[prost(uint32, optional, tag = "6")]
531        pub register_to_match: ::core::option::Option<u32>,
532        /// Only valid when using field_id and is_repeated=true. When iterating
533        /// over repeated fields, stores the current iteration index into the
534        /// the register R1..R32 defined below. This can be used to do complex
535        /// operations like "find the entry in the array that has width==100,
536        /// remember its offset in the SRC array and overwrite the matching
537        /// i-th element in the DST array. We will probably never implement
538        /// this but it's here for completeness.
539        #[prost(uint32, optional, tag = "7")]
540        pub store_foreach_index_into_register: ::core::option::Option<u32>,
541        #[prost(oneof = "path_component::Field", tags = "1, 2, 3")]
542        pub field: ::core::option::Option<path_component::Field>,
543    }
544    /// Nested message and enum types in `PathComponent`.
545    pub mod path_component {
546        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
547        pub enum Field {
548            #[prost(uint32, tag = "1")]
549            FieldId(u32),
550            #[prost(uint32, tag = "2")]
551            ArrayIndex(u32),
552            /// The ID of the field in the repeated submessage that we
553            /// use as a key (e.g. LayerState.layer_id). When setting this
554            /// register_to_match must also be set, to tell what's the
555            /// expected value of the key we are looking up.
556            #[prost(uint32, tag = "3")]
557            MapKeyFieldId(u32),
558        }
559    }
560}
561#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
562pub struct VmOpRegLoad {
563    /// SRC(default) | DST.
564    #[prost(enumeration = "VmCursorEnum", optional, tag = "1")]
565    pub cursor: ::core::option::Option<i32>,
566    /// 1=R1, 2=R2... 32=R32
567    #[prost(uint32, optional, tag = "2")]
568    pub dst_register: ::core::option::Option<u32>,
569}
570/// Merges SRC into DST. Both need to point to a message (not a field).
571#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
572pub struct VmOpMerge {
573    /// When true, the merge operation will skip any field that is already
574    /// resolved as a message node in the destination tree.
575    ///
576    /// This is used to support merging of nested messages. Because ProtoVM
577    /// does not know the schema, a standard MERGE cannot distinguish
578    /// between a string and a message on the wire and it would overwrite
579    /// the entire blob, destroying granular updates.
580    ///
581    /// By setting this to true, a program can be implemented to do a
582    /// bottom-up, multi-step merge by traversing into and merging
583    /// the deepest submessages first, then moving up to the parent
584    /// message and merging it with skip_submessages = true.
585    #[prost(bool, optional, tag = "1")]
586    pub skip_submessages: ::core::option::Option<bool>,
587    /// When true, the merge operation will remove the dst field if the src field
588    /// is empty.
589    ///
590    /// This can be used to replicate the removal of a subobject within the
591    /// producer's state. E.g.
592    /// This event on the producer side: mProducerState.mSubobject = nullptr
593    /// can be represented by this patch: { producer_state { subobject {} }}
594    #[prost(bool, optional, tag = "2")]
595    pub del_if_src_empty: ::core::option::Option<bool>,
596}
597/// Copies SRC into DST. If a message, replaces the DST node, discarding any
598/// pre-existing field.
599#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
600pub struct VmOpSet {}
601/// Delete the field or message pointed by DST.
602#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
603pub struct VmOpDel {}
604/// This message is sent from Producer(s) to the tracing Service when registering
605/// to advertise their capabilities. It describes the structure of tracing
606/// protos that will be produced by the data source and the supported filters.
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct DataSourceDescriptor {
609    /// e.g., "linux.ftrace", "chromium.tracing"
610    #[prost(string, optional, tag = "1")]
611    pub name: ::core::option::Option<::prost::alloc::string::String>,
612    /// When non-zero, this is a unique ID within the scope of the Producer for
613    /// this data source (it is NOT globally unique). This is useful to
614    /// differentiate between data sources with matching names when calling
615    /// UpdateDataSource(). This field has been introduced in November 2021
616    /// (v22, Android T) and is not supported on older versions.
617    #[prost(uint64, optional, tag = "7")]
618    pub id: ::core::option::Option<u64>,
619    /// When true the data source is expected to ack the stop request through the
620    /// NotifyDataSourceStopped() IPC. This field has been introduced after
621    /// Android P in Jul 2018 and is not supported on older versions.
622    #[prost(bool, optional, tag = "2")]
623    pub will_notify_on_stop: ::core::option::Option<bool>,
624    /// When true the data source is expected to ack the start request through the
625    /// NotifyDataSourceStarted() IPC. This field has been introduced after
626    /// Android P in March 2019 and is not supported on older versions.
627    #[prost(bool, optional, tag = "3")]
628    pub will_notify_on_start: ::core::option::Option<bool>,
629    /// If true, opt into receiving the ClearIncrementalState() IPC. This should be
630    /// set if the data source writes packets that refer to previous trace
631    /// contents, and knows how to stop referring to the already-emitted data.
632    #[prost(bool, optional, tag = "4")]
633    pub handles_incremental_state_clear: ::core::option::Option<bool>,
634    /// If true, indicates that the data source does nothing upon Flush. This
635    /// allows the service to reduce the flush-related IPC traffic and better deal
636    /// with frozen producers (see go/perfetto-frozen). This is usually the case
637    /// for data sources like 'track_event' that don't have access to the various
638    /// thread task runners to post a flush task and rely purely on server-side
639    /// scraping.
640    /// Introduced in v39 / Android V.
641    #[prost(bool, optional, tag = "9")]
642    pub no_flush: ::core::option::Option<bool>,
643    /// If present, the tracing service executes this program within a ProtoVM to
644    /// process overwritten packets (patches). The service computes a hash of the
645    /// program to detect and disambiguate between different versions; if multiple
646    /// versions (from different producers) are specified for the same data source,
647    /// the service instantiates a dedicated ProtoVM for each.
648    #[prost(message, optional, tag = "10")]
649    pub protovm_program: ::core::option::Option<VmProgram>,
650    /// Optional specification about available GPU counters.
651    #[prost(message, optional, tag = "5")]
652    pub gpu_counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
653    #[prost(message, optional, tag = "6")]
654    pub track_event_descriptor: ::core::option::Option<TrackEventDescriptor>,
655    #[prost(message, optional, tag = "8")]
656    pub ftrace_descriptor: ::core::option::Option<FtraceDescriptor>,
657}
658/// Reports the state of the tracing service. Used to gather details about the
659/// data sources connected.
660/// See ConsumerPort::QueryServiceState().
661#[derive(Clone, PartialEq, ::prost::Message)]
662pub struct TracingServiceState {
663    /// Lists all the producers connected.
664    #[prost(message, repeated, tag = "1")]
665    pub producers: ::prost::alloc::vec::Vec<tracing_service_state::Producer>,
666    /// Lists the data sources available.
667    #[prost(message, repeated, tag = "2")]
668    pub data_sources: ::prost::alloc::vec::Vec<tracing_service_state::DataSource>,
669    /// Lists the tracing sessions active AND owned by a consumer that has the same
670    /// UID of the caller (or all of them if the caller is root).
671    /// Introduced in v24 / Android T.
672    #[prost(message, repeated, tag = "6")]
673    pub tracing_sessions: ::prost::alloc::vec::Vec<
674        tracing_service_state::TracingSession,
675    >,
676    /// This is always set to true from v24 and beyond. This flag is only used to
677    /// tell the difference between: (1) talking to a recent service which happens
678    /// to have no tracing session active; (2) talking to an older version of the
679    /// service which will never report any tracing session.
680    #[prost(bool, optional, tag = "7")]
681    pub supports_tracing_sessions: ::core::option::Option<bool>,
682    /// Total number of tracing sessions.
683    #[prost(int32, optional, tag = "3")]
684    pub num_sessions: ::core::option::Option<i32>,
685    /// Number of tracing sessions in the started state. Always <= num_sessions.
686    #[prost(int32, optional, tag = "4")]
687    pub num_sessions_started: ::core::option::Option<i32>,
688    /// The version of traced (the same returned by `traced --version`).
689    /// This is a human readable string with and its format varies depending on
690    /// the build system and the repo (standalone vs AOSP).
691    /// This is intended for human debugging only.
692    #[prost(string, optional, tag = "5")]
693    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
694}
695/// Nested message and enum types in `TracingServiceState`.
696pub mod tracing_service_state {
697    /// Describes a producer process.
698    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
699    pub struct Producer {
700        /// Unique ID of the producer (monotonic counter).
701        #[prost(int32, optional, tag = "1")]
702        pub id: ::core::option::Option<i32>,
703        /// Typically matches the process name.
704        #[prost(string, optional, tag = "2")]
705        pub name: ::core::option::Option<::prost::alloc::string::String>,
706        /// Unix pid of the remote process. Supported only on Linux-based systems.
707        /// Introduced in v24 / Android T.
708        #[prost(int32, optional, tag = "5")]
709        pub pid: ::core::option::Option<i32>,
710        /// Unix uid of the remote process.
711        #[prost(int32, optional, tag = "3")]
712        pub uid: ::core::option::Option<i32>,
713        /// The version of the client library used by the producer.
714        /// This is a human readable string with and its format varies depending on
715        /// the build system and the repo (standalone vs AOSP).
716        /// This is intended for human debugging only.
717        #[prost(string, optional, tag = "4")]
718        pub sdk_version: ::core::option::Option<::prost::alloc::string::String>,
719        /// Returns true if the process appears to be frozen (Android only).
720        /// Introduced in Perfetto V49 / Android 24Q4.
721        #[prost(bool, optional, tag = "6")]
722        pub frozen: ::core::option::Option<bool>,
723        /// Identifies the machine this producer is connected from in multi-machine
724        /// tracing setups (e.g. when going through traced_relay). Unset (or zero)
725        /// means the producer is connected from the local/host machine where the
726        /// tracing service is running.
727        /// Introduced in Perfetto V56 / Android 26Q3.
728        #[prost(uint32, optional, tag = "7")]
729        pub machine_id: ::core::option::Option<u32>,
730        /// Human-readable name of the machine, as advertised by the relay (usually
731        /// the value of PERFETTO_MACHINE_NAME on the remote, falling back to the
732        /// remote's `uname -s`). Only set when machine_id is non-zero.
733        /// Introduced in Perfetto V56 / Android 26Q3.
734        #[prost(string, optional, tag = "8")]
735        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
736    }
737    /// Describes a data source registered by a producer. Data sources are listed
738    /// regardless of the fact that they are being used or not.
739    #[derive(Clone, PartialEq, ::prost::Message)]
740    pub struct DataSource {
741        /// Descriptor passed by the data source when calling RegisterDataSource().
742        #[prost(message, optional, tag = "1")]
743        pub ds_descriptor: ::core::option::Option<super::DataSourceDescriptor>,
744        /// ID of the producer, as per Producer.id.
745        #[prost(int32, optional, tag = "2")]
746        pub producer_id: ::core::option::Option<i32>,
747    }
748    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
749    pub struct TracingSession {
750        /// The TracingSessionID.
751        #[prost(uint64, optional, tag = "1")]
752        pub id: ::core::option::Option<u64>,
753        /// The Unix uid of the consumer that started the session.
754        /// This is meaningful only if the caller is root. In all other cases only
755        /// tracing sessions that match the caller UID will be displayed.
756        #[prost(int32, optional, tag = "2")]
757        pub consumer_uid: ::core::option::Option<i32>,
758        /// Internal state of the tracing session.
759        /// These strings are FYI only and subjected to change.
760        #[prost(string, optional, tag = "3")]
761        pub state: ::core::option::Option<::prost::alloc::string::String>,
762        /// The unique_session_name as set in the trace config (might be empty).
763        #[prost(string, optional, tag = "4")]
764        pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
765        /// The number and size of each buffer.
766        #[prost(uint32, repeated, packed = "false", tag = "5")]
767        pub buffer_size_kb: ::prost::alloc::vec::Vec<u32>,
768        /// Duration, as specified in the TraceConfig.duration_ms.
769        #[prost(uint32, optional, tag = "6")]
770        pub duration_ms: ::core::option::Option<u32>,
771        /// Number of data sources involved in the session.
772        #[prost(uint32, optional, tag = "7")]
773        pub num_data_sources: ::core::option::Option<u32>,
774        /// Time when the session was started, in the CLOCK_REALTIME domain.
775        /// Available only on Linux-based systems.
776        #[prost(int64, optional, tag = "8")]
777        pub start_realtime_ns: ::core::option::Option<i64>,
778        /// The bugreport_score, as set in TraceConfig.bugreport_score.
779        #[prost(int32, optional, tag = "9")]
780        pub bugreport_score: ::core::option::Option<i32>,
781        /// As per TraceConfig.bugreport_filename.
782        #[prost(string, optional, tag = "10")]
783        pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
784        /// If true, the session is in the STARTED state. If false the session is in
785        /// any other state (see `state` field).
786        #[prost(bool, optional, tag = "11")]
787        pub is_started: ::core::option::Option<bool>,
788    }
789}
790/// Arbitrary key value pairs which can attached to a trace to provide context
791/// about any facet of the trace. This can include, what data it contains,
792/// properties of the host / machine the trace was collected on, and other
793/// interesting information about a trace.
794/// /
795/// Examples include:
796/// gradle_version = "9.0.10-alpha01"
797/// java_major_version = 24
798/// /
799/// Attributes can be written as a TracePacket or set in
800/// `TraceConfig.trace_attributes` (e.g. via `perfetto --add-attribute`).
801/// /
802/// All keys get prefixed with `trace_attribute.` in the UI and in
803/// `traceprocessor`. If there are multiple trace attribute packets that use the
804/// same key, then the latest value wins.
805/// These key value pairs show up in the `Overview` section in
806/// Perfetto UI. Additionally, these key, value pairs can also be queried using
807/// Pefetto SQL by using the following query:
808/// /
809/// `SELECT * FROM metadata WHERE name GLOB 'trace_attribute.*';`
810#[derive(Clone, PartialEq, ::prost::Message)]
811pub struct TraceAttributes {
812    #[prost(message, repeated, tag = "1")]
813    pub attribute: ::prost::alloc::vec::Vec<trace_attributes::Attribute>,
814}
815/// Nested message and enum types in `TraceAttributes`.
816pub mod trace_attributes {
817    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
818    pub struct Attribute {
819        /// The key
820        #[prost(string, optional, tag = "1")]
821        pub key: ::core::option::Option<::prost::alloc::string::String>,
822        /// The value
823        #[prost(oneof = "attribute::Value", tags = "2, 3")]
824        pub value: ::core::option::Option<attribute::Value>,
825    }
826    /// Nested message and enum types in `Attribute`.
827    pub mod attribute {
828        /// The value
829        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
830        pub enum Value {
831            #[prost(int64, tag = "2")]
832            LongValue(i64),
833            #[prost(string, tag = "3")]
834            StringValue(::prost::alloc::string::String),
835        }
836    }
837}
838/// Options for the android.aflags data source.
839/// This data source captures snapshots of Android aconfig flags.
840/// See <https://source.android.com/docs/setup/build/feature-flagging/declare-flag>
841/// for more information on aconfig flags.
842#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
843pub struct AndroidAflagsConfig {
844    /// Frequency of polling. If absent or 0, the state will be recorded once,
845    /// at the start of the trace.
846    ///
847    /// It is recommended to either leave this absent or set it to a large
848    /// value as each invocation of the `aflags` tool can be time consuming
849    /// (approx. 350ms) and also triggers an expensive flush. This is required to
850    /// be > 1000ms if set, to avoid excessive CPU usage.
851    #[prost(uint32, optional, tag = "1")]
852    pub poll_ms: ::core::option::Option<u32>,
853}
854/// Data source that lists game modes and game interventions of games
855/// on an Android device.
856#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
857pub struct AndroidGameInterventionListConfig {
858    /// If not empty, emit info about only the following list of package names
859    /// (exact match, no regex). Otherwise, emit info about all packages.
860    #[prost(string, repeated, tag = "1")]
861    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
862}
863/// Custom configuration for the "android.input.inputevent" data source.
864///
865/// NOTE: Input traces can only be taken on debuggable (userdebug/eng) builds!
866///
867/// Next ID: 6
868#[derive(Clone, PartialEq, ::prost::Message)]
869pub struct AndroidInputEventConfig {
870    /// The tracing mode to use. If unspecified, it will default to
871    /// TRACE_MODE_USE_RULES.
872    #[prost(enumeration = "android_input_event_config::TraceMode", optional, tag = "1")]
873    pub mode: ::core::option::Option<i32>,
874    /// The list of rules to use to determine the trace level of events.
875    /// Each event will be traced using the TraceLevel of the first rule that it
876    /// triggers from this list. The rules are evaluated in the order in which they
877    /// are specified. If an event does not match any of the rules,
878    /// TRACE_LEVEL_NONE will be used by default.
879    #[prost(message, repeated, tag = "2")]
880    pub rules: ::prost::alloc::vec::Vec<android_input_event_config::TraceRule>,
881    /// Trace input events processed by the system as they are being dispatched
882    /// to application windows. All trace rules will apply.
883    ///    - If this flag is used without enabling trace_dispatcher_window_dispatch,
884    ///    it will
885    ///      trace InputDispatcher's inbound events (which does not include events
886    ///      synthesized within InputDispatcher) that match the rules.
887    ///    - If used with trace_dispatcher_window_dispatch, all inbound and outbound
888    ///    events
889    ///      matching the rules, including all events synthesized within
890    ///      InputDispatcher, will be traced.
891    #[prost(bool, optional, tag = "3")]
892    pub trace_dispatcher_input_events: ::core::option::Option<bool>,
893    /// Trace details about which windows the system is sending each input event
894    /// to. All trace rules will apply.
895    #[prost(bool, optional, tag = "4")]
896    pub trace_dispatcher_window_dispatch: ::core::option::Option<bool>,
897    /// Trace evdev events received from the kernel, including device additions and
898    /// removals.
899    #[prost(bool, optional, tag = "5")]
900    pub trace_evdev_events: ::core::option::Option<bool>,
901}
902/// Nested message and enum types in `AndroidInputEventConfig`.
903pub mod android_input_event_config {
904    /// A rule that specifies the TraceLevel for an event based on matching
905    /// conditions. All matchers in the rule are optional. To trigger this rule, an
906    /// event must match all of its specified matchers (i.e. the matchers function
907    /// like a series of conditions connected by a logical 'AND' operator). A rule
908    /// with no specified matchers will match all events. Next ID: 6
909    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
910    pub struct TraceRule {
911        /// The trace level to be used for events that trigger this rule.
912        /// If unspecified, TRACE_LEVEL_NONE will be used by default.
913        #[prost(enumeration = "TraceLevel", optional, tag = "1")]
914        pub trace_level: ::core::option::Option<i32>,
915        /// Package matchers
916        ///
917        /// Respectively matches if all or any of the target apps for this event are
918        /// contained in the specified list of package names.
919        ///
920        /// Intended usage:
921        ///    - Use match_all_packages to selectively allow tracing for the listed
922        ///    packages.
923        ///    - Use match_any_packages to selectively deny tracing for certain
924        ///    packages.
925        ///
926        /// WARNING: Great care must be taken when designing rules for field tracing!
927        ///           This is because each event is almost always sent to more than
928        ///           one app.
929        ///               For example, when allowing tracing for a package that has a
930        ///               spy window
931        ///           over the display (e.g. SystemUI) using match_any_packages,
932        ///           essentially all input will be recorded on that display. This is
933        ///           because the events will be sent to the spy as well as the
934        ///           foreground app, and regardless of what the foreground app is,
935        ///           the event will end up being traced.
936        ///               Alternatively, when attempting to block tracing for specific
937        ///               packages using
938        ///           match_all_packages, no events will likely be blocked. This is
939        ///           because the event will also be sent to other apps (such as, but
940        ///           not limited to, ones with spy windows), so the matcher will not
941        ///           match unless all other targets are also listed under the
942        ///           match_all_packages list.
943        #[prost(string, repeated, tag = "2")]
944        pub match_all_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
945        #[prost(string, repeated, tag = "3")]
946        pub match_any_packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
947        /// Matches if the event is secure, which means that at least one of the
948        /// targets of this event is using the window flag FLAG_SECURE.
949        #[prost(bool, optional, tag = "4")]
950        pub match_secure: ::core::option::Option<bool>,
951        /// Matches if there was an active IME connection while this event was being
952        /// processed.
953        #[prost(bool, optional, tag = "5")]
954        pub match_ime_connection_active: ::core::option::Option<bool>,
955    }
956    /// Trace modes are tracing presets that are included in the system.
957    #[derive(
958        Clone,
959        Copy,
960        Debug,
961        PartialEq,
962        Eq,
963        Hash,
964        PartialOrd,
965        Ord,
966        ::prost::Enumeration
967    )]
968    #[repr(i32)]
969    pub enum TraceMode {
970        /// Preset mode for maximal tracing.
971        /// WARNING: This will bypass all privacy measures on debuggable builds, and
972        /// will record all
973        ///           input events processed by the system, regardless of the context
974        ///           in which they were processed. It should only be used for tracing
975        ///           on a local device or for tests. It should NEVER be used for
976        ///           field tracing.
977        TraceAll = 0,
978        /// Use the tracing rules defined in this config to specify what events to
979        /// trace.
980        UseRules = 1,
981    }
982    impl TraceMode {
983        /// String value of the enum field names used in the ProtoBuf definition.
984        ///
985        /// The values are not transformed in any way and thus are considered stable
986        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
987        pub fn as_str_name(&self) -> &'static str {
988            match self {
989                Self::TraceAll => "TRACE_MODE_TRACE_ALL",
990                Self::UseRules => "TRACE_MODE_USE_RULES",
991            }
992        }
993        /// Creates an enum from field names used in the ProtoBuf definition.
994        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
995            match value {
996                "TRACE_MODE_TRACE_ALL" => Some(Self::TraceAll),
997                "TRACE_MODE_USE_RULES" => Some(Self::UseRules),
998                _ => None,
999            }
1000        }
1001    }
1002    /// The level of tracing that should be applied to an event.
1003    #[derive(
1004        Clone,
1005        Copy,
1006        Debug,
1007        PartialEq,
1008        Eq,
1009        Hash,
1010        PartialOrd,
1011        Ord,
1012        ::prost::Enumeration
1013    )]
1014    #[repr(i32)]
1015    pub enum TraceLevel {
1016        /// Do not trace the input event.
1017        None = 0,
1018        /// Trace the event as a redacted event, where certain sensitive fields are
1019        /// omitted from the trace, including the coordinates of pointer events and
1020        /// the key/scan codes of key events.
1021        Redacted = 1,
1022        /// Trace the complete event.
1023        Complete = 2,
1024    }
1025    impl TraceLevel {
1026        /// String value of the enum field names used in the ProtoBuf definition.
1027        ///
1028        /// The values are not transformed in any way and thus are considered stable
1029        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1030        pub fn as_str_name(&self) -> &'static str {
1031            match self {
1032                Self::None => "TRACE_LEVEL_NONE",
1033                Self::Redacted => "TRACE_LEVEL_REDACTED",
1034                Self::Complete => "TRACE_LEVEL_COMPLETE",
1035            }
1036        }
1037        /// Creates an enum from field names used in the ProtoBuf definition.
1038        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1039            match value {
1040                "TRACE_LEVEL_NONE" => Some(Self::None),
1041                "TRACE_LEVEL_REDACTED" => Some(Self::Redacted),
1042                "TRACE_LEVEL_COMPLETE" => Some(Self::Complete),
1043                _ => None,
1044            }
1045        }
1046    }
1047}
1048#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1049pub struct AndroidLogConfig {
1050    #[prost(enumeration = "AndroidLogId", repeated, packed = "false", tag = "1")]
1051    pub log_ids: ::prost::alloc::vec::Vec<i32>,
1052    /// If set ignores all log messages whose prio is < the given value.
1053    #[prost(enumeration = "AndroidLogPriority", optional, tag = "3")]
1054    pub min_prio: ::core::option::Option<i32>,
1055    /// If non-empty ignores all log messages whose tag doesn't match one of the
1056    /// specified values.
1057    #[prost(string, repeated, tag = "4")]
1058    pub filter_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1059    /// If true, includes the contents of the logcat buffers that were already
1060    /// present before the data source started. By default (false), only new
1061    /// log entries produced after the data source starts are recorded.
1062    /// Can be useful for boot traces or situations where logs from before
1063    /// traced started are important.
1064    #[prost(bool, optional, tag = "5")]
1065    pub preserve_log_buffer: ::core::option::Option<bool>,
1066}
1067/// Data source that polls for display state. This should only be used for
1068/// backward-compatibility; AndroidSystemPropertyConfig should be preferred.
1069#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1070pub struct AndroidPolledStateConfig {
1071    /// Frequency of polling. If absent the state will be recorded once, at the
1072    /// start of the trace.
1073    /// This is required to be > 100ms to avoid excessive CPU usage.
1074    #[prost(uint32, optional, tag = "1")]
1075    pub poll_ms: ::core::option::Option<u32>,
1076}
1077/// Configuration for the "android.process_state" data source.
1078#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1079pub struct AndroidProcessStateConfig {
1080    /// If true, dumps process name, start seq id, and start time in the snapshot.
1081    /// When false (default), these fields are omitted to save trace buffer space.
1082    #[prost(bool, optional, tag = "1")]
1083    pub dump_process_metadata: ::core::option::Option<bool>,
1084}
1085/// Data source that controls the system properties used to guard initialization
1086/// of track_event producers (i.e. Skia) in apps using HWUI, and certain
1087/// processes like SurfaceFlinger.
1088///
1089/// This data source only tells Skia to initialized the Perfetto SDK and start
1090/// routing data to the Track Event system instead of ATrace. For those events
1091/// to actually show up in a trace, the track_event data source must be used as
1092/// well. The Perfetto SDK cannot be de-initialized, so some long-lived apps and
1093/// processes may need to be restarted for Skia to revert to using ATrace if
1094/// Track Events are no longer desired.
1095///
1096/// In addition to switching Skia to use Perfetto's track_event data source,
1097/// this "guard" also controls Skia's "broad tracing", which removes Skia's
1098/// internal tracing constraints and allows the track_event config to specify
1099/// which categories should be traced. Filtering to the "skia.always" category
1100/// *tag* in a track_event config can be used to re-enable the standard
1101/// constraints typically used with ATrace.
1102///
1103/// Data source name: android.sdk_sysprop_guard
1104/// Introduced in Android 14 (U) QPR1.
1105/// Next id: 4
1106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1107pub struct AndroidSdkSyspropGuardConfig {
1108    /// If true, configures SurfaceFlinger to initialize Skia's Perfetto
1109    /// integration with the track_event data source in RenderEngine.
1110    /// If false or omitted, the simpler ATrace fallback is used.
1111    ///
1112    /// NOTE: once enabled, Skia will only revert to ATrace if SurfaceFlinger is
1113    /// restarted.
1114    ///
1115    /// Specifically this sets the following system properties:
1116    ///    - debug.tracing.ctl.renderengine.skia_tracing_enabled
1117    ///    - debug.tracing.ctl.renderengine.skia_use_perfetto_track_events
1118    ///
1119    /// Does not affect actual track_event data *collection*, which must be
1120    /// configured separately.
1121    #[prost(bool, optional, tag = "1")]
1122    pub surfaceflinger_skia_track_events: ::core::option::Option<bool>,
1123    /// If true, configures HWUI apps to initialize Skia's Perfetto integration
1124    /// with the track_event data source. hwui_package_name_filter
1125    /// can be used to control which apps are affected.
1126    /// If false or omitted, the simpler ATrace fallback is used.
1127    ///
1128    /// NOTE: once enabled, Skia will only revert to ATrace if the app is
1129    /// restarted.
1130    ///
1131    /// ATTENTION: affects ALL HWUI APPS if hwui_package_name_filter is not set!
1132    /// If filtering is NOT set, this controls these GLOBAL system properties:
1133    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled
1134    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events
1135    /// If filtering IS set, this controls these APP-SPECIFIC system properties,
1136    /// for each package listed in the filter:
1137    ///    - debug.tracing.ctl.hwui.skia_tracing_enabled.<package.name>
1138    ///    - debug.tracing.ctl.hwui.skia_use_perfetto_track_events.<package.name>
1139    ///
1140    /// Does not affect actual track_event data *collection*, which must be
1141    /// configured separately.
1142    #[prost(bool, optional, tag = "2")]
1143    pub hwui_skia_track_events: ::core::option::Option<bool>,
1144    /// If non-empty, hwui_skia_track_events applies to only the packages listed.
1145    /// Otherwise, hwui_skia_track_events applies globally to all HWUI apps.
1146    #[prost(string, repeated, tag = "3")]
1147    pub hwui_package_name_filter: ::prost::alloc::vec::Vec<
1148        ::prost::alloc::string::String,
1149    >,
1150}
1151/// Data source that polls for system properties.
1152#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1153pub struct AndroidSystemPropertyConfig {
1154    /// Frequency of polling. If absent the state will be recorded once, at the
1155    /// start of the trace.
1156    /// This is required to be > 100ms to avoid excessive CPU usage.
1157    #[prost(uint32, optional, tag = "1")]
1158    pub poll_ms: ::core::option::Option<u32>,
1159    /// Properties to poll. All property names must start with "debug.tracing.".
1160    #[prost(string, repeated, tag = "2")]
1161    pub property_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1162}
1163/// Configuration for the android.app_wakelocks data source.
1164#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1165pub struct AppWakelocksConfig {
1166    /// Specifies the delay (in milliseconds) after which the data source will
1167    /// attempt to write events. Writing less frequently reduces the trace size by
1168    /// making better use of the packed arrays and reducing the total number of
1169    /// TracePackets needed (which each have dozens of bytes of overhead). The
1170    /// suggested delay is 5000ms.
1171    #[prost(int32, optional, tag = "1")]
1172    pub write_delay_ms: ::core::option::Option<i32>,
1173    /// When set, wakelocks held for less than this amount of time are filtered
1174    /// from the resulting trace. Note: duration is computed by matching wakelocks
1175    /// with identical attributes, not by tracking the underlying objects. The
1176    /// threshold should be < the trace's flush_period_ms.
1177    #[prost(int32, optional, tag = "2")]
1178    pub filter_duration_below_ms: ::core::option::Option<i32>,
1179    /// When true, the owner_pid is dropped from the resulting output, reducing the
1180    /// size of the interning tables.
1181    #[prost(bool, optional, tag = "3")]
1182    pub drop_owner_pid: ::core::option::Option<bool>,
1183}
1184/// Data source that records CPU per UID data.
1185#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1186pub struct CpuPerUidConfig {
1187    /// Record at this frequency.
1188    #[prost(uint32, optional, tag = "1")]
1189    pub poll_ms: ::core::option::Option<u32>,
1190}
1191/// Config for the "android.display.video" data source. Unset/0 fields use
1192/// the producer's default.
1193#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1194pub struct DisplayVideoConfig {
1195    /// Scale applied to each display's resolution before capture (0.25 =
1196    /// quarter size).
1197    #[prost(float, optional, tag = "1")]
1198    pub scale: ::core::option::Option<f32>,
1199    #[prost(enumeration = "display_video_config::Format", optional, tag = "2")]
1200    pub format: ::core::option::Option<i32>,
1201    /// Keyframe interval in seconds. Smaller = snappier seeking, larger trace.
1202    #[prost(uint32, optional, tag = "3")]
1203    pub key_frame_interval_secs: ::core::option::Option<u32>,
1204    /// Per-display cap on emitted bytes. On reaching it the stream is torn
1205    /// down with a VideoFrameError (SIZE_CAP_HIT).
1206    #[prost(uint64, optional, tag = "4")]
1207    pub max_stream_size_bytes: ::core::option::Option<u64>,
1208    /// Target video encoder bitrate in bits per second. Controls quality vs
1209    /// trace size at a fixed resolution (unlike `scale`, which changes the
1210    /// resolution). Unset lets the producer pick a default from the (scaled)
1211    /// resolution and frame rate. Maps to MediaFormat.KEY_BIT_RATE.
1212    #[prost(uint32, optional, tag = "5")]
1213    pub bitrate_bps: ::core::option::Option<u32>,
1214}
1215/// Nested message and enum types in `DisplayVideoConfig`.
1216pub mod display_video_config {
1217    #[derive(
1218        Clone,
1219        Copy,
1220        Debug,
1221        PartialEq,
1222        Eq,
1223        Hash,
1224        PartialOrd,
1225        Ord,
1226        ::prost::Enumeration
1227    )]
1228    #[repr(i32)]
1229    pub enum Format {
1230        /// Default (H.264).
1231        Unspecified = 0,
1232        H264 = 1,
1233        Hevc = 2,
1234    }
1235    impl Format {
1236        /// String value of the enum field names used in the ProtoBuf definition.
1237        ///
1238        /// The values are not transformed in any way and thus are considered stable
1239        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1240        pub fn as_str_name(&self) -> &'static str {
1241            match self {
1242                Self::Unspecified => "FORMAT_UNSPECIFIED",
1243                Self::H264 => "FORMAT_H264",
1244                Self::Hevc => "FORMAT_HEVC",
1245            }
1246        }
1247        /// Creates an enum from field names used in the ProtoBuf definition.
1248        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1249            match value {
1250                "FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1251                "FORMAT_H264" => Some(Self::H264),
1252                "FORMAT_HEVC" => Some(Self::Hevc),
1253                _ => None,
1254            }
1255        }
1256    }
1257}
1258/// Custom configuration for the "android.inputmethod" data source.
1259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1260pub struct InputMethodConfig {
1261    /// If true, enables tracing in the clients.
1262    #[prost(bool, optional, tag = "1")]
1263    pub client: ::core::option::Option<bool>,
1264    /// If true, enables tracing in InputMethodService.
1265    #[prost(bool, optional, tag = "2")]
1266    pub service: ::core::option::Option<bool>,
1267    /// If true, enables tracing in InputMethodManagerService.
1268    #[prost(bool, optional, tag = "3")]
1269    pub manager_service: ::core::option::Option<bool>,
1270}
1271/// Data source that records kernel (and native) wakelock data.
1272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1273pub struct KernelWakelocksConfig {
1274    /// Record at this frequency.
1275    #[prost(uint32, optional, tag = "1")]
1276    pub poll_ms: ::core::option::Option<u32>,
1277}
1278/// Network tracing data source that records details on all packets sent or
1279/// received by the network.
1280#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1281pub struct NetworkPacketTraceConfig {
1282    /// Polling frequency in milliseconds. Network tracing writes to a fixed size
1283    /// ring buffer. The polling interval should be such that the ring buffer is
1284    /// unlikely to fill in that interval (or that filling is an acceptable risk).
1285    /// The minimum polling rate is 100ms (values below this are ignored).
1286    /// Introduced in Android 14 (U).
1287    #[prost(uint32, optional, tag = "1")]
1288    pub poll_ms: ::core::option::Option<u32>,
1289    /// The aggregation_threshold is the number of packets at which an event will
1290    /// switch from per-packet details to aggregate details. For example, a value
1291    /// of 50 means that if a particular event (grouped by the unique combinations
1292    /// of metadata fields: {interface, direction, uid, etc}) has fewer than 50
1293    /// packets, the exact timestamp and length are recorded for each packet. If
1294    /// there were 50 or more packets in an event, it would only record the total
1295    /// duration, packets, and length. A value of zero or unspecified will always
1296    /// / record per-packet details. A value of 1 always records aggregate details.
1297    #[prost(uint32, optional, tag = "2")]
1298    pub aggregation_threshold: ::core::option::Option<u32>,
1299    /// Specifies the maximum number of packet contexts to intern at a time. This
1300    /// prevents the interning table from growing too large and controls whether
1301    /// interning is enabled or disabled (a value of zero disables interning and
1302    /// is the default). When a data sources interning table reaches this amount,
1303    /// packet contexts will be inlined into NetworkPacketEvents.
1304    #[prost(uint32, optional, tag = "3")]
1305    pub intern_limit: ::core::option::Option<u32>,
1306    /// The following fields specify whether certain fields should be dropped from
1307    /// the output. Dropping fields improves normalization results, reduces the
1308    /// size of the interning table, and slightly reduces event size.
1309    #[prost(bool, optional, tag = "4")]
1310    pub drop_local_port: ::core::option::Option<bool>,
1311    #[prost(bool, optional, tag = "5")]
1312    pub drop_remote_port: ::core::option::Option<bool>,
1313    #[prost(bool, optional, tag = "6")]
1314    pub drop_tcp_flags: ::core::option::Option<bool>,
1315}
1316/// Data source that lists details (such as version code) about packages on an
1317/// Android device.
1318#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1319pub struct PackagesListConfig {
1320    /// If not empty, emit info about only the following list of package names
1321    /// (exact match, no regex). Can be combined with
1322    /// |package_name_regex_filter|: a package is included if it matches either
1323    /// filter. If both filters are empty, emit info about all packages.
1324    #[prost(string, repeated, tag = "1")]
1325    pub package_name_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1326    /// If not empty, emit info about only the packages whose names match any of
1327    /// the following regexes (full match, not partial). Can be combined with
1328    /// |package_name_filter|: a package is included if it matches either filter.
1329    /// If both filters are empty, emit info about all packages.
1330    /// This field was introduced in Android 26Q2 (Perfetto v55).
1331    #[prost(string, repeated, tag = "3")]
1332    pub package_name_regex_filter: ::prost::alloc::vec::Vec<
1333        ::prost::alloc::string::String,
1334    >,
1335    /// If present and non-zero, the data source will periodically poll for CPU
1336    /// use by packages and only emit results for those that it sees. If absent,
1337    /// the data source will emit results for all packages at startup. The package
1338    /// name filters apply either way.
1339    #[prost(uint32, optional, tag = "2")]
1340    pub only_write_on_cpu_use_every_ms: ::core::option::Option<u32>,
1341}
1342/// Data source that records events from the modem.
1343#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1344pub struct PixelModemConfig {
1345    #[prost(enumeration = "pixel_modem_config::EventGroup", optional, tag = "1")]
1346    pub event_group: ::core::option::Option<i32>,
1347    /// If set, record only events with these hashes.
1348    #[prost(int64, repeated, packed = "false", tag = "2")]
1349    pub pigweed_hash_allow_list: ::prost::alloc::vec::Vec<i64>,
1350    /// If set and allow_list is not set, deny events with these hashes.
1351    #[prost(int64, repeated, packed = "false", tag = "3")]
1352    pub pigweed_hash_deny_list: ::prost::alloc::vec::Vec<i64>,
1353}
1354/// Nested message and enum types in `PixelModemConfig`.
1355pub mod pixel_modem_config {
1356    /// Event group to record, as defined by the modem.
1357    #[derive(
1358        Clone,
1359        Copy,
1360        Debug,
1361        PartialEq,
1362        Eq,
1363        Hash,
1364        PartialOrd,
1365        Ord,
1366        ::prost::Enumeration
1367    )]
1368    #[repr(i32)]
1369    pub enum EventGroup {
1370        Unknown = 0,
1371        /// Events suitable for low bandwidth tracing only.
1372        LowBandwidth = 1,
1373        /// Events suitable for high and low bandwidth tracing.
1374        HighAndLowBandwidth = 2,
1375    }
1376    impl EventGroup {
1377        /// String value of the enum field names used in the ProtoBuf definition.
1378        ///
1379        /// The values are not transformed in any way and thus are considered stable
1380        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1381        pub fn as_str_name(&self) -> &'static str {
1382            match self {
1383                Self::Unknown => "EVENT_GROUP_UNKNOWN",
1384                Self::LowBandwidth => "EVENT_GROUP_LOW_BANDWIDTH",
1385                Self::HighAndLowBandwidth => "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH",
1386            }
1387        }
1388        /// Creates an enum from field names used in the ProtoBuf definition.
1389        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1390            match value {
1391                "EVENT_GROUP_UNKNOWN" => Some(Self::Unknown),
1392                "EVENT_GROUP_LOW_BANDWIDTH" => Some(Self::LowBandwidth),
1393                "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH" => Some(Self::HighAndLowBandwidth),
1394                _ => None,
1395            }
1396        }
1397    }
1398}
1399/// Custom configuration for the "android.protolog" data source.
1400/// ProtoLog is a logging mechanism that is intented to be more efficient than
1401/// logcat. This configures what logs to capture in the tracing instance.
1402#[derive(Clone, PartialEq, ::prost::Message)]
1403pub struct ProtoLogConfig {
1404    /// Specified the configurations for each of the logging groups. If none is
1405    /// specified for a group the defaults will be used.
1406    #[prost(message, repeated, tag = "1")]
1407    pub group_overrides: ::prost::alloc::vec::Vec<ProtoLogGroup>,
1408    /// Specified what tracing mode to use for the tracing instance.
1409    #[prost(enumeration = "proto_log_config::TracingMode", optional, tag = "2")]
1410    pub tracing_mode: ::core::option::Option<i32>,
1411    /// If set, any message with log level higher than this level (inclusive) will
1412    /// be traced. Group overrides take precedence over this value.
1413    #[prost(enumeration = "ProtoLogLevel", optional, tag = "3")]
1414    pub default_log_from_level: ::core::option::Option<i32>,
1415}
1416/// Nested message and enum types in `ProtoLogConfig`.
1417pub mod proto_log_config {
1418    #[derive(
1419        Clone,
1420        Copy,
1421        Debug,
1422        PartialEq,
1423        Eq,
1424        Hash,
1425        PartialOrd,
1426        Ord,
1427        ::prost::Enumeration
1428    )]
1429    #[repr(i32)]
1430    pub enum TracingMode {
1431        /// When using the DEFAULT tracing mode, only log groups and levels specified
1432        /// in the group_overrides are traced.
1433        Default = 0,
1434        /// When using the ENABLE_ALL tracing mode, all log groups and levels are
1435        /// traced, unless specified in the group_overrides.
1436        EnableAll = 1,
1437    }
1438    impl TracingMode {
1439        /// String value of the enum field names used in the ProtoBuf definition.
1440        ///
1441        /// The values are not transformed in any way and thus are considered stable
1442        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1443        pub fn as_str_name(&self) -> &'static str {
1444            match self {
1445                Self::Default => "DEFAULT",
1446                Self::EnableAll => "ENABLE_ALL",
1447            }
1448        }
1449        /// Creates an enum from field names used in the ProtoBuf definition.
1450        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1451            match value {
1452                "DEFAULT" => Some(Self::Default),
1453                "ENABLE_ALL" => Some(Self::EnableAll),
1454                _ => None,
1455            }
1456        }
1457    }
1458}
1459#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1460pub struct ProtoLogGroup {
1461    /// The ProtoLog group name this configuration entry applies to.
1462    #[prost(string, optional, tag = "1")]
1463    pub group_name: ::core::option::Option<::prost::alloc::string::String>,
1464    /// Specify the level from which to start capturing protologs.
1465    /// e.g. if ProtoLogLevel.WARN is specified only warning, errors and fatal log
1466    /// message will be traced.
1467    #[prost(enumeration = "ProtoLogLevel", optional, tag = "2")]
1468    pub log_from: ::core::option::Option<i32>,
1469    /// When set to true we will collect the stacktrace for each protolog message
1470    /// in this group that we are tracing.
1471    #[prost(bool, optional, tag = "3")]
1472    pub collect_stacktrace: ::core::option::Option<bool>,
1473}
1474/// Custom configuration for the "android.surfaceflinger.layers" data source.
1475#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1476pub struct SurfaceFlingerLayersConfig {
1477    #[prost(enumeration = "surface_flinger_layers_config::Mode", optional, tag = "1")]
1478    pub mode: ::core::option::Option<i32>,
1479    #[prost(
1480        enumeration = "surface_flinger_layers_config::TraceFlag",
1481        repeated,
1482        packed = "false",
1483        tag = "2"
1484    )]
1485    pub trace_flags: ::prost::alloc::vec::Vec<i32>,
1486}
1487/// Nested message and enum types in `SurfaceFlingerLayersConfig`.
1488pub mod surface_flinger_layers_config {
1489    #[derive(
1490        Clone,
1491        Copy,
1492        Debug,
1493        PartialEq,
1494        Eq,
1495        Hash,
1496        PartialOrd,
1497        Ord,
1498        ::prost::Enumeration
1499    )]
1500    #[repr(i32)]
1501    pub enum Mode {
1502        Unspecified = 0,
1503        /// Trace layers snapshots. A snapshot is taken every time a layers change
1504        /// occurs.
1505        Active = 1,
1506        /// Generate layers snapshots from the transactions kept in the
1507        /// SurfaceFlinger's internal ring buffer.
1508        /// The layers snapshots generation occurs when this data source is flushed.
1509        Generated = 2,
1510        /// Trace a single layers snapshot.
1511        Dump = 3,
1512        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1513        /// Same as MODE_GENERATED, but triggers the layers snapshots generation only
1514        /// when a bugreport is taken.
1515        GeneratedBugreportOnly = 4,
1516        /// Layer snapshots are generated by ProtoVM from layer patches
1517        Protovm = 5,
1518    }
1519    impl Mode {
1520        /// String value of the enum field names used in the ProtoBuf definition.
1521        ///
1522        /// The values are not transformed in any way and thus are considered stable
1523        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1524        pub fn as_str_name(&self) -> &'static str {
1525            match self {
1526                Self::Unspecified => "MODE_UNSPECIFIED",
1527                Self::Active => "MODE_ACTIVE",
1528                Self::Generated => "MODE_GENERATED",
1529                Self::Dump => "MODE_DUMP",
1530                Self::GeneratedBugreportOnly => "MODE_GENERATED_BUGREPORT_ONLY",
1531                Self::Protovm => "MODE_PROTOVM",
1532            }
1533        }
1534        /// Creates an enum from field names used in the ProtoBuf definition.
1535        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1536            match value {
1537                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1538                "MODE_ACTIVE" => Some(Self::Active),
1539                "MODE_GENERATED" => Some(Self::Generated),
1540                "MODE_DUMP" => Some(Self::Dump),
1541                "MODE_GENERATED_BUGREPORT_ONLY" => Some(Self::GeneratedBugreportOnly),
1542                "MODE_PROTOVM" => Some(Self::Protovm),
1543                _ => None,
1544            }
1545        }
1546    }
1547    #[derive(
1548        Clone,
1549        Copy,
1550        Debug,
1551        PartialEq,
1552        Eq,
1553        Hash,
1554        PartialOrd,
1555        Ord,
1556        ::prost::Enumeration
1557    )]
1558    #[repr(i32)]
1559    pub enum TraceFlag {
1560        Unspecified = 0,
1561        Input = 2,
1562        Composition = 4,
1563        Extra = 8,
1564        Hwc = 16,
1565        Buffers = 32,
1566        VirtualDisplays = 64,
1567        /// INPUT | COMPOSITION | EXTRA
1568        All = 14,
1569    }
1570    impl TraceFlag {
1571        /// String value of the enum field names used in the ProtoBuf definition.
1572        ///
1573        /// The values are not transformed in any way and thus are considered stable
1574        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1575        pub fn as_str_name(&self) -> &'static str {
1576            match self {
1577                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
1578                Self::Input => "TRACE_FLAG_INPUT",
1579                Self::Composition => "TRACE_FLAG_COMPOSITION",
1580                Self::Extra => "TRACE_FLAG_EXTRA",
1581                Self::Hwc => "TRACE_FLAG_HWC",
1582                Self::Buffers => "TRACE_FLAG_BUFFERS",
1583                Self::VirtualDisplays => "TRACE_FLAG_VIRTUAL_DISPLAYS",
1584                Self::All => "TRACE_FLAG_ALL",
1585            }
1586        }
1587        /// Creates an enum from field names used in the ProtoBuf definition.
1588        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1589            match value {
1590                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
1591                "TRACE_FLAG_INPUT" => Some(Self::Input),
1592                "TRACE_FLAG_COMPOSITION" => Some(Self::Composition),
1593                "TRACE_FLAG_EXTRA" => Some(Self::Extra),
1594                "TRACE_FLAG_HWC" => Some(Self::Hwc),
1595                "TRACE_FLAG_BUFFERS" => Some(Self::Buffers),
1596                "TRACE_FLAG_VIRTUAL_DISPLAYS" => Some(Self::VirtualDisplays),
1597                "TRACE_FLAG_ALL" => Some(Self::All),
1598                _ => None,
1599            }
1600        }
1601    }
1602}
1603/// Custom configuration for the "android.surfaceflinger.transactions" data
1604/// source.
1605#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1606pub struct SurfaceFlingerTransactionsConfig {
1607    #[prost(
1608        enumeration = "surface_flinger_transactions_config::Mode",
1609        optional,
1610        tag = "1"
1611    )]
1612    pub mode: ::core::option::Option<i32>,
1613}
1614/// Nested message and enum types in `SurfaceFlingerTransactionsConfig`.
1615pub mod surface_flinger_transactions_config {
1616    #[derive(
1617        Clone,
1618        Copy,
1619        Debug,
1620        PartialEq,
1621        Eq,
1622        Hash,
1623        PartialOrd,
1624        Ord,
1625        ::prost::Enumeration
1626    )]
1627    #[repr(i32)]
1628    pub enum Mode {
1629        Unspecified = 0,
1630        /// Default mode (applied by SurfaceFlinger if no mode is specified).
1631        /// SurfaceFlinger writes its internal ring buffer of transactions every time
1632        /// the data source is flushed. The ring buffer contains the SurfaceFlinger's
1633        /// initial state and the latest transactions.
1634        Continuous = 1,
1635        /// SurfaceFlinger writes the initial state and then each incoming
1636        /// transaction until the data source is stopped.
1637        Active = 2,
1638    }
1639    impl Mode {
1640        /// String value of the enum field names used in the ProtoBuf definition.
1641        ///
1642        /// The values are not transformed in any way and thus are considered stable
1643        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1644        pub fn as_str_name(&self) -> &'static str {
1645            match self {
1646                Self::Unspecified => "MODE_UNSPECIFIED",
1647                Self::Continuous => "MODE_CONTINUOUS",
1648                Self::Active => "MODE_ACTIVE",
1649            }
1650        }
1651        /// Creates an enum from field names used in the ProtoBuf definition.
1652        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1653            match value {
1654                "MODE_UNSPECIFIED" => Some(Self::Unspecified),
1655                "MODE_CONTINUOUS" => Some(Self::Continuous),
1656                "MODE_ACTIVE" => Some(Self::Active),
1657                _ => None,
1658            }
1659        }
1660    }
1661}
1662/// Data source that lists details (such as version code) about users on an
1663/// Android device.
1664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1665pub struct AndroidUserListConfig {
1666    /// An allowlist of user type strings, used to control the granularity of
1667    /// user type information emitted in the trace. Exact, case-sensitive string
1668    /// matching is used.
1669    ///
1670    /// Any user type read from the device that is NOT present in the
1671    /// effective allowlist will have its type reported as
1672    /// "android.os.usertype.FILTERED".
1673    ///
1674    /// The effective allowlist is determined as follows:
1675    ///
1676    /// 1. If this 'user_type_filter' field is provided and non-empty:
1677    ///     This list itself is the effective allowlist.
1678    ///     Example TraceConfig:
1679    ///     --------------------
1680    ///     data_sources {
1681    ///         config {
1682    ///             name: "android.user_list"
1683    ///             target_buffer: 0
1684    ///             user_list_config {
1685    ///               # Only report these specific types, others become FILTERED.
1686    ///               user_type_filter: "android.os.usertype.full.SYSTEM"
1687    ///               user_type_filter: "android.os.usertype.system.HEADLESS"
1688    ///             }
1689    ///         }
1690    ///     }
1691    ///
1692    ///
1693    /// Note: This field does not support regular expressions.
1694    #[prost(string, repeated, tag = "1")]
1695    pub user_type_filter: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1696}
1697/// Custom configuration for the "android.windowmanager" data source.
1698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1699pub struct WindowManagerConfig {
1700    #[prost(enumeration = "window_manager_config::LogFrequency", optional, tag = "1")]
1701    pub log_frequency: ::core::option::Option<i32>,
1702    #[prost(enumeration = "window_manager_config::LogLevel", optional, tag = "2")]
1703    pub log_level: ::core::option::Option<i32>,
1704    #[prost(enumeration = "window_manager_config::LogMode", optional, tag = "3")]
1705    pub log_mode: ::core::option::Option<i32>,
1706}
1707/// Nested message and enum types in `WindowManagerConfig`.
1708pub mod window_manager_config {
1709    #[derive(
1710        Clone,
1711        Copy,
1712        Debug,
1713        PartialEq,
1714        Eq,
1715        Hash,
1716        PartialOrd,
1717        Ord,
1718        ::prost::Enumeration
1719    )]
1720    #[repr(i32)]
1721    pub enum LogFrequency {
1722        Unspecified = 0,
1723        /// Trace state snapshots when a frame is committed.
1724        Frame = 1,
1725        /// Trace state snapshots every time a transaction is committed.
1726        Transaction = 2,
1727        /// Trace single state snapshots when the data source is started.
1728        SingleDump = 3,
1729    }
1730    impl LogFrequency {
1731        /// String value of the enum field names used in the ProtoBuf definition.
1732        ///
1733        /// The values are not transformed in any way and thus are considered stable
1734        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1735        pub fn as_str_name(&self) -> &'static str {
1736            match self {
1737                Self::Unspecified => "LOG_FREQUENCY_UNSPECIFIED",
1738                Self::Frame => "LOG_FREQUENCY_FRAME",
1739                Self::Transaction => "LOG_FREQUENCY_TRANSACTION",
1740                Self::SingleDump => "LOG_FREQUENCY_SINGLE_DUMP",
1741            }
1742        }
1743        /// Creates an enum from field names used in the ProtoBuf definition.
1744        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1745            match value {
1746                "LOG_FREQUENCY_UNSPECIFIED" => Some(Self::Unspecified),
1747                "LOG_FREQUENCY_FRAME" => Some(Self::Frame),
1748                "LOG_FREQUENCY_TRANSACTION" => Some(Self::Transaction),
1749                "LOG_FREQUENCY_SINGLE_DUMP" => Some(Self::SingleDump),
1750                _ => None,
1751            }
1752        }
1753    }
1754    #[derive(
1755        Clone,
1756        Copy,
1757        Debug,
1758        PartialEq,
1759        Eq,
1760        Hash,
1761        PartialOrd,
1762        Ord,
1763        ::prost::Enumeration
1764    )]
1765    #[repr(i32)]
1766    pub enum LogLevel {
1767        Unspecified = 0,
1768        /// Logs all elements with maximum amount of information.
1769        Verbose = 1,
1770        /// Logs all elements but doesn't write all configuration data.
1771        Debug = 2,
1772        /// Logs only visible elements, with the minimum amount of performance
1773        /// overhead
1774        Critical = 3,
1775    }
1776    impl LogLevel {
1777        /// String value of the enum field names used in the ProtoBuf definition.
1778        ///
1779        /// The values are not transformed in any way and thus are considered stable
1780        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1781        pub fn as_str_name(&self) -> &'static str {
1782            match self {
1783                Self::Unspecified => "LOG_LEVEL_UNSPECIFIED",
1784                Self::Verbose => "LOG_LEVEL_VERBOSE",
1785                Self::Debug => "LOG_LEVEL_DEBUG",
1786                Self::Critical => "LOG_LEVEL_CRITICAL",
1787            }
1788        }
1789        /// Creates an enum from field names used in the ProtoBuf definition.
1790        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1791            match value {
1792                "LOG_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
1793                "LOG_LEVEL_VERBOSE" => Some(Self::Verbose),
1794                "LOG_LEVEL_DEBUG" => Some(Self::Debug),
1795                "LOG_LEVEL_CRITICAL" => Some(Self::Critical),
1796                _ => None,
1797            }
1798        }
1799    }
1800    #[derive(
1801        Clone,
1802        Copy,
1803        Debug,
1804        PartialEq,
1805        Eq,
1806        Hash,
1807        PartialOrd,
1808        Ord,
1809        ::prost::Enumeration
1810    )]
1811    #[repr(i32)]
1812    pub enum LogMode {
1813        Unspecified = 0,
1814        /// Always logs a full state dump of the window hierarchy.
1815        FullState = 1,
1816        /// Logs a full state dump of the window hierarchy only when tracing starts.
1817        /// The following trace packets are lightweight patches containing only the
1818        /// last changes.
1819        Incremental = 2,
1820    }
1821    impl LogMode {
1822        /// String value of the enum field names used in the ProtoBuf definition.
1823        ///
1824        /// The values are not transformed in any way and thus are considered stable
1825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1826        pub fn as_str_name(&self) -> &'static str {
1827            match self {
1828                Self::Unspecified => "LOG_MODE_UNSPECIFIED",
1829                Self::FullState => "LOG_MODE_FULL_STATE",
1830                Self::Incremental => "LOG_MODE_INCREMENTAL",
1831            }
1832        }
1833        /// Creates an enum from field names used in the ProtoBuf definition.
1834        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1835            match value {
1836                "LOG_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1837                "LOG_MODE_FULL_STATE" => Some(Self::FullState),
1838                "LOG_MODE_INCREMENTAL" => Some(Self::Incremental),
1839                _ => None,
1840            }
1841        }
1842    }
1843}
1844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1845pub struct ChromeConfig {
1846    #[prost(string, optional, tag = "1")]
1847    pub trace_config: ::core::option::Option<::prost::alloc::string::String>,
1848    /// When enabled, the data source should only fill in fields in the output that
1849    /// are not potentially privacy sensitive.
1850    #[prost(bool, optional, tag = "2")]
1851    pub privacy_filtering_enabled: ::core::option::Option<bool>,
1852    /// Instead of emitting binary protobuf, convert the trace data to the legacy
1853    /// JSON format. Note that the trace data will still be returned as a series of
1854    /// TracePackets, but the embedded data will be JSON instead of serialized
1855    /// protobuf.
1856    #[prost(bool, optional, tag = "3")]
1857    pub convert_to_legacy_json: ::core::option::Option<bool>,
1858    #[prost(enumeration = "chrome_config::ClientPriority", optional, tag = "4")]
1859    pub client_priority: ::core::option::Option<i32>,
1860    /// Applicable only when using legacy JSON format.
1861    /// If |json_agent_label_filter| is not empty, only data pertaining to
1862    /// the specified tracing agent label (e.g. "traceEvents") will be returned.
1863    #[prost(string, optional, tag = "5")]
1864    pub json_agent_label_filter: ::core::option::Option<::prost::alloc::string::String>,
1865    ///   When enabled, event names should not contain package names.
1866    #[prost(bool, optional, tag = "6")]
1867    pub event_package_name_filter_enabled: ::core::option::Option<bool>,
1868}
1869/// Nested message and enum types in `ChromeConfig`.
1870pub mod chrome_config {
1871    /// Priority of the tracing session client. A higher priority session may
1872    /// preempt a lower priority one in configurations where concurrent sessions
1873    /// aren't supported.
1874    #[derive(
1875        Clone,
1876        Copy,
1877        Debug,
1878        PartialEq,
1879        Eq,
1880        Hash,
1881        PartialOrd,
1882        Ord,
1883        ::prost::Enumeration
1884    )]
1885    #[repr(i32)]
1886    pub enum ClientPriority {
1887        Unknown = 0,
1888        Background = 1,
1889        UserInitiated = 2,
1890    }
1891    impl ClientPriority {
1892        /// String value of the enum field names used in the ProtoBuf definition.
1893        ///
1894        /// The values are not transformed in any way and thus are considered stable
1895        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1896        pub fn as_str_name(&self) -> &'static str {
1897            match self {
1898                Self::Unknown => "UNKNOWN",
1899                Self::Background => "BACKGROUND",
1900                Self::UserInitiated => "USER_INITIATED",
1901            }
1902        }
1903        /// Creates an enum from field names used in the ProtoBuf definition.
1904        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1905            match value {
1906                "UNKNOWN" => Some(Self::Unknown),
1907                "BACKGROUND" => Some(Self::Background),
1908                "USER_INITIATED" => Some(Self::UserInitiated),
1909                _ => None,
1910            }
1911        }
1912    }
1913}
1914#[derive(Clone, PartialEq, ::prost::Message)]
1915pub struct ChromiumHistogramSamplesConfig {
1916    /// List of histograms to record. If no histogram is specified, all histograms
1917    /// are recorded.
1918    #[prost(message, repeated, tag = "1")]
1919    pub histograms: ::prost::alloc::vec::Vec<
1920        chromium_histogram_samples_config::HistogramSample,
1921    >,
1922    /// Default: false (i.e. histogram names are NOT filtered out by default)
1923    /// When true, histogram_name will be filtered out.
1924    #[prost(bool, optional, tag = "2")]
1925    pub filter_histogram_names: ::core::option::Option<bool>,
1926}
1927/// Nested message and enum types in `ChromiumHistogramSamplesConfig`.
1928pub mod chromium_histogram_samples_config {
1929    /// Records when a value within the specified bounds \[min_value, max_value\] is
1930    /// emitted into a Chrome histogram.
1931    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1932    pub struct HistogramSample {
1933        #[prost(string, optional, tag = "1")]
1934        pub histogram_name: ::core::option::Option<::prost::alloc::string::String>,
1935        #[prost(int64, optional, tag = "2")]
1936        pub min_value: ::core::option::Option<i64>,
1937        #[prost(int64, optional, tag = "3")]
1938        pub max_value: ::core::option::Option<i64>,
1939    }
1940}
1941#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1942pub struct ChromiumSamplingHeapProfilerConfig {
1943    /// Sampling interval in bytes.
1944    #[prost(uint64, optional, tag = "1")]
1945    pub sampling_interval_bytes: ::core::option::Option<u64>,
1946    /// Sampling interval in milliseconds.
1947    #[prost(uint32, optional, tag = "2")]
1948    pub sampling_interval_ms: ::core::option::Option<u32>,
1949}
1950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1951pub struct ChromiumStackSamplingProfilerConfig {
1952    /// Sampling interval in milliseconds.
1953    #[prost(uint32, optional, tag = "1")]
1954    pub sampling_interval_ms: ::core::option::Option<u32>,
1955}
1956#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1957pub struct ChromiumSystemMetricsConfig {
1958    /// Samples counters every X ms.
1959    #[prost(uint32, optional, tag = "1")]
1960    pub sampling_interval_ms: ::core::option::Option<u32>,
1961}
1962#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1963pub struct V8Config {
1964    /// Whether to log the actual content of scripts (e.g. content of the JS file
1965    /// that was compiled to generate code).
1966    /// ATTENTION: This could considerably increase the size of the resuling trace
1967    ///             file.
1968    #[prost(bool, optional, tag = "1")]
1969    pub log_script_sources: ::core::option::Option<bool>,
1970    /// Whether to log the generated code for jitted functions (machine code or
1971    /// bytecode).
1972    /// ATTENTION: This could considerably increase the size of the resuling trace
1973    ///             file.
1974    #[prost(bool, optional, tag = "2")]
1975    pub log_instructions: ::core::option::Option<bool>,
1976}
1977/// Proto definition based on the struct _EVENT_TRACE_PROPERTIES definition
1978/// See: <https://learn.microsoft.com/en-us/windows/win32/api/evntrace/>
1979/// ns-evntrace-event_trace_properties
1980///
1981/// See the list of keywords for for individual providers.
1982/// <https://learn.microsoft.com/en-us/windows/win32/etw/system-providers>
1983#[derive(Clone, PartialEq, ::prost::Message)]
1984pub struct EtwConfig {
1985    /// The kernel_flags determines the flags that will be used by the etw tracing
1986    /// session. These kernel flags have been built to expose the useful events
1987    /// captured from the kernel mode only.
1988    #[deprecated]
1989    #[prost(
1990        enumeration = "etw_config::KernelFlag",
1991        repeated,
1992        packed = "false",
1993        tag = "1"
1994    )]
1995    pub kernel_flags: ::prost::alloc::vec::Vec<i32>,
1996    /// Provides events relating to the scheduler.
1997    #[prost(string, repeated, tag = "2")]
1998    pub scheduler_provider_events: ::prost::alloc::vec::Vec<
1999        ::prost::alloc::string::String,
2000    >,
2001    /// Provides events relating to the memory manager.
2002    #[prost(string, repeated, tag = "3")]
2003    pub memory_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2004    /// Provides events relating to file I/O.
2005    #[deprecated]
2006    #[prost(string, repeated, tag = "4")]
2007    pub file_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2008    /// Events for which stacks should be collected.
2009    #[prost(string, repeated, tag = "5")]
2010    pub stack_sampling_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2011    /// Provides events relating to disk I/O.
2012    #[deprecated]
2013    #[prost(string, repeated, tag = "6")]
2014    pub disk_provider_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2015    /// Provides events relating to multiple kinds of IO including disk, cache, and
2016    /// network.
2017    #[prost(string, repeated, tag = "7")]
2018    pub system_io_provider_events: ::prost::alloc::vec::Vec<
2019        ::prost::alloc::string::String,
2020    >,
2021    /// Debug IDs for images whose stack samples should be symbolized.
2022    #[prost(message, repeated, tag = "8")]
2023    pub stack_sampling_debug_ids: ::prost::alloc::vec::Vec<etw_config::DebugId>,
2024}
2025/// Nested message and enum types in `EtwConfig`.
2026pub mod etw_config {
2027    /// A debug ID that uniquely identifies an image (i.e., executable) for
2028    /// symbolization when stack sampling.
2029    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2030    pub struct DebugId {
2031        /// The full path to the image file.
2032        #[prost(string, optional, tag = "1")]
2033        pub path: ::core::option::Option<::prost::alloc::string::String>,
2034        /// The unique identifier for the image file.
2035        #[prost(string, optional, tag = "2")]
2036        pub debug_id: ::core::option::Option<::prost::alloc::string::String>,
2037    }
2038    /// The KernelFlag represent list of kernel flags that we are intrested in.
2039    /// To get a more extensive list run 'xperf -providers k'.
2040    #[derive(
2041        Clone,
2042        Copy,
2043        Debug,
2044        PartialEq,
2045        Eq,
2046        Hash,
2047        PartialOrd,
2048        Ord,
2049        ::prost::Enumeration
2050    )]
2051    #[repr(i32)]
2052    pub enum KernelFlag {
2053        Cswitch = 0,
2054        Dispatcher = 1,
2055    }
2056    impl KernelFlag {
2057        /// String value of the enum field names used in the ProtoBuf definition.
2058        ///
2059        /// The values are not transformed in any way and thus are considered stable
2060        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2061        pub fn as_str_name(&self) -> &'static str {
2062            match self {
2063                Self::Cswitch => "CSWITCH",
2064                Self::Dispatcher => "DISPATCHER",
2065            }
2066        }
2067        /// Creates an enum from field names used in the ProtoBuf definition.
2068        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2069            match value {
2070                "CSWITCH" => Some(Self::Cswitch),
2071                "DISPATCHER" => Some(Self::Dispatcher),
2072                _ => None,
2073            }
2074        }
2075    }
2076}
2077#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2078pub struct FrozenFtraceConfig {
2079    /// The instance name which stores the previous boot ftrace data. Required.
2080    #[prost(string, optional, tag = "1")]
2081    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2082}
2083/// Next id: 38
2084#[derive(Clone, PartialEq, ::prost::Message)]
2085pub struct FtraceConfig {
2086    /// Ftrace events to record, example: "sched/sched_switch".
2087    #[prost(string, repeated, tag = "1")]
2088    pub ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2089    /// Android-specific event categories:
2090    #[prost(string, repeated, tag = "2")]
2091    pub atrace_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2092    #[prost(string, repeated, tag = "3")]
2093    pub atrace_apps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2094    /// Some processes can emit data through atrace or through the perfetto SDK via
2095    /// the "track_event" data source. For these categories, the SDK will be
2096    /// preferred, if possible, for this config.
2097    #[prost(string, repeated, tag = "28")]
2098    pub atrace_categories_prefer_sdk: ::prost::alloc::vec::Vec<
2099        ::prost::alloc::string::String,
2100    >,
2101    /// If true, do *not* add in extra ftrace events when |atrace_categories| are
2102    /// set. This skips the legacy "atrace" behaviour of adding hardcoded ftrace
2103    /// events for convenience (and the vendor-specific events on top).
2104    /// Introduced in: perfetto v52.
2105    #[prost(bool, optional, tag = "34")]
2106    pub atrace_userspace_only: ::core::option::Option<bool>,
2107    /// Size of each per-cpu kernel ftrace ring buffer.
2108    /// Not guaranteed if there are multiple concurrent tracing sessions, as the
2109    /// buffers cannot be resized without pausing recording in the kernel.
2110    #[prost(uint32, optional, tag = "10")]
2111    pub buffer_size_kb: ::core::option::Option<u32>,
2112    /// If true, |buffer_size_kb| is interpreted as a lower bound, allowing the
2113    /// implementation to choose a bigger buffer size.
2114    ///
2115    /// Most configs for perfetto v43+ should simply leave both fields unset.
2116    ///
2117    /// If you need a config compatible with a range of perfetto builds and you
2118    /// used to set a non-default buffer_size_kb, consider setting both fields.
2119    /// Example:
2120    ///    buffer_size_kb: 4096
2121    ///    buffer_size_lower_bound: true
2122    /// On older builds, the per-cpu buffers will be exactly 4 MB.
2123    /// On v43+, buffers will be at least 4 MB.
2124    /// In both cases, neither is guaranteed if there are other concurrent
2125    /// perfetto ftrace sessions, as the buffers cannot be resized without pausing
2126    /// the recording in the kernel.
2127    /// Introduced in: perfetto v43.
2128    #[prost(bool, optional, tag = "27")]
2129    pub buffer_size_lower_bound: ::core::option::Option<bool>,
2130    /// If set, specifies how often the tracing daemon reads from the kernel ring
2131    /// buffer. Not guaranteed if there are multiple concurrent tracing sessions.
2132    /// Leave unset unless you're fine-tuning a local config.
2133    #[prost(uint32, optional, tag = "11")]
2134    pub drain_period_ms: ::core::option::Option<u32>,
2135    /// If set, the tracing daemon will read kernel ring buffers as soon as
2136    /// they're filled past this percentage of occupancy. In other words, a value
2137    /// of 50 means that a read pass is triggered as soon as any per-cpu buffer is
2138    /// half-full. Not guaranteed if there are multiple concurrent tracing
2139    /// sessions.
2140    /// Currently does nothing on Linux kernels below v6.9.
2141    /// Introduced in: perfetto v48.
2142    #[prost(uint32, optional, tag = "29")]
2143    pub drain_buffer_percent: ::core::option::Option<u32>,
2144    #[prost(message, optional, tag = "12")]
2145    pub compact_sched: ::core::option::Option<ftrace_config::CompactSchedConfig>,
2146    #[prost(message, optional, tag = "22")]
2147    pub print_filter: ::core::option::Option<ftrace_config::PrintFilter>,
2148    /// Enables symbol name resolution against /proc/kallsyms.
2149    /// It requires that either traced_probes is running as root or that
2150    /// kptr_restrict has been manually lowered.
2151    /// It does not disclose KASLR, symbol addresses are mangled.
2152    #[prost(bool, optional, tag = "13")]
2153    pub symbolize_ksyms: ::core::option::Option<bool>,
2154    #[prost(enumeration = "ftrace_config::KsymsMemPolicy", optional, tag = "17")]
2155    pub ksyms_mem_policy: ::core::option::Option<i32>,
2156    /// When this boolean is true AND the ftrace_events contains "kmem/rss_stat",
2157    /// this option causes traced_probes to enable the "kmem/rss_stat_throttled"
2158    /// event instead if present, and fall back to "kmem/rss_stat" if not present.
2159    /// The historical context for this is the following:
2160    /// - Up to Android S (12), the rss_stat was internally throttled in its
2161    ///    kernel implementation.
2162    /// - A change introduced in the kernels after S has introduced a new
2163    ///    "rss_stat_throttled" making the original "rss_stat" event unthrottled
2164    ///    (hence very spammy).
2165    /// - Not all Android T/13 devices will receive a new kernel though, hence we
2166    ///    need to deal with both cases.
2167    /// For more context: go/rss-stat-throttled.
2168    #[prost(bool, optional, tag = "15")]
2169    pub throttle_rss_stat: ::core::option::Option<bool>,
2170    /// If true, use self-describing proto messages when writing events not known
2171    /// at compile time (aka generic events). Each event bundle will have a set of
2172    /// serialised proto descriptors for events within that bundle.
2173    ///
2174    /// Default if unset:
2175    /// * v53+: true
2176    /// * before v53: false
2177    ///
2178    /// Added in: perfetto v50.
2179    #[prost(bool, optional, tag = "32")]
2180    pub denser_generic_event_encoding: ::core::option::Option<bool>,
2181    /// If true, avoid enabling events that aren't statically known by
2182    /// traced_probes. Otherwise, the default is to emit such events as
2183    /// GenericFtraceEvent protos.
2184    /// Prefer to keep this flag at its default. This was added for Android
2185    /// tracing, where atrace categories and/or atrace HAL requested events can
2186    /// expand to events that aren't of interest to the tracing user.
2187    /// Introduced in: Android T.
2188    #[prost(bool, optional, tag = "16")]
2189    pub disable_generic_events: ::core::option::Option<bool>,
2190    /// The subset of syscalls to record. To record all syscalls, leave this unset
2191    /// and add "ftrace_events: raw_syscalls/sys_{enter,exit}" to the config.
2192    /// * before perfetto v43, requires the config to also enable
2193    ///    raw_syscalls/sys_{enter,exit}.
2194    /// * perfetto v43+ does the right thing if you set only this field.
2195    /// Example: \["sys_read", "sys_open"\].
2196    /// Introduced in: Android U.
2197    #[prost(string, repeated, tag = "18")]
2198    pub syscall_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2199    /// If true, enable the "function_graph" kernel tracer that emits events
2200    /// whenever a kernel function is entered and exited
2201    /// (funcgraph_entry/funcgraph_exit).
2202    /// Notes on use:
2203    /// * Requires |symbolize_ksyms| for function name resolution.
2204    /// * Use |function_filters| or |function_graph_roots| to constrain the traced
2205    ///    set of functions, otherwise the event bandwidth will be too high for
2206    ///    practical use.
2207    /// * The data source might be rejected if there is already a concurrent
2208    ///    ftrace data source that does not use function graph itself, as we do not
2209    ///    support switching kernel tracers mid-trace.
2210    /// * Requires a kernel compiled with CONFIG_FUNCTION_GRAPH_TRACER. This is
2211    ///    enabled if "cat /sys/kernel/tracing/available_tracers" includes
2212    ///    "function_graph".
2213    /// Android:
2214    /// * Available only on debuggable builds.
2215    /// * Introduced in: Android U.
2216    #[prost(bool, optional, tag = "19")]
2217    pub enable_function_graph: ::core::option::Option<bool>,
2218    /// Constrains the set of functions traced when |enable_function_graph| is
2219    /// true. Supports globs, e.g. "sched*". You can specify multiple filters,
2220    /// in which case all matching functions will be traced. See kernel
2221    /// documentation on ftrace "set_ftrace_filter" file for more details.
2222    /// Android:
2223    /// * Available only on debuggable builds.
2224    /// * Introduced in: Android U.
2225    #[prost(string, repeated, tag = "20")]
2226    pub function_filters: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2227    /// If |enable_function_graph| is true, trace this set of functions *and* all
2228    /// of its callees. Supports globs. Can be set together with
2229    /// |function_filters|, in which case only callees matching the filter will be
2230    /// traced. If setting both, you most likely want all roots to also be
2231    /// included in |function_filters|.
2232    /// Android:
2233    /// * Available only on debuggable builds.
2234    /// * Introduced in: Android U.
2235    #[prost(string, repeated, tag = "21")]
2236    pub function_graph_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2237    /// If |enable_function_graph| is true, only trace the specified
2238    /// number of calls down the stack. Sets the max_graph_depth value
2239    /// in sys/kernel/tracing/
2240    ///
2241    /// Only respected for the first tracing session that enables
2242    /// function_graph tracing.
2243    ///
2244    /// Introduced in: perfetto v51.
2245    /// Supported on: Android 25Q3+.
2246    #[prost(uint32, optional, tag = "33")]
2247    pub function_graph_max_depth: ::core::option::Option<u32>,
2248    /// Ftrace events to record, specific for kprobes and kretprobes
2249    #[prost(message, repeated, tag = "30")]
2250    pub kprobe_events: ::prost::alloc::vec::Vec<ftrace_config::KprobeEvent>,
2251    /// If true, does not clear kernel ftrace buffers when starting the trace.
2252    /// This makes sense only if this is the first ftrace data source instance
2253    /// created after the daemon has been started. Can be useful for gathering boot
2254    /// traces, if ftrace has been separately configured (e.g. via kernel
2255    /// commandline).
2256    /// NB: when configuring the pre-perfetto ftrace, prefer to set
2257    /// "/sys/kernel/tracing/trace_clock" to "boot" if your trace will contain
2258    /// anything besides ftrace. Otherwise timestamps might be skewed.
2259    #[prost(bool, optional, tag = "23")]
2260    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
2261    /// If true, overrides the default timestamp clock and uses a raw hardware
2262    /// based monotonic clock for getting timestamps.
2263    /// * Introduced in: Android U.
2264    #[prost(bool, optional, tag = "24")]
2265    pub use_monotonic_raw_clock: ::core::option::Option<bool>,
2266    /// If |instance_name| is not empty, then attempt to use that tracefs instance
2267    /// for event recording. Normally, this means
2268    /// `/sys/kernel/tracing/instances/$instance_name`.
2269    ///
2270    /// Names "hyp" and "hypervisor" are reserved.
2271    ///
2272    /// The instance must already exist, the tracing daemon *will not* create it
2273    /// for you as it typically doesn't have such permissions.
2274    /// Only a subset of features is guaranteed to work with non-default instances,
2275    /// at the time of writing:
2276    ///   * ftrace_events
2277    ///   * buffer_size_kb
2278    #[prost(string, optional, tag = "25")]
2279    pub instance_name: ::core::option::Option<::prost::alloc::string::String>,
2280    /// For perfetto developer use. If true and on a debuggable android build,
2281    /// serialise raw tracing pages that the implementation cannot parse.
2282    #[prost(bool, optional, tag = "31")]
2283    pub debug_ftrace_abi: ::core::option::Option<bool>,
2284    /// Filter ftrace events by Thread ID (TID).
2285    /// This writes the TIDs to `/sys/kernel/tracing/set_event_pid`.
2286    ///
2287    /// Note: this is an exclusive feature, see:
2288    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2289    ///
2290    /// Introduced in: perfetto v52.
2291    /// Supported on: Android 25Q3+.
2292    #[prost(uint32, repeated, packed = "false", tag = "35")]
2293    pub tids_to_trace: ::prost::alloc::vec::Vec<u32>,
2294    #[prost(message, repeated, tag = "36")]
2295    pub tracefs_options: ::prost::alloc::vec::Vec<ftrace_config::TracefsOption>,
2296    /// This mask restricts tracing to a specific set of CPUs using a
2297    /// comma-separated hex mask. Each hex number (up to 8 digits) represents a
2298    /// 32-bit chunk of the CPU mask.
2299    ///
2300    /// The chunks are ordered from high CPUs to low CPUs (left to right):
2301    ///    - Rightmost chunk: CPUs 0-31
2302    ///    - 2nd chunk from right: CPUs 32-63
2303    ///    - ...and so on.
2304    ///
2305    /// Example (assuming NR_CPUS=128, requiring 4 chunks):
2306    /// The full mask would be in the format: "chunk3,chunk2,chunk1,chunk0"
2307    /// where chunk3 maps to CPUs 96-127, chunk2 to 64-95, chunk1 to 32-63, and
2308    /// chunk0 to 0-31.
2309    ///    - "ffffffff,0,0,0": Enables CPUs 96-127 only.
2310    ///    - "f,ff": Enables CPUs 0-7 (from "ff") and CPUs 32-35 (from "f").
2311    ///
2312    /// Note: This is an exclusive feature, see:
2313    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2314    ///
2315    /// Introduced in: perfetto v52.
2316    /// Supported on: Android 25Q3+.
2317    #[prost(string, optional, tag = "37")]
2318    pub tracing_cpumask: ::core::option::Option<::prost::alloc::string::String>,
2319    /// No-op in perfetto v28+. Name preserved because of existing references in
2320    /// textproto configs.
2321    #[deprecated]
2322    #[prost(bool, optional, tag = "14")]
2323    pub initialize_ksyms_synchronously_for_testing: ::core::option::Option<bool>,
2324}
2325/// Nested message and enum types in `FtraceConfig`.
2326pub mod ftrace_config {
2327    /// Configuration for compact encoding of scheduler events. When enabled (and
2328    /// recording the relevant ftrace events), specific high-volume events are
2329    /// encoded in a denser format than normal.
2330    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2331    pub struct CompactSchedConfig {
2332        /// If true, and sched_switch or sched_waking ftrace events are enabled,
2333        /// record those events in the compact format.
2334        ///
2335        /// If the field is unset, the default is:
2336        /// * perfetto v42.0+: enabled
2337        /// * before: disabled
2338        #[prost(bool, optional, tag = "1")]
2339        pub enabled: ::core::option::Option<bool>,
2340    }
2341    /// Optional filter for "ftrace/print" events.
2342    ///
2343    /// The filter consists of multiple rules. As soon as a rule matches (the rules
2344    /// are processed in order), its `allow` field will be used as the outcome: if
2345    /// `allow` is true, the event will be included in the trace, otherwise it will
2346    /// be discarded. If an event does not match any rule, it will be allowed by
2347    /// default (a rule with an empty prefix and allow=false, disallows everything
2348    /// by default).
2349    #[derive(Clone, PartialEq, ::prost::Message)]
2350    pub struct PrintFilter {
2351        #[prost(message, repeated, tag = "1")]
2352        pub rules: ::prost::alloc::vec::Vec<print_filter::Rule>,
2353    }
2354    /// Nested message and enum types in `PrintFilter`.
2355    pub mod print_filter {
2356        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2357        pub struct Rule {
2358            #[prost(bool, optional, tag = "2")]
2359            pub allow: ::core::option::Option<bool>,
2360            #[prost(oneof = "rule::Match", tags = "1, 3")]
2361            pub r#match: ::core::option::Option<rule::Match>,
2362        }
2363        /// Nested message and enum types in `Rule`.
2364        pub mod rule {
2365            /// Matches an atrace message of the form:
2366            /// <type>|pid|<prefix>...
2367            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2368            pub struct AtraceMessage {
2369                #[prost(string, optional, tag = "1")]
2370                pub r#type: ::core::option::Option<::prost::alloc::string::String>,
2371                #[prost(string, optional, tag = "2")]
2372                pub prefix: ::core::option::Option<::prost::alloc::string::String>,
2373            }
2374            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
2375            pub enum Match {
2376                /// This rule matches if `prefix` matches exactly with the beginning of
2377                /// the "ftrace/print" "buf" field.
2378                #[prost(string, tag = "1")]
2379                Prefix(::prost::alloc::string::String),
2380                /// This rule matches if the "buf" field contains an atrace-style print
2381                /// message as specified in `atrace_msg`.
2382                #[prost(message, tag = "3")]
2383                AtraceMsg(AtraceMessage),
2384            }
2385        }
2386    }
2387    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2388    pub struct KprobeEvent {
2389        /// Kernel function name to attach to, for example "fuse_file_write_iter"
2390        #[prost(string, optional, tag = "1")]
2391        pub probe: ::core::option::Option<::prost::alloc::string::String>,
2392        #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
2393        pub r#type: ::core::option::Option<i32>,
2394    }
2395    /// Nested message and enum types in `KprobeEvent`.
2396    pub mod kprobe_event {
2397        #[derive(
2398            Clone,
2399            Copy,
2400            Debug,
2401            PartialEq,
2402            Eq,
2403            Hash,
2404            PartialOrd,
2405            Ord,
2406            ::prost::Enumeration
2407        )]
2408        #[repr(i32)]
2409        pub enum KprobeType {
2410            Unknown = 0,
2411            Kprobe = 1,
2412            Kretprobe = 2,
2413            Both = 3,
2414        }
2415        impl KprobeType {
2416            /// String value of the enum field names used in the ProtoBuf definition.
2417            ///
2418            /// The values are not transformed in any way and thus are considered stable
2419            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2420            pub fn as_str_name(&self) -> &'static str {
2421                match self {
2422                    Self::Unknown => "KPROBE_TYPE_UNKNOWN",
2423                    Self::Kprobe => "KPROBE_TYPE_KPROBE",
2424                    Self::Kretprobe => "KPROBE_TYPE_KRETPROBE",
2425                    Self::Both => "KPROBE_TYPE_BOTH",
2426                }
2427            }
2428            /// Creates an enum from field names used in the ProtoBuf definition.
2429            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2430                match value {
2431                    "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
2432                    "KPROBE_TYPE_KPROBE" => Some(Self::Kprobe),
2433                    "KPROBE_TYPE_KRETPROBE" => Some(Self::Kretprobe),
2434                    "KPROBE_TYPE_BOTH" => Some(Self::Both),
2435                    _ => None,
2436                }
2437            }
2438        }
2439    }
2440    /// Tracefs options to set directly in the tracefs instance. This is a very
2441    /// niche feature since almost all of the options deal with formatting textual
2442    /// output (the /trace file), which perfetto doesn't use.
2443    ///
2444    /// The options with a known use-case:
2445    /// * event-fork: when using `tids_to_trace` above, the kernel will
2446    ///    automatically add newly spawned descendant threads to the set of TIDs.
2447    ///
2448    /// Full list of options is available at
2449    /// <https://docs.kernel.org/trace/ftrace.html#trace-options.>
2450    ///
2451    /// Note: this is an exclusive feature, see:
2452    /// <https://perfetto.dev/docs/learning-more/android#exclusive-tracing-sessions.>
2453    ///
2454    /// Introduced in: perfetto v52.
2455    /// Supported on: Android 25Q3+.
2456    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2457    pub struct TracefsOption {
2458        /// The name of the tracefs option as found in tracefs/trace_options (without
2459        /// the "no" prefix).
2460        #[prost(string, optional, tag = "1")]
2461        pub name: ::core::option::Option<::prost::alloc::string::String>,
2462        #[prost(enumeration = "tracefs_option::State", optional, tag = "2")]
2463        pub state: ::core::option::Option<i32>,
2464    }
2465    /// Nested message and enum types in `TracefsOption`.
2466    pub mod tracefs_option {
2467        #[derive(
2468            Clone,
2469            Copy,
2470            Debug,
2471            PartialEq,
2472            Eq,
2473            Hash,
2474            PartialOrd,
2475            Ord,
2476            ::prost::Enumeration
2477        )]
2478        #[repr(i32)]
2479        pub enum State {
2480            Unknown = 0,
2481            Enabled = 1,
2482            Disabled = 2,
2483        }
2484        impl State {
2485            /// String value of the enum field names used in the ProtoBuf definition.
2486            ///
2487            /// The values are not transformed in any way and thus are considered stable
2488            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2489            pub fn as_str_name(&self) -> &'static str {
2490                match self {
2491                    Self::Unknown => "STATE_UNKNOWN",
2492                    Self::Enabled => "STATE_ENABLED",
2493                    Self::Disabled => "STATE_DISABLED",
2494                }
2495            }
2496            /// Creates an enum from field names used in the ProtoBuf definition.
2497            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2498                match value {
2499                    "STATE_UNKNOWN" => Some(Self::Unknown),
2500                    "STATE_ENABLED" => Some(Self::Enabled),
2501                    "STATE_DISABLED" => Some(Self::Disabled),
2502                    _ => None,
2503                }
2504            }
2505        }
2506    }
2507    /// When symbolize_ksyms=true, determines whether the traced_probes daemon
2508    /// should keep the symbol map in memory (and reuse it for future tracing
2509    /// sessions) or clear it (saving memory) and re-create it on each tracing
2510    /// session (wasting cpu and wall time).
2511    /// The tradeoff is roughly:
2512    ///   KSYMS_RETAIN: pay a fixed ~1.2 MB cost after the first trace.
2513    ///   KSYMS_CLEANUP_ON_STOP: pay a ~300-500ms cost when starting each trace.
2514    /// Default behavior: KSYMS_CLEANUP_ON_STOP.
2515    #[derive(
2516        Clone,
2517        Copy,
2518        Debug,
2519        PartialEq,
2520        Eq,
2521        Hash,
2522        PartialOrd,
2523        Ord,
2524        ::prost::Enumeration
2525    )]
2526    #[repr(i32)]
2527    pub enum KsymsMemPolicy {
2528        KsymsUnspecified = 0,
2529        KsymsCleanupOnStop = 1,
2530        KsymsRetain = 2,
2531    }
2532    impl KsymsMemPolicy {
2533        /// String value of the enum field names used in the ProtoBuf definition.
2534        ///
2535        /// The values are not transformed in any way and thus are considered stable
2536        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2537        pub fn as_str_name(&self) -> &'static str {
2538            match self {
2539                Self::KsymsUnspecified => "KSYMS_UNSPECIFIED",
2540                Self::KsymsCleanupOnStop => "KSYMS_CLEANUP_ON_STOP",
2541                Self::KsymsRetain => "KSYMS_RETAIN",
2542            }
2543        }
2544        /// Creates an enum from field names used in the ProtoBuf definition.
2545        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2546            match value {
2547                "KSYMS_UNSPECIFIED" => Some(Self::KsymsUnspecified),
2548                "KSYMS_CLEANUP_ON_STOP" => Some(Self::KsymsCleanupOnStop),
2549                "KSYMS_RETAIN" => Some(Self::KsymsRetain),
2550                _ => None,
2551            }
2552        }
2553    }
2554}
2555#[derive(Clone, PartialEq, ::prost::Message)]
2556pub struct GpuCounterConfig {
2557    /// Desired sampling interval for counters.
2558    #[prost(uint64, optional, tag = "1")]
2559    pub counter_period_ns: ::core::option::Option<u64>,
2560    /// Selects which counters to sample. Use either counter_ids or counter_names,
2561    /// not both. Counter IDs and names correspond to the ones described in
2562    /// GpuCounterSpec in the data source descriptor.
2563    ///
2564    /// List of counter IDs to be sampled.
2565    #[prost(uint32, repeated, packed = "false", tag = "2")]
2566    pub counter_ids: ::prost::alloc::vec::Vec<u32>,
2567    /// List of counter names to be sampled. Requires producer support; check
2568    /// GpuCounterDescriptor.supports_counter_names in the data source descriptor.
2569    /// Glob patterns may be used to match multiple counters by name; check
2570    /// GpuCounterDescriptor.supports_counter_name_globs for support.
2571    #[prost(string, repeated, tag = "6")]
2572    pub counter_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2573    /// Fix gpu clock rate during trace session.
2574    #[prost(bool, optional, tag = "4")]
2575    pub fix_gpu_clock: ::core::option::Option<bool>,
2576    /// Sample counters by instrumenting command buffers.
2577    #[prost(oneof = "gpu_counter_config::InstrumentedSamplingMode", tags = "3, 5")]
2578    pub instrumented_sampling_mode: ::core::option::Option<
2579        gpu_counter_config::InstrumentedSamplingMode,
2580    >,
2581}
2582/// Nested message and enum types in `GpuCounterConfig`.
2583pub mod gpu_counter_config {
2584    /// Configuration for sampling counters by instrumenting command buffers.
2585    ///
2586    /// When instrumented_sampling_config is used (instead of the
2587    /// instrumented_sampling bool), the following steps determine whether
2588    /// instrumented counters are enabled for a given GPU activity:
2589    ///
2590    /// 1. Activity name filtering: If activity_name_filters is non-empty, the
2591    ///     activity must match at least one filter. If empty, all activities
2592    ///     pass this step.
2593    /// 2. TX range filtering: If activity_tx_include_globs is non-empty, the
2594    ///     activity must fall within a matching TX range. Activities in TX
2595    ///     ranges matching activity_tx_exclude_globs are excluded (excludes
2596    ///     take precedence over includes). If both are empty, all activities
2597    ///     pass this step.
2598    /// 3. Range-based sampling: If activity_ranges is non-empty, only
2599    ///     activities within the specified skip/count ranges are instrumented.
2600    ///     If empty, all activities that passed the previous steps are
2601    ///     instrumented.
2602    #[derive(Clone, PartialEq, ::prost::Message)]
2603    pub struct InstrumentedSamplingConfig {
2604        /// GPU activity name filters. An activity matches if it matches any filter.
2605        #[prost(message, repeated, tag = "3")]
2606        pub activity_name_filters: ::prost::alloc::vec::Vec<
2607            instrumented_sampling_config::ActivityNameFilter,
2608        >,
2609        /// Glob patterns to use for including GPU activities in TX ranges. TX
2610        /// ranges are in-process annotations that mark different sections of GPU
2611        /// work (e.g. NVTX ranges for CUDA). TX ranges can be nested, and an
2612        /// activity is included if any range in its nesting hierarchy matches.
2613        /// Only activities that fall within a matching TX range will be
2614        /// instrumented.
2615        #[prost(string, repeated, tag = "6")]
2616        pub activity_tx_include_globs: ::prost::alloc::vec::Vec<
2617            ::prost::alloc::string::String,
2618        >,
2619        /// Glob patterns to use for excluding GPU activities from TX ranges.
2620        /// TX ranges can be nested, and an activity is excluded if any range
2621        /// in its nesting hierarchy matches. Excludes take precedence over
2622        /// includes.
2623        #[prost(string, repeated, tag = "7")]
2624        pub activity_tx_exclude_globs: ::prost::alloc::vec::Vec<
2625            ::prost::alloc::string::String,
2626        >,
2627        /// Ranges of GPU activities to instrument. Applied after activity name
2628        /// and TX range filters. If empty, all activities that passed the
2629        /// previous filters are instrumented.
2630        #[prost(message, repeated, tag = "5")]
2631        pub activity_ranges: ::prost::alloc::vec::Vec<
2632            instrumented_sampling_config::ActivityRange,
2633        >,
2634    }
2635    /// Nested message and enum types in `InstrumentedSamplingConfig`.
2636    pub mod instrumented_sampling_config {
2637        /// Filters GPU activities by name. Each filter specifies a glob pattern
2638        /// and the basis for matching (mangled or demangled kernel name).
2639        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2640        pub struct ActivityNameFilter {
2641            /// required. Glob pattern to use for GPU activity name filtering.
2642            #[prost(string, optional, tag = "1")]
2643            pub name_glob: ::core::option::Option<::prost::alloc::string::String>,
2644            /// Basis for name filtering. Defaults to MANGLED_KERNEL_NAME if not
2645            /// specified.
2646            #[prost(enumeration = "activity_name_filter::NameBase", optional, tag = "2")]
2647            pub name_base: ::core::option::Option<i32>,
2648        }
2649        /// Nested message and enum types in `ActivityNameFilter`.
2650        pub mod activity_name_filter {
2651            #[derive(
2652                Clone,
2653                Copy,
2654                Debug,
2655                PartialEq,
2656                Eq,
2657                Hash,
2658                PartialOrd,
2659                Ord,
2660                ::prost::Enumeration
2661            )]
2662            #[repr(i32)]
2663            pub enum NameBase {
2664                /// Match against the mangled (compiler-encoded) kernel name.
2665                /// Example: for a kernel whose demangled name is
2666                /// "matmul(float*,int,int)", the mangled name might be
2667                /// "_Z6matmulPfii". The glob pattern is matched against this
2668                /// mangled form.
2669                MangledKernelName = 0,
2670                /// Match against the fully demangled kernel name, including
2671                /// parameters, templates, and qualifiers.
2672                /// Example: "matmul(float*,int,int)". The glob pattern is
2673                /// matched against this full demangled form.
2674                DemangledKernelName = 1,
2675                /// Match against only the function name portion of the
2676                /// demangled kernel name, without parameters, templates,
2677                /// return types, or namespaces.
2678                /// Example: "matmul". The glob pattern is matched against
2679                /// just the bare function name.
2680                FunctionName = 2,
2681            }
2682            impl NameBase {
2683                /// String value of the enum field names used in the ProtoBuf definition.
2684                ///
2685                /// The values are not transformed in any way and thus are considered stable
2686                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2687                pub fn as_str_name(&self) -> &'static str {
2688                    match self {
2689                        Self::MangledKernelName => "MANGLED_KERNEL_NAME",
2690                        Self::DemangledKernelName => "DEMANGLED_KERNEL_NAME",
2691                        Self::FunctionName => "FUNCTION_NAME",
2692                    }
2693                }
2694                /// Creates an enum from field names used in the ProtoBuf definition.
2695                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2696                    match value {
2697                        "MANGLED_KERNEL_NAME" => Some(Self::MangledKernelName),
2698                        "DEMANGLED_KERNEL_NAME" => Some(Self::DemangledKernelName),
2699                        "FUNCTION_NAME" => Some(Self::FunctionName),
2700                        _ => None,
2701                    }
2702                }
2703            }
2704        }
2705        /// Defines a range of GPU activities to instrument.
2706        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2707        pub struct ActivityRange {
2708            /// Number of GPU activities to skip before starting to instrument
2709            /// command buffers. Defaults to 0 if not specified.
2710            #[prost(uint32, optional, tag = "1")]
2711            pub skip: ::core::option::Option<u32>,
2712            /// Limit for the number of GPU activities to sample counters for by
2713            /// instrumenting command buffers. Defaults to UINT32_MAX (all
2714            /// remaining activities) if not specified.
2715            #[prost(uint32, optional, tag = "2")]
2716            pub count: ::core::option::Option<u32>,
2717        }
2718    }
2719    /// Sample counters by instrumenting command buffers.
2720    #[derive(Clone, PartialEq, ::prost::Oneof)]
2721    pub enum InstrumentedSamplingMode {
2722        #[prost(bool, tag = "3")]
2723        InstrumentedSampling(bool),
2724        #[prost(message, tag = "5")]
2725        InstrumentedSamplingConfig(InstrumentedSamplingConfig),
2726    }
2727}
2728#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2729pub struct GpuRenderStagesConfig {
2730    /// Enable to separate the color and depth/stencil load and store stages
2731    /// into a separate stages. If disabled, the depth/stencil load and store
2732    /// stages will be combined.  Disabled by default. This option has no effect if
2733    /// Low Overhead mode is enabled.
2734    #[prost(bool, optional, tag = "1")]
2735    pub full_loadstore: ::core::option::Option<bool>,
2736    /// Use the low overhead mode for traces. In this mode render stages are
2737    /// combined into a single workload stage. This provides less granular data but
2738    /// induces minimal GPU overhead. Disabled by default.
2739    #[prost(bool, optional, tag = "2")]
2740    pub low_overhead: ::core::option::Option<bool>,
2741    /// Trace metrics to capture for each render stage
2742    #[prost(string, repeated, tag = "3")]
2743    pub trace_metrics: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2744    /// Enable per-draw-call slices, with real per-occurrence timestamps and metric
2745    /// values, on the gpu.renderstages data source. Disabled by default.
2746    /// When drawcall_stages is enabled, full_loadstore and low_overhead are
2747    /// ignored and their default values are used.
2748    #[prost(bool, optional, tag = "4")]
2749    pub drawcall_stages: ::core::option::Option<bool>,
2750}
2751#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2752pub struct VulkanMemoryConfig {
2753    /// Tracking driver memory usage events
2754    #[prost(bool, optional, tag = "1")]
2755    pub track_driver_memory_usage: ::core::option::Option<bool>,
2756    /// Tracking device memory usage events
2757    #[prost(bool, optional, tag = "2")]
2758    pub track_device_memory_usage: ::core::option::Option<bool>,
2759}
2760/// WARNING: unmaintained and deprecated. Likely won't work at all on modern
2761/// systems.
2762#[derive(Clone, PartialEq, ::prost::Message)]
2763pub struct InodeFileConfig {
2764    /// How long to pause between batches.
2765    #[prost(uint32, optional, tag = "1")]
2766    pub scan_interval_ms: ::core::option::Option<u32>,
2767    /// How long to wait before the first scan in order to accumulate inodes.
2768    #[prost(uint32, optional, tag = "2")]
2769    pub scan_delay_ms: ::core::option::Option<u32>,
2770    /// How many inodes to scan in one batch.
2771    #[prost(uint32, optional, tag = "3")]
2772    pub scan_batch_size: ::core::option::Option<u32>,
2773    /// Do not scan for inodes not found in the static map.
2774    #[prost(bool, optional, tag = "4")]
2775    pub do_not_scan: ::core::option::Option<bool>,
2776    /// If non-empty, only scan inodes corresponding to block devices named in
2777    /// this list.
2778    #[prost(string, repeated, tag = "5")]
2779    pub scan_mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2780    /// When encountering an inode belonging to a block device corresponding
2781    /// to one of the mount points in this map, scan its scan_roots instead.
2782    #[prost(message, repeated, tag = "6")]
2783    pub mount_point_mapping: ::prost::alloc::vec::Vec<
2784        inode_file_config::MountPointMappingEntry,
2785    >,
2786}
2787/// Nested message and enum types in `InodeFileConfig`.
2788pub mod inode_file_config {
2789    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2790    pub struct MountPointMappingEntry {
2791        #[prost(string, optional, tag = "1")]
2792        pub mountpoint: ::core::option::Option<::prost::alloc::string::String>,
2793        #[prost(string, repeated, tag = "2")]
2794        pub scan_roots: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2795    }
2796}
2797#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2798pub struct ConsoleConfig {
2799    #[prost(enumeration = "console_config::Output", optional, tag = "1")]
2800    pub output: ::core::option::Option<i32>,
2801    #[prost(bool, optional, tag = "2")]
2802    pub enable_colors: ::core::option::Option<bool>,
2803}
2804/// Nested message and enum types in `ConsoleConfig`.
2805pub mod console_config {
2806    #[derive(
2807        Clone,
2808        Copy,
2809        Debug,
2810        PartialEq,
2811        Eq,
2812        Hash,
2813        PartialOrd,
2814        Ord,
2815        ::prost::Enumeration
2816    )]
2817    #[repr(i32)]
2818    pub enum Output {
2819        Unspecified = 0,
2820        Stdout = 1,
2821        Stderr = 2,
2822    }
2823    impl Output {
2824        /// String value of the enum field names used in the ProtoBuf definition.
2825        ///
2826        /// The values are not transformed in any way and thus are considered stable
2827        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2828        pub fn as_str_name(&self) -> &'static str {
2829            match self {
2830                Self::Unspecified => "OUTPUT_UNSPECIFIED",
2831                Self::Stdout => "OUTPUT_STDOUT",
2832                Self::Stderr => "OUTPUT_STDERR",
2833            }
2834        }
2835        /// Creates an enum from field names used in the ProtoBuf definition.
2836        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2837            match value {
2838                "OUTPUT_UNSPECIFIED" => Some(Self::Unspecified),
2839                "OUTPUT_STDOUT" => Some(Self::Stdout),
2840                "OUTPUT_STDERR" => Some(Self::Stderr),
2841                _ => None,
2842            }
2843        }
2844    }
2845}
2846/// Configuration for trace packet interception. Used for diverting trace data to
2847/// non-Perfetto sources (e.g., logging to the console, ETW) when using the
2848/// Perfetto SDK.
2849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2850pub struct InterceptorConfig {
2851    /// Matches the name given to RegisterInterceptor().
2852    #[prost(string, optional, tag = "1")]
2853    pub name: ::core::option::Option<::prost::alloc::string::String>,
2854    #[prost(message, optional, tag = "100")]
2855    pub console_config: ::core::option::Option<ConsoleConfig>,
2856}
2857/// Config for the "linux.cgroup" data source, which records values reported by
2858/// cgroup v2 controllers. Only the memory controller (memcg) on android is
2859/// supported at the moment.
2860///
2861/// Example:
2862///
2863/// data_sources {
2864///    config {
2865///      name: "linux.cgroup"
2866///      cgroup_config {
2867///        memcg_config {
2868///          field: MEMCG_CURRENT
2869///          field: MEMCG_HIGH
2870///          field: MEMCG_STAT_ALL
2871///          field: MEMCG_EVENTS_LOCAL_HIGH
2872///
2873///          poll_period_ms: 1000
2874///
2875///          android_scope {
2876///            level: LEVEL_UID
2877///          }
2878///          android_scope {
2879///            target_cmdline: "surfaceflinger"
2880///            level: LEVEL_PID
2881///          }
2882///        }
2883///      }
2884///    }
2885/// }
2886#[derive(Clone, PartialEq, ::prost::Message)]
2887pub struct CgroupConfig {
2888    /// Memory controller (memcg).
2889    #[prost(message, optional, tag = "1")]
2890    pub memcg_config: ::core::option::Option<MemcgConfig>,
2891}
2892/// Config for recording memory controller (memcg) values for a set of cgroups.
2893#[derive(Clone, PartialEq, ::prost::Message)]
2894pub struct MemcgConfig {
2895    /// What values to record, the enum covers both single-valued files
2896    /// (e.g. memory.current) and files with multiple values (e.g. memory.stat).
2897    /// If unset, defaults to {MEMCG_CURRENT, MEMCG_STAT_ANON, MEMCG_STAT_FILE}.
2898    #[prost(
2899        enumeration = "memcg_config::MemcgField",
2900        repeated,
2901        packed = "false",
2902        tag = "1"
2903    )]
2904    pub field: ::prost::alloc::vec::Vec<i32>,
2905    /// Android: Which cgroups to record. Can be specified multiple times. If
2906    /// scopes overlap, a given cgroup will be recorded at most once.
2907    /// If unset, defaults to uid-level for all uids.
2908    #[prost(message, repeated, tag = "2")]
2909    pub android_scope: ::prost::alloc::vec::Vec<memcg_config::AndroidScope>,
2910    /// How often to poll the selected cgroups.
2911    /// If zero or unset, records values once.
2912    /// The implementation enforces a minimum on the period (100 ms at the time of
2913    /// writing).
2914    #[prost(uint32, optional, tag = "3")]
2915    pub poll_period_ms: ::core::option::Option<u32>,
2916}
2917/// Nested message and enum types in `MemcgConfig`.
2918pub mod memcg_config {
2919    /// Filters cgroups in the hierarchy created by android's libprocessgroup.
2920    ///
2921    /// Each scope maps onto a set of cgroup paths
2922    /// ({apps,system}/uid_<uid>/pid_<pid>) using the filters below, and |level|
2923    /// picks at which levels of the hierarchy the values are recorded. E.g. for
2924    /// an app "com.example.app" with uid 10123, and surfaceflinger running as pid
2925    /// 597 with uid 1000:
2926    /// * {package_name: "com.example.app", level: LEVEL_UID}
2927    ///      -> apps/uid_10123
2928    /// * {package_name: "com.example.app", level: LEVEL_PID}
2929    ///      -> apps/uid_10123/pid_* (all of the app's processes)
2930    /// * {target_cmdline: "surfaceflinger", level: LEVEL_PID}
2931    ///      -> system/uid_1000/pid_597
2932    /// * {target_cmdline: "surfaceflinger", level: LEVEL_UID}
2933    ///      -> system/uid_1000 (all of uid 1000, not just surfaceflinger)
2934    /// * {level: LEVEL_UID}
2935    ///      -> {apps,system}/uid_*
2936    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2937    pub struct AndroidScope {
2938        /// If empty, the implementation chooses a level corresponding to the
2939        /// narrowest scope filter below (e.g. target_cmdline -> LEVEL_PID).
2940        #[prost(
2941            enumeration = "android_scope::Level",
2942            repeated,
2943            packed = "false",
2944            tag = "1"
2945        )]
2946        pub level: ::prost::alloc::vec::Vec<i32>,
2947        /// Matches the top-level groups.
2948        #[prost(
2949            enumeration = "android_scope::Group",
2950            repeated,
2951            packed = "false",
2952            tag = "2"
2953        )]
2954        pub group: ::prost::alloc::vec::Vec<i32>,
2955        /// Matches the uid cgroups of the given packages, resolved when the data
2956        /// source starts (packages installed later aren't matched). Note: a package
2957        /// matches in all users/profiles, e.g. both uid_10123 and uid_1010123 for a
2958        /// package with uid 10123.
2959        #[prost(string, repeated, tag = "3")]
2960        pub package_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2961        /// Matches the pid cgroups of processes whose /proc/<pid>/cmdline matches
2962        /// any of the patterns. The patterns follow the same rules as the
2963        /// |target_cmdline| of the profilers:
2964        /// * a pattern can contain a single wildcard (*).
2965        /// * if the pattern starts with a '/', it's matched against the first
2966        ///    segment of the cmdline (argv0). E.g. "/system/bin/surface*".
2967        /// * otherwise, it's matched against the binary name part of argv0. E.g.
2968        ///    "top" or "com.example.app:*".
2969        #[prost(string, repeated, tag = "4")]
2970        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2971        /// Exact uid, without matching across users/profiles.
2972        #[prost(uint32, repeated, packed = "false", tag = "5")]
2973        pub uid: ::prost::alloc::vec::Vec<u32>,
2974        /// Exact pid.
2975        #[prost(uint32, repeated, packed = "false", tag = "6")]
2976        pub pid: ::prost::alloc::vec::Vec<u32>,
2977    }
2978    /// Nested message and enum types in `AndroidScope`.
2979    pub mod android_scope {
2980        #[derive(
2981            Clone,
2982            Copy,
2983            Debug,
2984            PartialEq,
2985            Eq,
2986            Hash,
2987            PartialOrd,
2988            Ord,
2989            ::prost::Enumeration
2990        )]
2991        #[repr(i32)]
2992        pub enum Level {
2993            Unspecified = 0,
2994            /// apps/, system/
2995            Top = 1,
2996            /// apps/uid_*, system/uid_*
2997            Uid = 2,
2998            /// apps/uid_*/pid_*, system/uid_*/pid_*
2999            Pid = 3,
3000        }
3001        impl Level {
3002            /// String value of the enum field names used in the ProtoBuf definition.
3003            ///
3004            /// The values are not transformed in any way and thus are considered stable
3005            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3006            pub fn as_str_name(&self) -> &'static str {
3007                match self {
3008                    Self::Unspecified => "LEVEL_UNSPECIFIED",
3009                    Self::Top => "LEVEL_TOP",
3010                    Self::Uid => "LEVEL_UID",
3011                    Self::Pid => "LEVEL_PID",
3012                }
3013            }
3014            /// Creates an enum from field names used in the ProtoBuf definition.
3015            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3016                match value {
3017                    "LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3018                    "LEVEL_TOP" => Some(Self::Top),
3019                    "LEVEL_UID" => Some(Self::Uid),
3020                    "LEVEL_PID" => Some(Self::Pid),
3021                    _ => None,
3022                }
3023            }
3024        }
3025        #[derive(
3026            Clone,
3027            Copy,
3028            Debug,
3029            PartialEq,
3030            Eq,
3031            Hash,
3032            PartialOrd,
3033            Ord,
3034            ::prost::Enumeration
3035        )]
3036        #[repr(i32)]
3037        pub enum Group {
3038            Unspecified = 0,
3039            /// apps/
3040            Apps = 1,
3041            /// system/
3042            System = 2,
3043        }
3044        impl Group {
3045            /// String value of the enum field names used in the ProtoBuf definition.
3046            ///
3047            /// The values are not transformed in any way and thus are considered stable
3048            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3049            pub fn as_str_name(&self) -> &'static str {
3050                match self {
3051                    Self::Unspecified => "GROUP_UNSPECIFIED",
3052                    Self::Apps => "GROUP_APPS",
3053                    Self::System => "GROUP_SYSTEM",
3054                }
3055            }
3056            /// Creates an enum from field names used in the ProtoBuf definition.
3057            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3058                match value {
3059                    "GROUP_UNSPECIFIED" => Some(Self::Unspecified),
3060                    "GROUP_APPS" => Some(Self::Apps),
3061                    "GROUP_SYSTEM" => Some(Self::System),
3062                    _ => None,
3063                }
3064            }
3065        }
3066    }
3067    /// Values to record, covering both single-valued files (such as
3068    /// memory.current) and keys within multi-valued files (such as memory.stat).
3069    #[derive(
3070        Clone,
3071        Copy,
3072        Debug,
3073        PartialEq,
3074        Eq,
3075        Hash,
3076        PartialOrd,
3077        Ord,
3078        ::prost::Enumeration
3079    )]
3080    #[repr(i32)]
3081    pub enum MemcgField {
3082        MemcgUnspecified = 0,
3083        /// Single-valued files.
3084        /// memory.current
3085        MemcgCurrent = 1,
3086        /// memory.peak
3087        MemcgPeak = 2,
3088        /// memory.min
3089        MemcgMin = 3,
3090        /// memory.low
3091        MemcgLow = 4,
3092        /// memory.high
3093        MemcgHigh = 5,
3094        /// memory.max
3095        MemcgMax = 6,
3096        /// memory.swap.current
3097        MemcgSwapCurrent = 7,
3098        /// memory.swap.peak
3099        MemcgSwapPeak = 8,
3100        /// memory.swap.high
3101        MemcgSwapHigh = 9,
3102        /// memory.swap.max
3103        MemcgSwapMax = 10,
3104        /// memory.zswap.current
3105        MemcgZswapCurrent = 11,
3106        /// memory.zswap.max
3107        MemcgZswapMax = 12,
3108        /// memory.events (includes events of descendant cgroups).
3109        /// MEMCG_EVENTS_ALL is the same as listing all fields for the file.
3110        MemcgEventsAll = 13,
3111        MemcgEventsLow = 14,
3112        MemcgEventsHigh = 15,
3113        MemcgEventsMax = 16,
3114        MemcgEventsOom = 17,
3115        MemcgEventsOomKill = 18,
3116        MemcgEventsOomGroupKill = 19,
3117        MemcgEventsSockThrottled = 20,
3118        /// memory.events.local (this cgroup only).
3119        /// MEMCG_EVENTS_LOCAL_ALL is the same as listing all fields for the file.
3120        MemcgEventsLocalAll = 21,
3121        MemcgEventsLocalLow = 22,
3122        MemcgEventsLocalHigh = 23,
3123        MemcgEventsLocalMax = 24,
3124        MemcgEventsLocalOom = 25,
3125        MemcgEventsLocalOomKill = 26,
3126        MemcgEventsLocalOomGroupKill = 27,
3127        MemcgEventsLocalSockThrottled = 28,
3128        /// memory.swap.events
3129        /// MEMCG_SWAP_EVENTS_ALL is the same as listing all fields for the file.
3130        MemcgSwapEventsAll = 29,
3131        MemcgSwapEventsHigh = 30,
3132        MemcgSwapEventsMax = 31,
3133        MemcgSwapEventsFail = 32,
3134        /// memory.stat (as of linux v7.3).
3135        /// MEMCG_STAT_ALL is the same as listing all fields for the file.
3136        MemcgStatAll = 33,
3137        MemcgStatAnon = 34,
3138        MemcgStatFile = 35,
3139        MemcgStatKernel = 36,
3140        MemcgStatKernelStack = 37,
3141        MemcgStatPagetables = 38,
3142        MemcgStatSecPagetables = 39,
3143        MemcgStatPercpu = 40,
3144        MemcgStatSock = 41,
3145        MemcgStatVmalloc = 42,
3146        MemcgStatShmem = 43,
3147        MemcgStatZswap = 44,
3148        MemcgStatZswapped = 45,
3149        MemcgStatZswapIncomp = 46,
3150        MemcgStatFileMapped = 47,
3151        MemcgStatFileDirty = 48,
3152        MemcgStatFileWriteback = 49,
3153        MemcgStatSwapcached = 50,
3154        MemcgStatAnonThp = 51,
3155        MemcgStatFileThp = 52,
3156        MemcgStatShmemThp = 53,
3157        MemcgStatInactiveAnon = 54,
3158        MemcgStatActiveAnon = 55,
3159        MemcgStatInactiveFile = 56,
3160        MemcgStatActiveFile = 57,
3161        MemcgStatUnevictable = 58,
3162        MemcgStatSlabReclaimable = 59,
3163        MemcgStatSlabUnreclaimable = 60,
3164        MemcgStatSlab = 61,
3165        MemcgStatHugetlb = 62,
3166        MemcgStatWorkingsetRefaultAnon = 63,
3167        MemcgStatWorkingsetRefaultFile = 64,
3168        MemcgStatWorkingsetActivateAnon = 65,
3169        MemcgStatWorkingsetActivateFile = 66,
3170        MemcgStatWorkingsetRestoreAnon = 67,
3171        MemcgStatWorkingsetRestoreFile = 68,
3172        MemcgStatWorkingsetNodereclaim = 69,
3173        MemcgStatPgdemoteKswapd = 70,
3174        MemcgStatPgdemoteDirect = 71,
3175        MemcgStatPgdemoteKhugepaged = 72,
3176        MemcgStatPgdemoteProactive = 73,
3177        MemcgStatPgstealKswapd = 74,
3178        MemcgStatPgstealDirect = 75,
3179        MemcgStatPgstealKhugepaged = 76,
3180        MemcgStatPgstealProactive = 77,
3181        MemcgStatPgscanKswapd = 78,
3182        MemcgStatPgscanDirect = 79,
3183        MemcgStatPgscanKhugepaged = 80,
3184        MemcgStatPgscanProactive = 81,
3185        MemcgStatPgrefill = 82,
3186        MemcgStatPgpromoteSuccess = 83,
3187        MemcgStatPgscan = 84,
3188        MemcgStatPgsteal = 85,
3189        MemcgStatPswpin = 86,
3190        MemcgStatPswpout = 87,
3191        MemcgStatPgfault = 88,
3192        MemcgStatPgmajfault = 89,
3193        MemcgStatPgactivate = 90,
3194        MemcgStatPgdeactivate = 91,
3195        MemcgStatPglazyfree = 92,
3196        MemcgStatPglazyfreed = 93,
3197        MemcgStatSwpinZero = 94,
3198        MemcgStatSwpoutZero = 95,
3199        MemcgStatZswpin = 96,
3200        MemcgStatZswpout = 97,
3201        MemcgStatZswpwb = 98,
3202        MemcgStatThpFaultAlloc = 99,
3203        MemcgStatThpCollapseAlloc = 100,
3204        MemcgStatThpSwpout = 101,
3205        MemcgStatThpSwpoutFallback = 102,
3206        MemcgStatNumaPagesMigrated = 103,
3207        MemcgStatNumaPteUpdates = 104,
3208        MemcgStatNumaHintFaults = 105,
3209    }
3210    impl MemcgField {
3211        /// String value of the enum field names used in the ProtoBuf definition.
3212        ///
3213        /// The values are not transformed in any way and thus are considered stable
3214        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3215        pub fn as_str_name(&self) -> &'static str {
3216            match self {
3217                Self::MemcgUnspecified => "MEMCG_UNSPECIFIED",
3218                Self::MemcgCurrent => "MEMCG_CURRENT",
3219                Self::MemcgPeak => "MEMCG_PEAK",
3220                Self::MemcgMin => "MEMCG_MIN",
3221                Self::MemcgLow => "MEMCG_LOW",
3222                Self::MemcgHigh => "MEMCG_HIGH",
3223                Self::MemcgMax => "MEMCG_MAX",
3224                Self::MemcgSwapCurrent => "MEMCG_SWAP_CURRENT",
3225                Self::MemcgSwapPeak => "MEMCG_SWAP_PEAK",
3226                Self::MemcgSwapHigh => "MEMCG_SWAP_HIGH",
3227                Self::MemcgSwapMax => "MEMCG_SWAP_MAX",
3228                Self::MemcgZswapCurrent => "MEMCG_ZSWAP_CURRENT",
3229                Self::MemcgZswapMax => "MEMCG_ZSWAP_MAX",
3230                Self::MemcgEventsAll => "MEMCG_EVENTS_ALL",
3231                Self::MemcgEventsLow => "MEMCG_EVENTS_LOW",
3232                Self::MemcgEventsHigh => "MEMCG_EVENTS_HIGH",
3233                Self::MemcgEventsMax => "MEMCG_EVENTS_MAX",
3234                Self::MemcgEventsOom => "MEMCG_EVENTS_OOM",
3235                Self::MemcgEventsOomKill => "MEMCG_EVENTS_OOM_KILL",
3236                Self::MemcgEventsOomGroupKill => "MEMCG_EVENTS_OOM_GROUP_KILL",
3237                Self::MemcgEventsSockThrottled => "MEMCG_EVENTS_SOCK_THROTTLED",
3238                Self::MemcgEventsLocalAll => "MEMCG_EVENTS_LOCAL_ALL",
3239                Self::MemcgEventsLocalLow => "MEMCG_EVENTS_LOCAL_LOW",
3240                Self::MemcgEventsLocalHigh => "MEMCG_EVENTS_LOCAL_HIGH",
3241                Self::MemcgEventsLocalMax => "MEMCG_EVENTS_LOCAL_MAX",
3242                Self::MemcgEventsLocalOom => "MEMCG_EVENTS_LOCAL_OOM",
3243                Self::MemcgEventsLocalOomKill => "MEMCG_EVENTS_LOCAL_OOM_KILL",
3244                Self::MemcgEventsLocalOomGroupKill => "MEMCG_EVENTS_LOCAL_OOM_GROUP_KILL",
3245                Self::MemcgEventsLocalSockThrottled => {
3246                    "MEMCG_EVENTS_LOCAL_SOCK_THROTTLED"
3247                }
3248                Self::MemcgSwapEventsAll => "MEMCG_SWAP_EVENTS_ALL",
3249                Self::MemcgSwapEventsHigh => "MEMCG_SWAP_EVENTS_HIGH",
3250                Self::MemcgSwapEventsMax => "MEMCG_SWAP_EVENTS_MAX",
3251                Self::MemcgSwapEventsFail => "MEMCG_SWAP_EVENTS_FAIL",
3252                Self::MemcgStatAll => "MEMCG_STAT_ALL",
3253                Self::MemcgStatAnon => "MEMCG_STAT_ANON",
3254                Self::MemcgStatFile => "MEMCG_STAT_FILE",
3255                Self::MemcgStatKernel => "MEMCG_STAT_KERNEL",
3256                Self::MemcgStatKernelStack => "MEMCG_STAT_KERNEL_STACK",
3257                Self::MemcgStatPagetables => "MEMCG_STAT_PAGETABLES",
3258                Self::MemcgStatSecPagetables => "MEMCG_STAT_SEC_PAGETABLES",
3259                Self::MemcgStatPercpu => "MEMCG_STAT_PERCPU",
3260                Self::MemcgStatSock => "MEMCG_STAT_SOCK",
3261                Self::MemcgStatVmalloc => "MEMCG_STAT_VMALLOC",
3262                Self::MemcgStatShmem => "MEMCG_STAT_SHMEM",
3263                Self::MemcgStatZswap => "MEMCG_STAT_ZSWAP",
3264                Self::MemcgStatZswapped => "MEMCG_STAT_ZSWAPPED",
3265                Self::MemcgStatZswapIncomp => "MEMCG_STAT_ZSWAP_INCOMP",
3266                Self::MemcgStatFileMapped => "MEMCG_STAT_FILE_MAPPED",
3267                Self::MemcgStatFileDirty => "MEMCG_STAT_FILE_DIRTY",
3268                Self::MemcgStatFileWriteback => "MEMCG_STAT_FILE_WRITEBACK",
3269                Self::MemcgStatSwapcached => "MEMCG_STAT_SWAPCACHED",
3270                Self::MemcgStatAnonThp => "MEMCG_STAT_ANON_THP",
3271                Self::MemcgStatFileThp => "MEMCG_STAT_FILE_THP",
3272                Self::MemcgStatShmemThp => "MEMCG_STAT_SHMEM_THP",
3273                Self::MemcgStatInactiveAnon => "MEMCG_STAT_INACTIVE_ANON",
3274                Self::MemcgStatActiveAnon => "MEMCG_STAT_ACTIVE_ANON",
3275                Self::MemcgStatInactiveFile => "MEMCG_STAT_INACTIVE_FILE",
3276                Self::MemcgStatActiveFile => "MEMCG_STAT_ACTIVE_FILE",
3277                Self::MemcgStatUnevictable => "MEMCG_STAT_UNEVICTABLE",
3278                Self::MemcgStatSlabReclaimable => "MEMCG_STAT_SLAB_RECLAIMABLE",
3279                Self::MemcgStatSlabUnreclaimable => "MEMCG_STAT_SLAB_UNRECLAIMABLE",
3280                Self::MemcgStatSlab => "MEMCG_STAT_SLAB",
3281                Self::MemcgStatHugetlb => "MEMCG_STAT_HUGETLB",
3282                Self::MemcgStatWorkingsetRefaultAnon => {
3283                    "MEMCG_STAT_WORKINGSET_REFAULT_ANON"
3284                }
3285                Self::MemcgStatWorkingsetRefaultFile => {
3286                    "MEMCG_STAT_WORKINGSET_REFAULT_FILE"
3287                }
3288                Self::MemcgStatWorkingsetActivateAnon => {
3289                    "MEMCG_STAT_WORKINGSET_ACTIVATE_ANON"
3290                }
3291                Self::MemcgStatWorkingsetActivateFile => {
3292                    "MEMCG_STAT_WORKINGSET_ACTIVATE_FILE"
3293                }
3294                Self::MemcgStatWorkingsetRestoreAnon => {
3295                    "MEMCG_STAT_WORKINGSET_RESTORE_ANON"
3296                }
3297                Self::MemcgStatWorkingsetRestoreFile => {
3298                    "MEMCG_STAT_WORKINGSET_RESTORE_FILE"
3299                }
3300                Self::MemcgStatWorkingsetNodereclaim => {
3301                    "MEMCG_STAT_WORKINGSET_NODERECLAIM"
3302                }
3303                Self::MemcgStatPgdemoteKswapd => "MEMCG_STAT_PGDEMOTE_KSWAPD",
3304                Self::MemcgStatPgdemoteDirect => "MEMCG_STAT_PGDEMOTE_DIRECT",
3305                Self::MemcgStatPgdemoteKhugepaged => "MEMCG_STAT_PGDEMOTE_KHUGEPAGED",
3306                Self::MemcgStatPgdemoteProactive => "MEMCG_STAT_PGDEMOTE_PROACTIVE",
3307                Self::MemcgStatPgstealKswapd => "MEMCG_STAT_PGSTEAL_KSWAPD",
3308                Self::MemcgStatPgstealDirect => "MEMCG_STAT_PGSTEAL_DIRECT",
3309                Self::MemcgStatPgstealKhugepaged => "MEMCG_STAT_PGSTEAL_KHUGEPAGED",
3310                Self::MemcgStatPgstealProactive => "MEMCG_STAT_PGSTEAL_PROACTIVE",
3311                Self::MemcgStatPgscanKswapd => "MEMCG_STAT_PGSCAN_KSWAPD",
3312                Self::MemcgStatPgscanDirect => "MEMCG_STAT_PGSCAN_DIRECT",
3313                Self::MemcgStatPgscanKhugepaged => "MEMCG_STAT_PGSCAN_KHUGEPAGED",
3314                Self::MemcgStatPgscanProactive => "MEMCG_STAT_PGSCAN_PROACTIVE",
3315                Self::MemcgStatPgrefill => "MEMCG_STAT_PGREFILL",
3316                Self::MemcgStatPgpromoteSuccess => "MEMCG_STAT_PGPROMOTE_SUCCESS",
3317                Self::MemcgStatPgscan => "MEMCG_STAT_PGSCAN",
3318                Self::MemcgStatPgsteal => "MEMCG_STAT_PGSTEAL",
3319                Self::MemcgStatPswpin => "MEMCG_STAT_PSWPIN",
3320                Self::MemcgStatPswpout => "MEMCG_STAT_PSWPOUT",
3321                Self::MemcgStatPgfault => "MEMCG_STAT_PGFAULT",
3322                Self::MemcgStatPgmajfault => "MEMCG_STAT_PGMAJFAULT",
3323                Self::MemcgStatPgactivate => "MEMCG_STAT_PGACTIVATE",
3324                Self::MemcgStatPgdeactivate => "MEMCG_STAT_PGDEACTIVATE",
3325                Self::MemcgStatPglazyfree => "MEMCG_STAT_PGLAZYFREE",
3326                Self::MemcgStatPglazyfreed => "MEMCG_STAT_PGLAZYFREED",
3327                Self::MemcgStatSwpinZero => "MEMCG_STAT_SWPIN_ZERO",
3328                Self::MemcgStatSwpoutZero => "MEMCG_STAT_SWPOUT_ZERO",
3329                Self::MemcgStatZswpin => "MEMCG_STAT_ZSWPIN",
3330                Self::MemcgStatZswpout => "MEMCG_STAT_ZSWPOUT",
3331                Self::MemcgStatZswpwb => "MEMCG_STAT_ZSWPWB",
3332                Self::MemcgStatThpFaultAlloc => "MEMCG_STAT_THP_FAULT_ALLOC",
3333                Self::MemcgStatThpCollapseAlloc => "MEMCG_STAT_THP_COLLAPSE_ALLOC",
3334                Self::MemcgStatThpSwpout => "MEMCG_STAT_THP_SWPOUT",
3335                Self::MemcgStatThpSwpoutFallback => "MEMCG_STAT_THP_SWPOUT_FALLBACK",
3336                Self::MemcgStatNumaPagesMigrated => "MEMCG_STAT_NUMA_PAGES_MIGRATED",
3337                Self::MemcgStatNumaPteUpdates => "MEMCG_STAT_NUMA_PTE_UPDATES",
3338                Self::MemcgStatNumaHintFaults => "MEMCG_STAT_NUMA_HINT_FAULTS",
3339            }
3340        }
3341        /// Creates an enum from field names used in the ProtoBuf definition.
3342        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3343            match value {
3344                "MEMCG_UNSPECIFIED" => Some(Self::MemcgUnspecified),
3345                "MEMCG_CURRENT" => Some(Self::MemcgCurrent),
3346                "MEMCG_PEAK" => Some(Self::MemcgPeak),
3347                "MEMCG_MIN" => Some(Self::MemcgMin),
3348                "MEMCG_LOW" => Some(Self::MemcgLow),
3349                "MEMCG_HIGH" => Some(Self::MemcgHigh),
3350                "MEMCG_MAX" => Some(Self::MemcgMax),
3351                "MEMCG_SWAP_CURRENT" => Some(Self::MemcgSwapCurrent),
3352                "MEMCG_SWAP_PEAK" => Some(Self::MemcgSwapPeak),
3353                "MEMCG_SWAP_HIGH" => Some(Self::MemcgSwapHigh),
3354                "MEMCG_SWAP_MAX" => Some(Self::MemcgSwapMax),
3355                "MEMCG_ZSWAP_CURRENT" => Some(Self::MemcgZswapCurrent),
3356                "MEMCG_ZSWAP_MAX" => Some(Self::MemcgZswapMax),
3357                "MEMCG_EVENTS_ALL" => Some(Self::MemcgEventsAll),
3358                "MEMCG_EVENTS_LOW" => Some(Self::MemcgEventsLow),
3359                "MEMCG_EVENTS_HIGH" => Some(Self::MemcgEventsHigh),
3360                "MEMCG_EVENTS_MAX" => Some(Self::MemcgEventsMax),
3361                "MEMCG_EVENTS_OOM" => Some(Self::MemcgEventsOom),
3362                "MEMCG_EVENTS_OOM_KILL" => Some(Self::MemcgEventsOomKill),
3363                "MEMCG_EVENTS_OOM_GROUP_KILL" => Some(Self::MemcgEventsOomGroupKill),
3364                "MEMCG_EVENTS_SOCK_THROTTLED" => Some(Self::MemcgEventsSockThrottled),
3365                "MEMCG_EVENTS_LOCAL_ALL" => Some(Self::MemcgEventsLocalAll),
3366                "MEMCG_EVENTS_LOCAL_LOW" => Some(Self::MemcgEventsLocalLow),
3367                "MEMCG_EVENTS_LOCAL_HIGH" => Some(Self::MemcgEventsLocalHigh),
3368                "MEMCG_EVENTS_LOCAL_MAX" => Some(Self::MemcgEventsLocalMax),
3369                "MEMCG_EVENTS_LOCAL_OOM" => Some(Self::MemcgEventsLocalOom),
3370                "MEMCG_EVENTS_LOCAL_OOM_KILL" => Some(Self::MemcgEventsLocalOomKill),
3371                "MEMCG_EVENTS_LOCAL_OOM_GROUP_KILL" => {
3372                    Some(Self::MemcgEventsLocalOomGroupKill)
3373                }
3374                "MEMCG_EVENTS_LOCAL_SOCK_THROTTLED" => {
3375                    Some(Self::MemcgEventsLocalSockThrottled)
3376                }
3377                "MEMCG_SWAP_EVENTS_ALL" => Some(Self::MemcgSwapEventsAll),
3378                "MEMCG_SWAP_EVENTS_HIGH" => Some(Self::MemcgSwapEventsHigh),
3379                "MEMCG_SWAP_EVENTS_MAX" => Some(Self::MemcgSwapEventsMax),
3380                "MEMCG_SWAP_EVENTS_FAIL" => Some(Self::MemcgSwapEventsFail),
3381                "MEMCG_STAT_ALL" => Some(Self::MemcgStatAll),
3382                "MEMCG_STAT_ANON" => Some(Self::MemcgStatAnon),
3383                "MEMCG_STAT_FILE" => Some(Self::MemcgStatFile),
3384                "MEMCG_STAT_KERNEL" => Some(Self::MemcgStatKernel),
3385                "MEMCG_STAT_KERNEL_STACK" => Some(Self::MemcgStatKernelStack),
3386                "MEMCG_STAT_PAGETABLES" => Some(Self::MemcgStatPagetables),
3387                "MEMCG_STAT_SEC_PAGETABLES" => Some(Self::MemcgStatSecPagetables),
3388                "MEMCG_STAT_PERCPU" => Some(Self::MemcgStatPercpu),
3389                "MEMCG_STAT_SOCK" => Some(Self::MemcgStatSock),
3390                "MEMCG_STAT_VMALLOC" => Some(Self::MemcgStatVmalloc),
3391                "MEMCG_STAT_SHMEM" => Some(Self::MemcgStatShmem),
3392                "MEMCG_STAT_ZSWAP" => Some(Self::MemcgStatZswap),
3393                "MEMCG_STAT_ZSWAPPED" => Some(Self::MemcgStatZswapped),
3394                "MEMCG_STAT_ZSWAP_INCOMP" => Some(Self::MemcgStatZswapIncomp),
3395                "MEMCG_STAT_FILE_MAPPED" => Some(Self::MemcgStatFileMapped),
3396                "MEMCG_STAT_FILE_DIRTY" => Some(Self::MemcgStatFileDirty),
3397                "MEMCG_STAT_FILE_WRITEBACK" => Some(Self::MemcgStatFileWriteback),
3398                "MEMCG_STAT_SWAPCACHED" => Some(Self::MemcgStatSwapcached),
3399                "MEMCG_STAT_ANON_THP" => Some(Self::MemcgStatAnonThp),
3400                "MEMCG_STAT_FILE_THP" => Some(Self::MemcgStatFileThp),
3401                "MEMCG_STAT_SHMEM_THP" => Some(Self::MemcgStatShmemThp),
3402                "MEMCG_STAT_INACTIVE_ANON" => Some(Self::MemcgStatInactiveAnon),
3403                "MEMCG_STAT_ACTIVE_ANON" => Some(Self::MemcgStatActiveAnon),
3404                "MEMCG_STAT_INACTIVE_FILE" => Some(Self::MemcgStatInactiveFile),
3405                "MEMCG_STAT_ACTIVE_FILE" => Some(Self::MemcgStatActiveFile),
3406                "MEMCG_STAT_UNEVICTABLE" => Some(Self::MemcgStatUnevictable),
3407                "MEMCG_STAT_SLAB_RECLAIMABLE" => Some(Self::MemcgStatSlabReclaimable),
3408                "MEMCG_STAT_SLAB_UNRECLAIMABLE" => Some(Self::MemcgStatSlabUnreclaimable),
3409                "MEMCG_STAT_SLAB" => Some(Self::MemcgStatSlab),
3410                "MEMCG_STAT_HUGETLB" => Some(Self::MemcgStatHugetlb),
3411                "MEMCG_STAT_WORKINGSET_REFAULT_ANON" => {
3412                    Some(Self::MemcgStatWorkingsetRefaultAnon)
3413                }
3414                "MEMCG_STAT_WORKINGSET_REFAULT_FILE" => {
3415                    Some(Self::MemcgStatWorkingsetRefaultFile)
3416                }
3417                "MEMCG_STAT_WORKINGSET_ACTIVATE_ANON" => {
3418                    Some(Self::MemcgStatWorkingsetActivateAnon)
3419                }
3420                "MEMCG_STAT_WORKINGSET_ACTIVATE_FILE" => {
3421                    Some(Self::MemcgStatWorkingsetActivateFile)
3422                }
3423                "MEMCG_STAT_WORKINGSET_RESTORE_ANON" => {
3424                    Some(Self::MemcgStatWorkingsetRestoreAnon)
3425                }
3426                "MEMCG_STAT_WORKINGSET_RESTORE_FILE" => {
3427                    Some(Self::MemcgStatWorkingsetRestoreFile)
3428                }
3429                "MEMCG_STAT_WORKINGSET_NODERECLAIM" => {
3430                    Some(Self::MemcgStatWorkingsetNodereclaim)
3431                }
3432                "MEMCG_STAT_PGDEMOTE_KSWAPD" => Some(Self::MemcgStatPgdemoteKswapd),
3433                "MEMCG_STAT_PGDEMOTE_DIRECT" => Some(Self::MemcgStatPgdemoteDirect),
3434                "MEMCG_STAT_PGDEMOTE_KHUGEPAGED" => {
3435                    Some(Self::MemcgStatPgdemoteKhugepaged)
3436                }
3437                "MEMCG_STAT_PGDEMOTE_PROACTIVE" => Some(Self::MemcgStatPgdemoteProactive),
3438                "MEMCG_STAT_PGSTEAL_KSWAPD" => Some(Self::MemcgStatPgstealKswapd),
3439                "MEMCG_STAT_PGSTEAL_DIRECT" => Some(Self::MemcgStatPgstealDirect),
3440                "MEMCG_STAT_PGSTEAL_KHUGEPAGED" => Some(Self::MemcgStatPgstealKhugepaged),
3441                "MEMCG_STAT_PGSTEAL_PROACTIVE" => Some(Self::MemcgStatPgstealProactive),
3442                "MEMCG_STAT_PGSCAN_KSWAPD" => Some(Self::MemcgStatPgscanKswapd),
3443                "MEMCG_STAT_PGSCAN_DIRECT" => Some(Self::MemcgStatPgscanDirect),
3444                "MEMCG_STAT_PGSCAN_KHUGEPAGED" => Some(Self::MemcgStatPgscanKhugepaged),
3445                "MEMCG_STAT_PGSCAN_PROACTIVE" => Some(Self::MemcgStatPgscanProactive),
3446                "MEMCG_STAT_PGREFILL" => Some(Self::MemcgStatPgrefill),
3447                "MEMCG_STAT_PGPROMOTE_SUCCESS" => Some(Self::MemcgStatPgpromoteSuccess),
3448                "MEMCG_STAT_PGSCAN" => Some(Self::MemcgStatPgscan),
3449                "MEMCG_STAT_PGSTEAL" => Some(Self::MemcgStatPgsteal),
3450                "MEMCG_STAT_PSWPIN" => Some(Self::MemcgStatPswpin),
3451                "MEMCG_STAT_PSWPOUT" => Some(Self::MemcgStatPswpout),
3452                "MEMCG_STAT_PGFAULT" => Some(Self::MemcgStatPgfault),
3453                "MEMCG_STAT_PGMAJFAULT" => Some(Self::MemcgStatPgmajfault),
3454                "MEMCG_STAT_PGACTIVATE" => Some(Self::MemcgStatPgactivate),
3455                "MEMCG_STAT_PGDEACTIVATE" => Some(Self::MemcgStatPgdeactivate),
3456                "MEMCG_STAT_PGLAZYFREE" => Some(Self::MemcgStatPglazyfree),
3457                "MEMCG_STAT_PGLAZYFREED" => Some(Self::MemcgStatPglazyfreed),
3458                "MEMCG_STAT_SWPIN_ZERO" => Some(Self::MemcgStatSwpinZero),
3459                "MEMCG_STAT_SWPOUT_ZERO" => Some(Self::MemcgStatSwpoutZero),
3460                "MEMCG_STAT_ZSWPIN" => Some(Self::MemcgStatZswpin),
3461                "MEMCG_STAT_ZSWPOUT" => Some(Self::MemcgStatZswpout),
3462                "MEMCG_STAT_ZSWPWB" => Some(Self::MemcgStatZswpwb),
3463                "MEMCG_STAT_THP_FAULT_ALLOC" => Some(Self::MemcgStatThpFaultAlloc),
3464                "MEMCG_STAT_THP_COLLAPSE_ALLOC" => Some(Self::MemcgStatThpCollapseAlloc),
3465                "MEMCG_STAT_THP_SWPOUT" => Some(Self::MemcgStatThpSwpout),
3466                "MEMCG_STAT_THP_SWPOUT_FALLBACK" => {
3467                    Some(Self::MemcgStatThpSwpoutFallback)
3468                }
3469                "MEMCG_STAT_NUMA_PAGES_MIGRATED" => {
3470                    Some(Self::MemcgStatNumaPagesMigrated)
3471                }
3472                "MEMCG_STAT_NUMA_PTE_UPDATES" => Some(Self::MemcgStatNumaPteUpdates),
3473                "MEMCG_STAT_NUMA_HINT_FAULTS" => Some(Self::MemcgStatNumaHintFaults),
3474                _ => None,
3475            }
3476        }
3477    }
3478}
3479/// Configuration for the "linux.systemd_journald" data source.
3480/// Next field id: 4
3481#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3482pub struct SystemdJournaldConfig {
3483    /// Minimum syslog priority level to capture (inclusive).
3484    /// 0=EMERG, 1=ALERT, 2=CRIT, 3=ERR, 4=WARNING, 5=NOTICE, 6=INFO, 7=DEBUG.
3485    /// Default (0 / unset): capture all priorities (equivalent to 7).
3486    #[prost(uint32, optional, tag = "1")]
3487    pub min_prio: ::core::option::Option<u32>,
3488    /// If non-empty, only capture journal entries whose SYSLOG_IDENTIFIER
3489    /// matches one of these strings.
3490    #[prost(string, repeated, tag = "2")]
3491    pub filter_identifiers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3492    /// If non-empty, only capture journal entries from these systemd unit names.
3493    #[prost(string, repeated, tag = "3")]
3494    pub filter_units: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3495}
3496#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3497pub struct AndroidPowerConfig {
3498    #[prost(uint32, optional, tag = "1")]
3499    pub battery_poll_ms: ::core::option::Option<u32>,
3500    #[prost(
3501        enumeration = "android_power_config::BatteryCounters",
3502        repeated,
3503        packed = "false",
3504        tag = "2"
3505    )]
3506    pub battery_counters: ::prost::alloc::vec::Vec<i32>,
3507    /// Where available enables per-power-rail measurements.
3508    #[prost(bool, optional, tag = "3")]
3509    pub collect_power_rails: ::core::option::Option<bool>,
3510    /// Provides a breakdown of energy estimation for various subsystem (e.g. GPU).
3511    /// Available from Android S.
3512    #[prost(bool, optional, tag = "4")]
3513    pub collect_energy_estimation_breakdown: ::core::option::Option<bool>,
3514    /// Provides a breakdown of time in state for various subsystems.
3515    /// Available from Android U.
3516    #[prost(bool, optional, tag = "5")]
3517    pub collect_entity_state_residency: ::core::option::Option<bool>,
3518}
3519/// Nested message and enum types in `AndroidPowerConfig`.
3520pub mod android_power_config {
3521    #[derive(
3522        Clone,
3523        Copy,
3524        Debug,
3525        PartialEq,
3526        Eq,
3527        Hash,
3528        PartialOrd,
3529        Ord,
3530        ::prost::Enumeration
3531    )]
3532    #[repr(i32)]
3533    pub enum BatteryCounters {
3534        BatteryCounterUnspecified = 0,
3535        /// Coulomb counter.
3536        BatteryCounterCharge = 1,
3537        /// Charge (%).
3538        BatteryCounterCapacityPercent = 2,
3539        /// Instantaneous current.
3540        BatteryCounterCurrent = 3,
3541        /// Avg current.
3542        BatteryCounterCurrentAvg = 4,
3543        /// Instantaneous voltage.
3544        BatteryCounterVoltage = 5,
3545    }
3546    impl BatteryCounters {
3547        /// String value of the enum field names used in the ProtoBuf definition.
3548        ///
3549        /// The values are not transformed in any way and thus are considered stable
3550        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3551        pub fn as_str_name(&self) -> &'static str {
3552            match self {
3553                Self::BatteryCounterUnspecified => "BATTERY_COUNTER_UNSPECIFIED",
3554                Self::BatteryCounterCharge => "BATTERY_COUNTER_CHARGE",
3555                Self::BatteryCounterCapacityPercent => "BATTERY_COUNTER_CAPACITY_PERCENT",
3556                Self::BatteryCounterCurrent => "BATTERY_COUNTER_CURRENT",
3557                Self::BatteryCounterCurrentAvg => "BATTERY_COUNTER_CURRENT_AVG",
3558                Self::BatteryCounterVoltage => "BATTERY_COUNTER_VOLTAGE",
3559            }
3560        }
3561        /// Creates an enum from field names used in the ProtoBuf definition.
3562        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3563            match value {
3564                "BATTERY_COUNTER_UNSPECIFIED" => Some(Self::BatteryCounterUnspecified),
3565                "BATTERY_COUNTER_CHARGE" => Some(Self::BatteryCounterCharge),
3566                "BATTERY_COUNTER_CAPACITY_PERCENT" => {
3567                    Some(Self::BatteryCounterCapacityPercent)
3568                }
3569                "BATTERY_COUNTER_CURRENT" => Some(Self::BatteryCounterCurrent),
3570                "BATTERY_COUNTER_CURRENT_AVG" => Some(Self::BatteryCounterCurrentAvg),
3571                "BATTERY_COUNTER_VOLTAGE" => Some(Self::BatteryCounterVoltage),
3572                _ => None,
3573            }
3574        }
3575    }
3576}
3577/// Configuration that allows to boost the priority of the 'traced' or
3578/// 'traced_probs' processes, by changing the scheduler configuration.
3579/// Only supported on Linux and Android the boosted process must have
3580/// 'CAP_SYS_NICE' capability.
3581#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3582pub struct PriorityBoostConfig {
3583    #[prost(enumeration = "priority_boost_config::BoostPolicy", optional, tag = "1")]
3584    pub policy: ::core::option::Option<i32>,
3585    #[prost(uint32, optional, tag = "2")]
3586    pub priority: ::core::option::Option<u32>,
3587}
3588/// Nested message and enum types in `PriorityBoostConfig`.
3589pub mod priority_boost_config {
3590    #[derive(
3591        Clone,
3592        Copy,
3593        Debug,
3594        PartialEq,
3595        Eq,
3596        Hash,
3597        PartialOrd,
3598        Ord,
3599        ::prost::Enumeration
3600    )]
3601    #[repr(i32)]
3602    pub enum BoostPolicy {
3603        PolicyUnspecified = 0,
3604        /// The default policy (e.g., CFS on Linux). Priority range: \[0; 20\]
3605        /// priority is interpreted as -(nice), i.e., 1 is slightly higher prio
3606        /// than default 0, 20 is the highest priority.
3607        /// Note: this is the opposite semantic of the cmdline nice, and is done for
3608        /// consistency with POLICY_SCHED_FIFO, so higher number == higher prio.
3609        PolicySchedOther = 1,
3610        /// The Real-time policy, Priority range: \[1; 99\]
3611        PolicySchedFifo = 2,
3612    }
3613    impl BoostPolicy {
3614        /// String value of the enum field names used in the ProtoBuf definition.
3615        ///
3616        /// The values are not transformed in any way and thus are considered stable
3617        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3618        pub fn as_str_name(&self) -> &'static str {
3619            match self {
3620                Self::PolicyUnspecified => "POLICY_UNSPECIFIED",
3621                Self::PolicySchedOther => "POLICY_SCHED_OTHER",
3622                Self::PolicySchedFifo => "POLICY_SCHED_FIFO",
3623            }
3624        }
3625        /// Creates an enum from field names used in the ProtoBuf definition.
3626        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3627            match value {
3628                "POLICY_UNSPECIFIED" => Some(Self::PolicyUnspecified),
3629                "POLICY_SCHED_OTHER" => Some(Self::PolicySchedOther),
3630                "POLICY_SCHED_FIFO" => Some(Self::PolicySchedFifo),
3631                _ => None,
3632            }
3633        }
3634    }
3635}
3636/// Config for polling process-related information from /proc/pid/status and
3637/// related files on Linux.
3638///
3639/// Data source name: "linux.process_stats".
3640#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3641pub struct ProcessStatsConfig {
3642    #[prost(
3643        enumeration = "process_stats_config::Quirks",
3644        repeated,
3645        packed = "false",
3646        tag = "1"
3647    )]
3648    pub quirks: ::prost::alloc::vec::Vec<i32>,
3649    /// If enabled all processes will be scanned and dumped when the trace starts.
3650    #[prost(bool, optional, tag = "2")]
3651    pub scan_all_processes_on_start: ::core::option::Option<bool>,
3652    /// If enabled thread names are also recoded (this is redundant if sched_switch
3653    /// is enabled).
3654    #[prost(bool, optional, tag = "3")]
3655    pub record_thread_names: ::core::option::Option<bool>,
3656    /// If > 0 samples counters (see process_stats.proto) from
3657    /// /proc/pid/status and oom_score_adj every X ms.
3658    /// This is required to be > 100ms to avoid excessive CPU usage.
3659    #[prost(uint32, optional, tag = "4")]
3660    pub proc_stats_poll_ms: ::core::option::Option<u32>,
3661    /// Explicit caching period during which the polling won't re-emit identical
3662    /// counter values. This is required to be either = 0 or a multiple of
3663    /// |proc_stats_poll_ms| (default: |proc_stats_poll_ms|). Non-multiples will be
3664    /// rounded down to the nearest multiple.
3665    #[prost(uint32, optional, tag = "6")]
3666    pub proc_stats_cache_ttl_ms: ::core::option::Option<u32>,
3667    /// If true and |proc_stats_poll_ms| is set, sample memory stats from
3668    /// /proc/pid/smaps_rollup.
3669    ///
3670    /// Android: does NOT work with the system daemons by default, as it requires
3671    /// running the recording process (traced_probes or tracebox) as root. It is
3672    /// possible to avoid the root requirement, but the exact steps depend on the
3673    /// Linux distibution. The proc file requires passing a PTRACE_MODE_READ
3674    /// check, and might be further covered by the procfs "hidepid" mount option.
3675    #[prost(bool, optional, tag = "10")]
3676    pub scan_smaps_rollup: ::core::option::Option<bool>,
3677    /// If true: process descriptions will include process age (starttime in
3678    /// /proc/pid/stat).
3679    /// Introduced in: perfetto v44.
3680    #[prost(bool, optional, tag = "11")]
3681    pub record_process_age: ::core::option::Option<bool>,
3682    /// If true and |proc_stats_poll_ms| is set, process stats will include time
3683    /// spent running in user/kernel mode (utime/stime in /proc/pid/stat).
3684    /// Introduced in: perfetto v44.
3685    #[prost(bool, optional, tag = "12")]
3686    pub record_process_runtime: ::core::option::Option<bool>,
3687    /// If true obtain per-process dmabuf resident set size from
3688    /// /proc/pid/dmabuf_rss.
3689    /// This feature is not in upstream linux, and is available only on some
3690    /// Android kernels.
3691    #[prost(bool, optional, tag = "13")]
3692    pub record_process_dmabuf_rss: ::core::option::Option<bool>,
3693    /// WARNING: unmaintained and deprecated. If true this will resolve file
3694    /// descriptors for each process so these can be mapped to their actual device
3695    /// or file. Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled
3696    /// or new fds opened after initially scanning a process will not be
3697    /// recognized.
3698    #[prost(bool, optional, tag = "9")]
3699    pub resolve_process_fds: ::core::option::Option<bool>,
3700    /// If true, do *not* write a ProcessTree::Thread message for the main thread
3701    /// of a process. This was the default behaviour before perfetto v58.
3702    ///
3703    /// Added in perfetto v58.
3704    #[prost(bool, optional, tag = "14")]
3705    pub skip_main_thread_message: ::core::option::Option<bool>,
3706}
3707/// Nested message and enum types in `ProcessStatsConfig`.
3708pub mod process_stats_config {
3709    #[derive(
3710        Clone,
3711        Copy,
3712        Debug,
3713        PartialEq,
3714        Eq,
3715        Hash,
3716        PartialOrd,
3717        Ord,
3718        ::prost::Enumeration
3719    )]
3720    #[repr(i32)]
3721    pub enum Quirks {
3722        Unspecified = 0,
3723        /// This has been deprecated and ignored as per 2018-05-01. Full scan at
3724        /// startup is now disabled by default and can be re-enabled using the
3725        /// |scan_all_processes_on_start| arg.
3726        #[deprecated]
3727        DisableInitialDump = 1,
3728        /// If set, disables the special interaction with "linux.ftrace" data source,
3729        /// where the process stats rescrapes any thread id seen in the ftrace
3730        /// stream.
3731        DisableOnDemand = 2,
3732    }
3733    impl Quirks {
3734        /// String value of the enum field names used in the ProtoBuf definition.
3735        ///
3736        /// The values are not transformed in any way and thus are considered stable
3737        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3738        pub fn as_str_name(&self) -> &'static str {
3739            match self {
3740                Self::Unspecified => "QUIRKS_UNSPECIFIED",
3741                #[allow(deprecated)]
3742                Self::DisableInitialDump => "DISABLE_INITIAL_DUMP",
3743                Self::DisableOnDemand => "DISABLE_ON_DEMAND",
3744            }
3745        }
3746        /// Creates an enum from field names used in the ProtoBuf definition.
3747        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3748            match value {
3749                "QUIRKS_UNSPECIFIED" => Some(Self::Unspecified),
3750                "DISABLE_INITIAL_DUMP" => {
3751                    Some(#[allow(deprecated)] Self::DisableInitialDump)
3752                }
3753                "DISABLE_ON_DEMAND" => Some(Self::DisableOnDemand),
3754                _ => None,
3755            }
3756        }
3757    }
3758}
3759/// Configuration for go/heapprofd.
3760/// Next id: 28
3761#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3762pub struct HeapprofdConfig {
3763    /// Sampling rate for all heaps not specified via heap_sampling_intervals.
3764    ///
3765    /// These are:
3766    /// * All heaps if heap_sampling_intervals is empty.
3767    /// * Those profiled due to all_heaps and not named in heaps if
3768    ///    heap_sampling_intervals is not empty.
3769    /// * The implicit libc.malloc heap if heaps is empty.
3770    ///
3771    /// Set to 1 for perfect accuracy.
3772    /// Otherwise, sample every sample_interval_bytes on average.
3773    ///
3774    /// See
3775    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#sampling-interval>
3776    /// for more details.
3777    ///
3778    /// BUGS
3779    /// Before Android 12, setting this to 0 would crash the target process.
3780    ///
3781    /// N.B. This must be explicitly set to a non-zero value for all heaps (with
3782    /// this field or with heap_sampling_intervals), otherwise the producer will
3783    /// not start.
3784    #[prost(uint64, optional, tag = "1")]
3785    pub sampling_interval_bytes: ::core::option::Option<u64>,
3786    /// If less than the given numbers of bytes are left free in the shared
3787    /// memory buffer, increase sampling interval by a factor of two.
3788    /// Adaptive sampling is disabled when set to 0.
3789    #[prost(uint64, optional, tag = "24")]
3790    pub adaptive_sampling_shmem_threshold: ::core::option::Option<u64>,
3791    /// Stop doubling the sampling_interval once the sampling interval has reached
3792    /// this value.
3793    #[prost(uint64, optional, tag = "25")]
3794    pub adaptive_sampling_max_sampling_interval_bytes: ::core::option::Option<u64>,
3795    /// Names of process cmdlines to profile. The semantics before perfetto v57 are
3796    /// as the following section (A), and on newer versions are both (A) and (B):
3797    ///
3798    /// (A) E.g. surfaceflinger, com.android.phone
3799    /// This input is normalized in the following way: if it contains slashes,
3800    /// everything up to the last slash is discarded. If it contains "@",
3801    /// everything after the first @ is discared.
3802    /// E.g. /system/bin/surfaceflinger@1.0 normalizes to surfaceflinger.
3803    /// This transformation is also applied to the processes' command lines when
3804    /// matching.
3805    ///
3806    /// (B) Perfetto v57+: a pattern may also contain a wildcard ('*'), in which
3807    /// case it is matched against running processes' command lines using glob
3808    /// semantics. If the pattern starts with '/' it is matched against the full
3809    /// argv0 (e.g. "/system/bin/*"), otherwise it is matched against the binary
3810    /// name part of argv0 (e.g. "system_*"). Wildcard patterns are *not*
3811    /// normalized as described above.
3812    /// Wildcard patterns are supported only for profiling already-running
3813    /// processes. A config must set no_startup=true if using wildcards, or it will
3814    /// be rejected.
3815    #[prost(string, repeated, tag = "2")]
3816    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3817    /// For watermark based triggering or local debugging.
3818    #[prost(uint64, repeated, packed = "false", tag = "4")]
3819    pub pid: ::prost::alloc::vec::Vec<u64>,
3820    /// Only profile target if it was installed by one of the packages given.
3821    /// Special values are:
3822    /// * @system: installed on the system partition
3823    /// * @product: installed on the product partition
3824    /// * @null: sideloaded
3825    /// Supported on Android 12+.
3826    #[prost(string, repeated, tag = "26")]
3827    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3828    /// Which heaps to sample, e.g. "libc.malloc". If left empty, only samples
3829    /// "malloc".
3830    ///
3831    /// Introduced in Android 12.
3832    #[prost(string, repeated, tag = "20")]
3833    pub heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3834    /// Which heaps not to sample, e.g. "libc.malloc". This is useful when used in
3835    /// combination with all_heaps;
3836    ///
3837    /// Introduced in Android 12.
3838    #[prost(string, repeated, tag = "27")]
3839    pub exclude_heaps: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3840    #[prost(bool, optional, tag = "23")]
3841    pub stream_allocations: ::core::option::Option<bool>,
3842    /// If given, needs to be the same length as heaps and gives the sampling
3843    /// interval for the respective entry in heaps.
3844    ///
3845    /// Otherwise, sampling_interval_bytes is used.
3846    ///
3847    /// It is recommended to set sampling_interval_bytes to a reasonable default
3848    /// value when using this, as a value of 0 for sampling_interval_bytes will
3849    /// crash the target process before Android 12.
3850    ///
3851    /// Introduced in Android 12.
3852    ///
3853    /// All values must be non-zero or the producer will not start.
3854    #[prost(uint64, repeated, packed = "false", tag = "22")]
3855    pub heap_sampling_intervals: ::prost::alloc::vec::Vec<u64>,
3856    /// Sample all heaps registered by target process. Introduced in Android 12.
3857    #[prost(bool, optional, tag = "21")]
3858    pub all_heaps: ::core::option::Option<bool>,
3859    /// Profile all processes eligible for profiling on the system.
3860    /// See
3861    /// <https://perfetto.dev/docs/data-sources/native-heap-profiler#heapprofd-targets>
3862    /// for which processes are eligible.
3863    ///
3864    /// On unmodified userdebug builds, this will lead to system crashes. Zygote
3865    /// will crash when trying to launch a new process as it will have an
3866    /// unexpected open socket to heapprofd.
3867    ///
3868    /// heapprofd will likely be overloaded by the amount of data for low
3869    /// sampling intervals.
3870    #[prost(bool, optional, tag = "5")]
3871    pub all: ::core::option::Option<bool>,
3872    /// Do not profile processes whose anon RSS + swap < given value.
3873    /// Introduced in Android 11.
3874    #[prost(uint32, optional, tag = "15")]
3875    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
3876    /// Stop profile if heapprofd memory usage goes beyond the given value.
3877    /// Introduced in Android 11.
3878    #[prost(uint32, optional, tag = "16")]
3879    pub max_heapprofd_memory_kb: ::core::option::Option<u32>,
3880    /// Stop profile if heapprofd CPU time since start of this data-source
3881    /// goes beyond given value.
3882    /// Introduced in Android 11.
3883    #[prost(uint64, optional, tag = "17")]
3884    pub max_heapprofd_cpu_secs: ::core::option::Option<u64>,
3885    /// Do not emit function names for mappings starting with this prefix.
3886    /// E.g. /system to not emit symbols for any system libraries.
3887    #[prost(string, repeated, tag = "7")]
3888    pub skip_symbol_prefix: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3889    /// Dump at a predefined interval.
3890    #[prost(message, optional, tag = "6")]
3891    pub continuous_dump_config: ::core::option::Option<
3892        heapprofd_config::ContinuousDumpConfig,
3893    >,
3894    /// Size of the shared memory buffer between the profiled processes and
3895    /// heapprofd. Defaults to 8 MiB. If larger than 500 MiB, truncated to 500
3896    /// MiB.
3897    ///
3898    /// Needs to be:
3899    /// * at least 8192,
3900    /// * a power of two,
3901    /// * a multiple of 4096.
3902    #[prost(uint64, optional, tag = "8")]
3903    pub shmem_size_bytes: ::core::option::Option<u64>,
3904    /// When the shmem buffer is full, block the client instead of ending the
3905    /// trace. Use with caution as this will significantly slow down the target
3906    /// process.
3907    #[prost(bool, optional, tag = "9")]
3908    pub block_client: ::core::option::Option<bool>,
3909    /// If set, stop the trace session after blocking the client for this
3910    /// timeout. Needs to be larger than 100 us, otherwise no retries are done.
3911    /// Introduced in Android 11.
3912    #[prost(uint32, optional, tag = "14")]
3913    pub block_client_timeout_us: ::core::option::Option<u32>,
3914    /// Do not profile processes from startup, only match already running
3915    /// processes.
3916    ///
3917    /// Can not be set at the same time as no_running.
3918    /// Introduced in Android 11.
3919    #[prost(bool, optional, tag = "10")]
3920    pub no_startup: ::core::option::Option<bool>,
3921    /// Do not profile running processes. Only match processes on startup.
3922    ///
3923    /// Can not be set at the same time as no_startup.
3924    /// Introduced in Android 11.
3925    #[prost(bool, optional, tag = "11")]
3926    pub no_running: ::core::option::Option<bool>,
3927    /// Cause heapprofd to emit a single dump at the end, showing the memory usage
3928    /// at the point in time when the sampled heap usage of the process was at its
3929    /// maximum. This causes ProfilePacket.HeapSample.self_max to be set, and
3930    /// self_allocated and self_freed to not be set.
3931    /// Introduced in Android 11.
3932    #[prost(bool, optional, tag = "13")]
3933    pub dump_at_max: ::core::option::Option<bool>,
3934    /// Escape hatch if the session is being torn down because of a forked child
3935    /// that shares memory space, but is not correctly identified as a vforked
3936    /// child.
3937    /// Introduced in Android 11.
3938    #[prost(bool, optional, tag = "18")]
3939    pub disable_fork_teardown: ::core::option::Option<bool>,
3940    /// We try to automatically detect when a target applicatation vforks but then
3941    /// does a memory allocation (or free). This auto-detection can be disabled
3942    /// with this.
3943    /// Introduced in Android 11.
3944    #[prost(bool, optional, tag = "19")]
3945    pub disable_vfork_detection: ::core::option::Option<bool>,
3946}
3947/// Nested message and enum types in `HeapprofdConfig`.
3948pub mod heapprofd_config {
3949    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3950    pub struct ContinuousDumpConfig {
3951        /// ms to wait before first dump.
3952        #[prost(uint32, optional, tag = "5")]
3953        pub dump_phase_ms: ::core::option::Option<u32>,
3954        /// ms to wait between following dumps.
3955        #[prost(uint32, optional, tag = "6")]
3956        pub dump_interval_ms: ::core::option::Option<u32>,
3957    }
3958}
3959/// Config for the "linux.smaps" data source, describes one-shot or periodic
3960/// /proc/pid/smaps collection.
3961///
3962/// A valid config must specify at least one |target_cmdline| or |target_uid|.
3963/// Example:
3964///
3965/// data_sources {
3966///    config {
3967///      name: "linux.smaps"
3968///      process_smaps_config {
3969///        scope {
3970///          target_cmdline: "top"
3971///          target_cmdline: "tmux"
3972///        }
3973///      }
3974///    }
3975/// }
3976#[derive(Clone, PartialEq, ::prost::Message)]
3977pub struct ProcessSmapsConfig {
3978    /// Which fields to record per process.
3979    /// If unset, defaults to {size, rss, anon, swap}, aggregated by path name.
3980    #[prost(message, optional, tag = "1")]
3981    pub smaps_config: ::core::option::Option<SmapsConfig>,
3982    #[prost(message, optional, tag = "2")]
3983    pub scope: ::core::option::Option<process_smaps_config::Scope>,
3984    /// How often to recapture the smaps, including re-evaluating which processes
3985    /// match the |scope|. May be overridden by the implementation (at the time of
3986    /// writing, \[1s, 24hr\] range).
3987    /// If zero or unset, each process is captured only once at start.
3988    #[prost(uint32, optional, tag = "3")]
3989    pub read_period_ms: ::core::option::Option<u32>,
3990    /// Caps the number of processes handled per |read_period_ms|, or overall if
3991    /// the config is one-shot (period = 0). The immediate use case is to limit
3992    /// work if too many processes match the |scope|.
3993    /// Additionally, this option can be used for sampling, since the
3994    /// implementation inspects processes in a shuffled order (not in numeric pid
3995    /// order), and successive periods cover separate subsets of pids.
3996    /// So a config with scope=*, period=10s, and max_processes=5 would
3997    /// progressively scan all processes on the machine by parsing 5 processes at
3998    /// a time with 10s breaks in between.
3999    /// If zero or unset, there is no limit.
4000    #[prost(uint32, optional, tag = "4")]
4001    pub max_processes_per_period: ::core::option::Option<u32>,
4002}
4003/// Nested message and enum types in `ProcessSmapsConfig`.
4004pub mod process_smaps_config {
4005    /// Which processes to record. At least one field must be set.
4006    /// Multiples of the same option (e.g. target_cmdline) are ORed.
4007    /// Different options are ANDed, skipping fields that are unset.
4008    #[derive(Clone, PartialEq, ::prost::Message)]
4009    pub struct Scope {
4010        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4011        /// comm string).
4012        ///
4013        /// This field can specify a single wildcard (*), and the profiler will
4014        /// attempt to match it in two possible ways:
4015        /// * if the pattern starts with a '/', then it is matched against the first
4016        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4017        ///    "/bin/echo".
4018        /// * otherwise the pattern is matched against the part of argv0
4019        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4020        ///    For example "echo" would match "/bin/echo".
4021        ///
4022        /// Implementation note: at most 511 characters of cmdline are considered.
4023        #[prost(string, repeated, tag = "1")]
4024        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4025        #[prost(message, repeated, tag = "2")]
4026        pub target_uid: ::prost::alloc::vec::Vec<scope::UidRange>,
4027    }
4028    /// Nested message and enum types in `Scope`.
4029    pub mod scope {
4030        /// Range of UIDs.
4031        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4032        pub struct UidRange {
4033            /// inclusive, must be set
4034            #[prost(uint32, optional, tag = "1")]
4035            pub min_uid: ::core::option::Option<u32>,
4036            /// inclusive, must be set
4037            #[prost(uint32, optional, tag = "2")]
4038            pub max_uid: ::core::option::Option<u32>,
4039            /// Android: if true, compare the UID modulo the per-user/profile offset
4040            /// (AID_USER_OFFSET, 100000).
4041            #[prost(bool, optional, tag = "3")]
4042            pub android_match_across_profiles: ::core::option::Option<bool>,
4043        }
4044    }
4045}
4046/// Describes what to record from /proc/pid/smaps.
4047#[derive(Clone, PartialEq, ::prost::Message)]
4048pub struct SmapsConfig {
4049    /// Set of fields to collect.
4050    /// If unset, defaults to: size, rss, anonymous, swap.
4051    #[prost(
4052        enumeration = "smaps_config::VmaField",
4053        repeated,
4054        packed = "false",
4055        tag = "1"
4056    )]
4057    pub vma_fields: ::prost::alloc::vec::Vec<i32>,
4058    /// If false, mappings are aggregated by their path name.
4059    /// If true, each mapping is serialised separately.
4060    #[prost(bool, optional, tag = "2")]
4061    pub unaggregated: ::core::option::Option<bool>,
4062    /// Optional ordered list of redaction rules for the name of the mapping.
4063    /// Note that all mappings will still be emitted, these rules only affect the
4064    /// emitted name.
4065    /// If unset, all names are written as is.
4066    /// If set, the first matching rule decides on the action.
4067    /// If no rules match, the name is written as is.
4068    #[prost(message, repeated, tag = "3")]
4069    pub name_redaction_rules: ::prost::alloc::vec::Vec<RedactionRule>,
4070}
4071/// Nested message and enum types in `SmapsConfig`.
4072pub mod smaps_config {
4073    #[derive(
4074        Clone,
4075        Copy,
4076        Debug,
4077        PartialEq,
4078        Eq,
4079        Hash,
4080        PartialOrd,
4081        Ord,
4082        ::prost::Enumeration
4083    )]
4084    #[repr(i32)]
4085    pub enum VmaField {
4086        Unknown = 0,
4087        Size = 1,
4088        Rss = 2,
4089        Anonymous = 3,
4090        Swap = 4,
4091        SharedClean = 5,
4092        SharedDirty = 6,
4093        PrivateClean = 7,
4094        PrivateDirty = 8,
4095        Locked = 9,
4096        Pss = 10,
4097        PssDirty = 11,
4098        SwapPss = 12,
4099    }
4100    impl VmaField {
4101        /// String value of the enum field names used in the ProtoBuf definition.
4102        ///
4103        /// The values are not transformed in any way and thus are considered stable
4104        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4105        pub fn as_str_name(&self) -> &'static str {
4106            match self {
4107                Self::Unknown => "VMA_FIELD_UNKNOWN",
4108                Self::Size => "VMA_FIELD_SIZE",
4109                Self::Rss => "VMA_FIELD_RSS",
4110                Self::Anonymous => "VMA_FIELD_ANONYMOUS",
4111                Self::Swap => "VMA_FIELD_SWAP",
4112                Self::SharedClean => "VMA_FIELD_SHARED_CLEAN",
4113                Self::SharedDirty => "VMA_FIELD_SHARED_DIRTY",
4114                Self::PrivateClean => "VMA_FIELD_PRIVATE_CLEAN",
4115                Self::PrivateDirty => "VMA_FIELD_PRIVATE_DIRTY",
4116                Self::Locked => "VMA_FIELD_LOCKED",
4117                Self::Pss => "VMA_FIELD_PSS",
4118                Self::PssDirty => "VMA_FIELD_PSS_DIRTY",
4119                Self::SwapPss => "VMA_FIELD_SWAP_PSS",
4120            }
4121        }
4122        /// Creates an enum from field names used in the ProtoBuf definition.
4123        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4124            match value {
4125                "VMA_FIELD_UNKNOWN" => Some(Self::Unknown),
4126                "VMA_FIELD_SIZE" => Some(Self::Size),
4127                "VMA_FIELD_RSS" => Some(Self::Rss),
4128                "VMA_FIELD_ANONYMOUS" => Some(Self::Anonymous),
4129                "VMA_FIELD_SWAP" => Some(Self::Swap),
4130                "VMA_FIELD_SHARED_CLEAN" => Some(Self::SharedClean),
4131                "VMA_FIELD_SHARED_DIRTY" => Some(Self::SharedDirty),
4132                "VMA_FIELD_PRIVATE_CLEAN" => Some(Self::PrivateClean),
4133                "VMA_FIELD_PRIVATE_DIRTY" => Some(Self::PrivateDirty),
4134                "VMA_FIELD_LOCKED" => Some(Self::Locked),
4135                "VMA_FIELD_PSS" => Some(Self::Pss),
4136                "VMA_FIELD_PSS_DIRTY" => Some(Self::PssDirty),
4137                "VMA_FIELD_SWAP_PSS" => Some(Self::SwapPss),
4138                _ => None,
4139            }
4140        }
4141    }
4142}
4143#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4144pub struct RedactionRule {
4145    /// The pattern to match against.
4146    #[prost(string, optional, tag = "1")]
4147    pub pattern: ::core::option::Option<::prost::alloc::string::String>,
4148    #[prost(enumeration = "redaction_rule::MatchMode", optional, tag = "2")]
4149    pub match_mode: ::core::option::Option<i32>,
4150    /// If the pattern matches, keep the entire name. In other words, do not
4151    /// redact. This option exists since the rules are evaluated in order, so a
4152    /// more specific allow rule with keep_full can match before a more general
4153    /// deny rule. This option is mutually exclusive with |keep_file_extension| and
4154    /// |keep_path_elements|.
4155    #[prost(bool, optional, tag = "3")]
4156    pub keep_full: ::core::option::Option<bool>,
4157    /// If the pattern matches, replace the name with this string (defaulting to
4158    /// <pf_redacted> if unset). The final emitted name might be further augmented
4159    /// by the options below keeping parts of the original name.
4160    #[prost(string, optional, tag = "4")]
4161    pub replacement_name: ::core::option::Option<::prost::alloc::string::String>,
4162    /// If the pattern matches, keep the file extension, if any.
4163    /// Can be combined with |keep_path_elements|.
4164    #[prost(bool, optional, tag = "5")]
4165    pub keep_file_extension: ::core::option::Option<bool>,
4166    /// If the pattern matches, keep the first N path elements (as separated by
4167    /// '/'). If the name is not a path, this option does nothing. Can be combined
4168    /// with |keep_file_extension|.
4169    #[prost(uint32, optional, tag = "6")]
4170    pub keep_path_elements: ::core::option::Option<u32>,
4171}
4172/// Nested message and enum types in `RedactionRule`.
4173pub mod redaction_rule {
4174    /// How to match |pattern| against the name of the mapping.
4175    /// Note for future extensions: unrecognised enums are treated as always
4176    /// matching.
4177    #[derive(
4178        Clone,
4179        Copy,
4180        Debug,
4181        PartialEq,
4182        Eq,
4183        Hash,
4184        PartialOrd,
4185        Ord,
4186        ::prost::Enumeration
4187    )]
4188    #[repr(i32)]
4189    pub enum MatchMode {
4190        Unknown = 0,
4191        /// The pattern matches if it is a prefix of the mapping name.
4192        Prefix = 1,
4193        /// The pattern is matched against the mapping name as a pathname glob
4194        /// (see "man 7 glob" and FNM_PATHNAME in "man 3 fnmatch").
4195        /// The key distinction is that path separators in the name are *not* matched
4196        /// against wildcards. So a pattern of the form "/usr/*/llvm" would match
4197        /// "/usr/lib/llvm" but not "/usr/lib/nested/llvm".
4198        /// Note: any "(deleted)" suffix is excluded before matching.
4199        GlobPath = 2,
4200        /// The pattern is matched against the mapping name without special-casing
4201        /// path separators. So a pattern of the form "/usr/*/llvm" would match
4202        /// both "/usr/lib/llvm" and "/usr/lib/nested/llvm".
4203        /// Note: any "(deleted)" suffix is excluded before matching.
4204        GlobString = 3,
4205    }
4206    impl MatchMode {
4207        /// String value of the enum field names used in the ProtoBuf definition.
4208        ///
4209        /// The values are not transformed in any way and thus are considered stable
4210        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4211        pub fn as_str_name(&self) -> &'static str {
4212            match self {
4213                Self::Unknown => "MATCH_MODE_UNKNOWN",
4214                Self::Prefix => "MATCH_MODE_PREFIX",
4215                Self::GlobPath => "MATCH_MODE_GLOB_PATH",
4216                Self::GlobString => "MATCH_MODE_GLOB_STRING",
4217            }
4218        }
4219        /// Creates an enum from field names used in the ProtoBuf definition.
4220        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4221            match value {
4222                "MATCH_MODE_UNKNOWN" => Some(Self::Unknown),
4223                "MATCH_MODE_PREFIX" => Some(Self::Prefix),
4224                "MATCH_MODE_GLOB_PATH" => Some(Self::GlobPath),
4225                "MATCH_MODE_GLOB_STRING" => Some(Self::GlobString),
4226                _ => None,
4227            }
4228        }
4229    }
4230}
4231/// Configuration for managed app heap graph snapshots.
4232#[derive(Clone, PartialEq, ::prost::Message)]
4233pub struct JavaHprofConfig {
4234    /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4235    /// comm string). The semantics of this field were changed since its original
4236    /// introduction.
4237    ///
4238    /// On Android T+ (13+), this field can specify a single wildcard (*), and
4239    /// the profiler will attempt to match it in two possible ways:
4240    /// * if the pattern starts with a '/', then it is matched against the first
4241    ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4242    ///    "/bin/echo".
4243    /// * otherwise the pattern is matched against the part of argv0
4244    ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4245    ///    For example "echo" would match "/bin/echo".
4246    ///
4247    /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4248    /// normalized prior to an exact string comparison. Normalization is as
4249    /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4250    /// the string contains forward slashes, trim everything up to and including
4251    /// the last one.
4252    ///
4253    /// Implementation note: in either case, at most 511 characters of cmdline
4254    /// are considered.
4255    #[prost(string, repeated, tag = "1")]
4256    pub process_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4257    /// For watermark based triggering or local debugging.
4258    #[prost(uint64, repeated, packed = "false", tag = "2")]
4259    pub pid: ::prost::alloc::vec::Vec<u64>,
4260    /// Only profile target if it was installed by one of the packages given.
4261    /// Special values are:
4262    /// * @system: installed on the system partition
4263    /// * @product: installed on the product partition
4264    /// * @null: sideloaded
4265    /// Supported on Android 12+.
4266    #[prost(string, repeated, tag = "7")]
4267    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4268    /// Dump at a predefined interval.
4269    #[prost(message, optional, tag = "3")]
4270    pub continuous_dump_config: ::core::option::Option<
4271        java_hprof_config::ContinuousDumpConfig,
4272    >,
4273    /// Do not profile processes whose anon RSS + swap < given value.
4274    #[prost(uint32, optional, tag = "4")]
4275    pub min_anonymous_memory_kb: ::core::option::Option<u32>,
4276    /// Do not profile processes whose Java heap size < given value.
4277    #[prost(uint32, optional, tag = "9")]
4278    pub min_java_heap_size_kb: ::core::option::Option<u32>,
4279    /// Include the process' /proc/self/smaps.
4280    /// This only shows maps that:
4281    /// * start with /system
4282    /// * start with /vendor
4283    /// * start with /data/app
4284    /// * contain "extracted in memory from Y", where Y matches any of the above
4285    ///
4286    /// Superseded by |smaps_config| in perfetto v58+.
4287    #[prost(bool, optional, tag = "5")]
4288    pub dump_smaps: ::core::option::Option<bool>,
4289    /// If set, include /proc/self/smaps memory mappings.
4290    ///
4291    /// Added in perfetto v58.
4292    #[prost(message, optional, tag = "8")]
4293    pub smaps_config: ::core::option::Option<SmapsConfig>,
4294    /// Exclude objects of the following types from the profile. This can be
4295    /// useful if lots of uninteresting objects, e.g. "sun.misc.Cleaner".
4296    #[prost(string, repeated, tag = "6")]
4297    pub ignored_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4298    /// Dump the callsite of the thread triggering the OutOfMemoryError.
4299    /// Only applicable to OutOfMemoryError heap dumps
4300    #[prost(bool, optional, tag = "10")]
4301    pub dump_oome_callstack: ::core::option::Option<bool>,
4302}
4303/// Nested message and enum types in `JavaHprofConfig`.
4304pub mod java_hprof_config {
4305    /// If dump_interval_ms != 0, the following configuration is used.
4306    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4307    pub struct ContinuousDumpConfig {
4308        /// ms to wait before first continuous dump.
4309        /// A dump is always created at the beginning of the trace.
4310        #[prost(uint32, optional, tag = "1")]
4311        pub dump_phase_ms: ::core::option::Option<u32>,
4312        /// ms to wait between following dumps.
4313        #[prost(uint32, optional, tag = "2")]
4314        pub dump_interval_ms: ::core::option::Option<u32>,
4315        /// If true, scans all the processes to find `process_cmdline` and filter by
4316        /// `min_anonymous_memory_kb` only at data source start. Default on Android
4317        /// S-.
4318        ///
4319        /// If false, rescans all the processes to find on every dump. Default on
4320        /// Android T+.
4321        #[prost(bool, optional, tag = "3")]
4322        pub scan_pids_only_on_start: ::core::option::Option<bool>,
4323    }
4324}
4325#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4326pub struct PerfEvents {}
4327/// Nested message and enum types in `PerfEvents`.
4328pub mod perf_events {
4329    /// The primary event to count. If recording multiple events, this
4330    /// counter is the "group leader".
4331    /// Commented from the perspective of its use in |PerfEventConfig|.
4332    /// Next id: 13
4333    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4334    pub struct Timebase {
4335        /// Optional modifiers for the event. Modelled after the perftool's
4336        /// <https://man7.org/linux/man-pages/man1/perf-list.1.html#EVENT_MODIFIERS>
4337        /// Currently supported: count scoping such as :u, :k, :uk, ...
4338        /// Modifiers can differ between the timebase and followers.
4339        #[prost(enumeration = "EventModifier", repeated, packed = "false", tag = "12")]
4340        pub modifiers: ::prost::alloc::vec::Vec<i32>,
4341        /// If set, samples will be timestamped with the given clock.
4342        /// If unset, the clock is chosen by the implementation.
4343        /// For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
4344        /// used for hardware events (due to interrupt safety), for which the
4345        /// recommendation is to use one of the monotonic clocks.
4346        #[prost(enumeration = "PerfClock", optional, tag = "11")]
4347        pub timestamp_clock: ::core::option::Option<i32>,
4348        /// Optional arbitrary name for the event, to identify it in the parsed
4349        /// trace. Does *not* affect the profiling itself. If unset, the trace
4350        /// parser will choose a suitable name.
4351        #[prost(string, optional, tag = "10")]
4352        pub name: ::core::option::Option<::prost::alloc::string::String>,
4353        /// How often to snapshot the counter, along with any follower events and
4354        /// any additional sampled data such as callstacks.
4355        ///
4356        /// This choice also controls how the readings are taken:
4357        /// * With |frequency| or |period|, samples are taken by the kernel
4358        ///    into a ring buffer. Analogous to `perf record`.
4359        /// * With |poll_period_ms|, the userspace periodically snapshots
4360        ///    the counters using the read syscall. Analogous to `perf stat -I`.
4361        /// Prefer the sampling options unless you're recording PMUs whose
4362        /// perf drivers only support the reading mode.
4363        ///
4364        /// If unset, an implementation-defined sampling default is used.
4365        #[prost(oneof = "timebase::Interval", tags = "2, 1, 6")]
4366        pub interval: ::core::option::Option<timebase::Interval>,
4367        /// Counting event to use as the timebase.
4368        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
4369        /// which is what you usually want.
4370        #[prost(oneof = "timebase::Event", tags = "4, 3, 5")]
4371        pub event: ::core::option::Option<timebase::Event>,
4372    }
4373    /// Nested message and enum types in `Timebase`.
4374    pub mod timebase {
4375        /// How often to snapshot the counter, along with any follower events and
4376        /// any additional sampled data such as callstacks.
4377        ///
4378        /// This choice also controls how the readings are taken:
4379        /// * With |frequency| or |period|, samples are taken by the kernel
4380        ///    into a ring buffer. Analogous to `perf record`.
4381        /// * With |poll_period_ms|, the userspace periodically snapshots
4382        ///    the counters using the read syscall. Analogous to `perf stat -I`.
4383        /// Prefer the sampling options unless you're recording PMUs whose
4384        /// perf drivers only support the reading mode.
4385        ///
4386        /// If unset, an implementation-defined sampling default is used.
4387        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
4388        pub enum Interval {
4389            /// Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
4390            /// same as 1/period.
4391            /// Details: the actual sampling will still be based on a period, but the
4392            /// kernel will dynamically adjust it based on the observed event rate, to
4393            /// approximate this frequency. Works best with steady-rate events like
4394            /// timers.
4395            /// Not guaranteed to be honored as the kernel can throttle the sampling
4396            /// rate if it's too high.
4397            #[prost(uint64, tag = "2")]
4398            Frequency(u64),
4399            /// Per-cpu sampling will occur every |period| counts of |event|.
4400            /// Prefer |frequency| by default, as it's easier to oversample with a
4401            /// fixed period.
4402            /// Not guaranteed to be honored as the kernel can throttle the sampling
4403            /// rate if it's too high.
4404            #[prost(uint64, tag = "1")]
4405            Period(u64),
4406            /// Per-cpu values are read by the userspace every interval. If using this
4407            /// mode, only follower events are supported. Options such as
4408            /// |PerfEventConfig.CallstackSampling| are incompatible.
4409            /// The period can't be guaranteed to be exact since the readings are taken
4410            /// by userspace.
4411            #[prost(uint32, tag = "6")]
4412            PollPeriodMs(u32),
4413        }
4414        /// Counting event to use as the timebase.
4415        /// If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
4416        /// which is what you usually want.
4417        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
4418        pub enum Event {
4419            #[prost(enumeration = "super::Counter", tag = "4")]
4420            Counter(i32),
4421            #[prost(message, tag = "3")]
4422            Tracepoint(super::Tracepoint),
4423            #[prost(message, tag = "5")]
4424            RawEvent(super::RawEvent),
4425        }
4426    }
4427    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4428    pub struct Tracepoint {
4429        /// Group and name for the tracepoint, acceptable forms:
4430        /// * "sched/sched_switch"
4431        /// * "sched:sched_switch"
4432        #[prost(string, optional, tag = "1")]
4433        pub name: ::core::option::Option<::prost::alloc::string::String>,
4434        /// Optional field-level filter for the tracepoint. Only events matching this
4435        /// filter will be counted (and therefore contribute to the sampling period).
4436        /// Example: "prev_pid >= 42 && next_pid == 0".
4437        /// For full syntax, see kernel documentation on "Event filtering":
4438        /// <https://www.kernel.org/doc/Documentation/trace/events.txt>
4439        #[prost(string, optional, tag = "2")]
4440        pub filter: ::core::option::Option<::prost::alloc::string::String>,
4441    }
4442    /// Syscall-level description of the event, propagated to the perf_event_attr
4443    /// struct. Primarily for local use-cases, since the event availability and
4444    /// encoding is hardware-specific.
4445    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4446    pub struct RawEvent {
4447        /// Either |type| or |pmu_name| can be set.
4448        #[prost(uint32, optional, tag = "1")]
4449        pub r#type: ::core::option::Option<u32>,
4450        #[prost(uint64, optional, tag = "2")]
4451        pub config: ::core::option::Option<u64>,
4452        #[prost(uint64, optional, tag = "3")]
4453        pub config1: ::core::option::Option<u64>,
4454        #[prost(uint64, optional, tag = "4")]
4455        pub config2: ::core::option::Option<u64>,
4456        /// The name of a dynamic PMU under /sys/bus/event_source/devices
4457        /// (e.g. "armv8_pmuv3").
4458        /// If set, leave |type| unset.
4459        /// Android: the relevant sysfs paths are not allowlisted by default, so
4460        /// this option will require a rooted device with selinux disabled.
4461        #[prost(string, optional, tag = "5")]
4462        pub pmu_name: ::core::option::Option<::prost::alloc::string::String>,
4463    }
4464    /// Builtin counter names from the uapi header. Commented with their perf tool
4465    /// aliases.
4466    /// TODO(rsavitski): consider generating enums for cache events (should be
4467    /// finite), and generally make this list as extensive as possible. Excluding
4468    /// things like dynamic PMUs since those don't fit into a static enum.
4469    /// Next id: 21
4470    #[derive(
4471        Clone,
4472        Copy,
4473        Debug,
4474        PartialEq,
4475        Eq,
4476        Hash,
4477        PartialOrd,
4478        Ord,
4479        ::prost::Enumeration
4480    )]
4481    #[repr(i32)]
4482    pub enum Counter {
4483        UnknownCounter = 0,
4484        /// cpu-clock
4485        SwCpuClock = 1,
4486        /// page-faults, faults
4487        SwPageFaults = 2,
4488        /// task-clock
4489        SwTaskClock = 3,
4490        /// context-switches, cs
4491        SwContextSwitches = 4,
4492        /// cpu-migrations, migrations
4493        SwCpuMigrations = 5,
4494        /// minor-faults
4495        SwPageFaultsMin = 6,
4496        /// major-faults
4497        SwPageFaultsMaj = 7,
4498        /// alignment-faults
4499        SwAlignmentFaults = 8,
4500        /// emulation-faults
4501        SwEmulationFaults = 9,
4502        /// dummy
4503        SwDummy = 20,
4504        /// cpu-cycles, cycles
4505        HwCpuCycles = 10,
4506        /// instructions
4507        HwInstructions = 11,
4508        /// cache-references
4509        HwCacheReferences = 12,
4510        /// cache-misses
4511        HwCacheMisses = 13,
4512        /// branch-instructions, branches
4513        HwBranchInstructions = 14,
4514        /// branch-misses
4515        HwBranchMisses = 15,
4516        /// bus-cycles
4517        HwBusCycles = 16,
4518        /// stalled-cycles-frontend, idle-cycles-frontend
4519        HwStalledCyclesFrontend = 17,
4520        /// stalled-cycles-backend, idle-cycles-backend
4521        HwStalledCyclesBackend = 18,
4522        /// ref-cycles
4523        HwRefCpuCycles = 19,
4524    }
4525    impl Counter {
4526        /// String value of the enum field names used in the ProtoBuf definition.
4527        ///
4528        /// The values are not transformed in any way and thus are considered stable
4529        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4530        pub fn as_str_name(&self) -> &'static str {
4531            match self {
4532                Self::UnknownCounter => "UNKNOWN_COUNTER",
4533                Self::SwCpuClock => "SW_CPU_CLOCK",
4534                Self::SwPageFaults => "SW_PAGE_FAULTS",
4535                Self::SwTaskClock => "SW_TASK_CLOCK",
4536                Self::SwContextSwitches => "SW_CONTEXT_SWITCHES",
4537                Self::SwCpuMigrations => "SW_CPU_MIGRATIONS",
4538                Self::SwPageFaultsMin => "SW_PAGE_FAULTS_MIN",
4539                Self::SwPageFaultsMaj => "SW_PAGE_FAULTS_MAJ",
4540                Self::SwAlignmentFaults => "SW_ALIGNMENT_FAULTS",
4541                Self::SwEmulationFaults => "SW_EMULATION_FAULTS",
4542                Self::SwDummy => "SW_DUMMY",
4543                Self::HwCpuCycles => "HW_CPU_CYCLES",
4544                Self::HwInstructions => "HW_INSTRUCTIONS",
4545                Self::HwCacheReferences => "HW_CACHE_REFERENCES",
4546                Self::HwCacheMisses => "HW_CACHE_MISSES",
4547                Self::HwBranchInstructions => "HW_BRANCH_INSTRUCTIONS",
4548                Self::HwBranchMisses => "HW_BRANCH_MISSES",
4549                Self::HwBusCycles => "HW_BUS_CYCLES",
4550                Self::HwStalledCyclesFrontend => "HW_STALLED_CYCLES_FRONTEND",
4551                Self::HwStalledCyclesBackend => "HW_STALLED_CYCLES_BACKEND",
4552                Self::HwRefCpuCycles => "HW_REF_CPU_CYCLES",
4553            }
4554        }
4555        /// Creates an enum from field names used in the ProtoBuf definition.
4556        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4557            match value {
4558                "UNKNOWN_COUNTER" => Some(Self::UnknownCounter),
4559                "SW_CPU_CLOCK" => Some(Self::SwCpuClock),
4560                "SW_PAGE_FAULTS" => Some(Self::SwPageFaults),
4561                "SW_TASK_CLOCK" => Some(Self::SwTaskClock),
4562                "SW_CONTEXT_SWITCHES" => Some(Self::SwContextSwitches),
4563                "SW_CPU_MIGRATIONS" => Some(Self::SwCpuMigrations),
4564                "SW_PAGE_FAULTS_MIN" => Some(Self::SwPageFaultsMin),
4565                "SW_PAGE_FAULTS_MAJ" => Some(Self::SwPageFaultsMaj),
4566                "SW_ALIGNMENT_FAULTS" => Some(Self::SwAlignmentFaults),
4567                "SW_EMULATION_FAULTS" => Some(Self::SwEmulationFaults),
4568                "SW_DUMMY" => Some(Self::SwDummy),
4569                "HW_CPU_CYCLES" => Some(Self::HwCpuCycles),
4570                "HW_INSTRUCTIONS" => Some(Self::HwInstructions),
4571                "HW_CACHE_REFERENCES" => Some(Self::HwCacheReferences),
4572                "HW_CACHE_MISSES" => Some(Self::HwCacheMisses),
4573                "HW_BRANCH_INSTRUCTIONS" => Some(Self::HwBranchInstructions),
4574                "HW_BRANCH_MISSES" => Some(Self::HwBranchMisses),
4575                "HW_BUS_CYCLES" => Some(Self::HwBusCycles),
4576                "HW_STALLED_CYCLES_FRONTEND" => Some(Self::HwStalledCyclesFrontend),
4577                "HW_STALLED_CYCLES_BACKEND" => Some(Self::HwStalledCyclesBackend),
4578                "HW_REF_CPU_CYCLES" => Some(Self::HwRefCpuCycles),
4579                _ => None,
4580            }
4581        }
4582    }
4583    /// Subset of clocks that is supported by perf timestamping.
4584    /// CLOCK_TAI is excluded since it's not expected to be used in practice, but
4585    /// would require additions to the trace clock synchronisation logic.
4586    #[derive(
4587        Clone,
4588        Copy,
4589        Debug,
4590        PartialEq,
4591        Eq,
4592        Hash,
4593        PartialOrd,
4594        Ord,
4595        ::prost::Enumeration
4596    )]
4597    #[repr(i32)]
4598    pub enum PerfClock {
4599        UnknownPerfClock = 0,
4600        Realtime = 1,
4601        Monotonic = 2,
4602        MonotonicRaw = 3,
4603        Boottime = 4,
4604    }
4605    impl PerfClock {
4606        /// String value of the enum field names used in the ProtoBuf definition.
4607        ///
4608        /// The values are not transformed in any way and thus are considered stable
4609        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4610        pub fn as_str_name(&self) -> &'static str {
4611            match self {
4612                Self::UnknownPerfClock => "UNKNOWN_PERF_CLOCK",
4613                Self::Realtime => "PERF_CLOCK_REALTIME",
4614                Self::Monotonic => "PERF_CLOCK_MONOTONIC",
4615                Self::MonotonicRaw => "PERF_CLOCK_MONOTONIC_RAW",
4616                Self::Boottime => "PERF_CLOCK_BOOTTIME",
4617            }
4618        }
4619        /// Creates an enum from field names used in the ProtoBuf definition.
4620        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4621            match value {
4622                "UNKNOWN_PERF_CLOCK" => Some(Self::UnknownPerfClock),
4623                "PERF_CLOCK_REALTIME" => Some(Self::Realtime),
4624                "PERF_CLOCK_MONOTONIC" => Some(Self::Monotonic),
4625                "PERF_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
4626                "PERF_CLOCK_BOOTTIME" => Some(Self::Boottime),
4627                _ => None,
4628            }
4629        }
4630    }
4631    #[derive(
4632        Clone,
4633        Copy,
4634        Debug,
4635        PartialEq,
4636        Eq,
4637        Hash,
4638        PartialOrd,
4639        Ord,
4640        ::prost::Enumeration
4641    )]
4642    #[repr(i32)]
4643    pub enum EventModifier {
4644        UnknownEventModifier = 0,
4645        /// count only while in userspace
4646        CountUserspace = 1,
4647        /// count only while in kernel
4648        CountKernel = 2,
4649        /// count only while in hypervisor
4650        CountHypervisor = 3,
4651    }
4652    impl EventModifier {
4653        /// String value of the enum field names used in the ProtoBuf definition.
4654        ///
4655        /// The values are not transformed in any way and thus are considered stable
4656        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4657        pub fn as_str_name(&self) -> &'static str {
4658            match self {
4659                Self::UnknownEventModifier => "UNKNOWN_EVENT_MODIFIER",
4660                Self::CountUserspace => "EVENT_MODIFIER_COUNT_USERSPACE",
4661                Self::CountKernel => "EVENT_MODIFIER_COUNT_KERNEL",
4662                Self::CountHypervisor => "EVENT_MODIFIER_COUNT_HYPERVISOR",
4663            }
4664        }
4665        /// Creates an enum from field names used in the ProtoBuf definition.
4666        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4667            match value {
4668                "UNKNOWN_EVENT_MODIFIER" => Some(Self::UnknownEventModifier),
4669                "EVENT_MODIFIER_COUNT_USERSPACE" => Some(Self::CountUserspace),
4670                "EVENT_MODIFIER_COUNT_KERNEL" => Some(Self::CountKernel),
4671                "EVENT_MODIFIER_COUNT_HYPERVISOR" => Some(Self::CountHypervisor),
4672                _ => None,
4673            }
4674        }
4675    }
4676}
4677/// Additional events associated with a leader.
4678/// See <https://man7.org/linux/man-pages/man1/perf-list.1.html#LEADER_SAMPLING>
4679#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4680pub struct FollowerEvent {
4681    /// Modifiers can differ between the timebase and followers.
4682    #[prost(
4683        enumeration = "perf_events::EventModifier",
4684        repeated,
4685        packed = "false",
4686        tag = "5"
4687    )]
4688    pub modifiers: ::prost::alloc::vec::Vec<i32>,
4689    /// Optional arbitrary name for the event, to identify it in the parsed
4690    /// trace. Does *not* affect the profiling itself. If unset, the trace
4691    /// parser will choose a suitable name.
4692    #[prost(string, optional, tag = "4")]
4693    pub name: ::core::option::Option<::prost::alloc::string::String>,
4694    #[prost(oneof = "follower_event::Event", tags = "1, 2, 3")]
4695    pub event: ::core::option::Option<follower_event::Event>,
4696}
4697/// Nested message and enum types in `FollowerEvent`.
4698pub mod follower_event {
4699    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
4700    pub enum Event {
4701        #[prost(enumeration = "super::perf_events::Counter", tag = "1")]
4702        Counter(i32),
4703        #[prost(message, tag = "2")]
4704        Tracepoint(super::perf_events::Tracepoint),
4705        #[prost(message, tag = "3")]
4706        RawEvent(super::perf_events::RawEvent),
4707    }
4708}
4709/// Configuration for the traced_perf profiler.
4710///
4711/// Example config for basic cpu profiling:
4712///    perf_event_config {
4713///      timebase {
4714///        frequency: 80
4715///      }
4716///      callstack_sampling {
4717///        scope {
4718///          target_cmdline: "surfaceflinger"
4719///          target_cmdline: "system_server"
4720///        }
4721///        kernel_frames: true
4722///      }
4723///    }
4724///
4725/// Next id: 23
4726#[derive(Clone, PartialEq, ::prost::Message)]
4727pub struct PerfEventConfig {
4728    /// What event to sample on, and how often.
4729    /// Defined in common/perf_events.proto.
4730    #[prost(message, optional, tag = "15")]
4731    pub timebase: ::core::option::Option<perf_events::Timebase>,
4732    /// Other events associated with the leader described in the timebase.
4733    #[prost(message, repeated, tag = "19")]
4734    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
4735    /// If set, the profiler will sample userspace processes' callstacks at the
4736    /// interval specified by the |timebase|.
4737    /// If unset, the profiler will record only the event counts.
4738    #[prost(message, optional, tag = "16")]
4739    pub callstack_sampling: ::core::option::Option<perf_event_config::CallstackSampling>,
4740    /// List of cpu indices for counting. If empty, the default is all cpus.
4741    ///
4742    /// Note: this is not inside |callstack_sampling.scope| as it also applies to
4743    /// counter-only traces. A future change will likely reorganise the options,
4744    /// but this field will continue to be supported.
4745    ///
4746    /// Available since: perfetto v50.
4747    #[prost(uint32, repeated, packed = "false", tag = "20")]
4748    pub target_cpu: ::prost::alloc::vec::Vec<u32>,
4749    /// Allow failure of perf_event_open
4750    #[prost(bool, optional, tag = "21")]
4751    pub ignore_open_failure: ::core::option::Option<bool>,
4752    /// If not empty, consider only CPUs whose CPUID matches one of these values.
4753    #[prost(string, repeated, tag = "22")]
4754    pub cpuid: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4755    /// How often the per-cpu ring buffers are read by the producer.
4756    /// If unset, an implementation-defined default is used.
4757    #[prost(uint32, optional, tag = "8")]
4758    pub ring_buffer_read_period_ms: ::core::option::Option<u32>,
4759    /// Size (in 4k pages) of each per-cpu ring buffer that is filled by the
4760    /// kernel. If set, must be a power of two.
4761    /// If unset, an implementation-defined default is used.
4762    #[prost(uint32, optional, tag = "3")]
4763    pub ring_buffer_pages: ::core::option::Option<u32>,
4764    /// Drop samples if the heap memory held by the samples in the unwinder queue
4765    /// is above the given limit. This counts the memory across all concurrent data
4766    /// sources (not just this one's), and there is no fairness guarantee - the
4767    /// whole quota might be used up by a concurrent source.
4768    #[prost(uint64, optional, tag = "17")]
4769    pub max_enqueued_footprint_kb: ::core::option::Option<u64>,
4770    /// Stop the data source if traced_perf's combined {RssAnon + Swap} memory
4771    /// footprint exceeds this value.
4772    #[prost(uint32, optional, tag = "13")]
4773    pub max_daemon_memory_kb: ::core::option::Option<u32>,
4774    /// Timeout for the remote /proc/<pid>/{maps,mem} file descriptors for a
4775    /// sampled process. This is primarily for Android, where this lookup is
4776    /// asynchronous. As long as the producer is waiting, the associated samples
4777    /// will be kept enqueued (putting pressure on the capacity of the shared
4778    /// unwinding queue). Once a lookup for a process expires, all associated
4779    /// samples are discarded. However, if the lookup still succeeds after the
4780    /// timeout, future samples will be handled normally.
4781    /// If unset, an implementation-defined default is used.
4782    #[prost(uint32, optional, tag = "9")]
4783    pub remote_descriptor_timeout_ms: ::core::option::Option<u32>,
4784    /// Optional period for clearing state cached by the userspace unwinder. This
4785    /// is a heavy operation that is only necessary for traces that target a wide
4786    /// set of processes, and require the memory footprint to be reset
4787    /// periodically. To effectively disable the cache clearing, set to a value
4788    /// greater than your trace duration.
4789    ///
4790    /// Relevant only if |callstack_sampling.user_frames| is set to UNWIND_DWARF.
4791    ///
4792    /// If zero or unset:
4793    /// * before perfetto v52: no cache clearing.
4794    /// * perfetto v52+: implementation chooses an infrequent default.
4795    #[prost(uint32, optional, tag = "10")]
4796    pub unwind_state_clear_period_ms: ::core::option::Option<u32>,
4797    /// If set, only profile target if it was installed by a package with one of
4798    /// these names. Special values:
4799    /// * "@system": installed on the system partition
4800    /// * "@product": installed on the product partition
4801    /// * "@null": sideloaded
4802    /// Supported on Android 12+.
4803    #[prost(string, repeated, tag = "18")]
4804    pub target_installed_by: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4805    /// Note: legacy configs had to set |all_cpus| to true to pass parsing.
4806    /// We rely on this to detect such configs.
4807    #[prost(bool, optional, tag = "1")]
4808    pub all_cpus: ::core::option::Option<bool>,
4809    #[prost(uint32, optional, tag = "2")]
4810    pub sampling_frequency: ::core::option::Option<u32>,
4811    #[prost(bool, optional, tag = "12")]
4812    pub kernel_frames: ::core::option::Option<bool>,
4813    #[prost(int32, repeated, packed = "false", tag = "4")]
4814    pub target_pid: ::prost::alloc::vec::Vec<i32>,
4815    #[prost(string, repeated, tag = "5")]
4816    pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4817    #[prost(int32, repeated, packed = "false", tag = "6")]
4818    pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4819    #[prost(string, repeated, tag = "7")]
4820    pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4821    #[prost(uint32, optional, tag = "11")]
4822    pub additional_cmdline_count: ::core::option::Option<u32>,
4823}
4824/// Nested message and enum types in `PerfEventConfig`.
4825pub mod perf_event_config {
4826    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4827    pub struct CallstackSampling {
4828        /// Defines a set of processes for which samples are retained/skipped. If
4829        /// unset, all samples are kept, but beware that it will be very heavy on the
4830        /// stack unwinder, which might start dropping samples due to overload.
4831        #[prost(message, optional, tag = "1")]
4832        pub scope: ::core::option::Option<Scope>,
4833        /// If true, callstacks will include the kernel-space frames. Such frames can
4834        /// be identified by a magical "kernel" string as their mapping name.
4835        /// Requires traced_perf to be running as root, or kptr_restrict to have been
4836        /// manually unrestricted. On Android, the platform should do the right thing
4837        /// on debug builds.
4838        /// This does *not* disclose KASLR, as only the function names are emitted.
4839        #[prost(bool, optional, tag = "2")]
4840        pub kernel_frames: ::core::option::Option<bool>,
4841        /// Whether to record and unwind userspace callstacks. If unset, defaults to
4842        /// including userspace (UNWIND_DWARF) both for backwards compatibility and
4843        /// as the most common default (this defaulting is only applicable if the
4844        /// outer CallstackSampling message is explicitly set).
4845        #[prost(enumeration = "UnwindMode", optional, tag = "3")]
4846        pub user_frames: ::core::option::Option<i32>,
4847    }
4848    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4849    pub struct Scope {
4850        /// Process ID (TGID) allowlist. If this list is not empty, only matching
4851        /// samples will be retained. If multiple allow/deny-lists are
4852        /// specified by the config, then all of them are evaluated for each sampled
4853        /// process.
4854        #[prost(int32, repeated, packed = "false", tag = "1")]
4855        pub target_pid: ::prost::alloc::vec::Vec<i32>,
4856        /// Command line allowlist, matched against the /proc/<pid>/cmdline (not the
4857        /// comm string). The semantics of this field were changed since its original
4858        /// introduction.
4859        ///
4860        /// On Android T+ (13+), this field can specify a single wildcard (*), and
4861        /// the profiler will attempt to match it in two possible ways:
4862        /// * if the pattern starts with a '/', then it is matched against the first
4863        ///    segment of the cmdline (i.e. argv0). For example "/bin/e*" would match
4864        ///    "/bin/echo".
4865        /// * otherwise the pattern is matched against the part of argv0
4866        ///    corresponding to the binary name (this is unrelated to /proc/pid/exe).
4867        ///    For example "echo" would match "/bin/echo".
4868        ///
4869        /// On Android S (12) and below, both this pattern and /proc/pid/cmdline get
4870        /// normalized prior to an exact string comparison. Normalization is as
4871        /// follows: (1) trim everything beyond the first null or "@" byte; (2) if
4872        /// the string contains forward slashes, trim everything up to and including
4873        /// the last one.
4874        ///
4875        /// Implementation note: in either case, at most 511 characters of cmdline
4876        /// are considered.
4877        #[prost(string, repeated, tag = "2")]
4878        pub target_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4879        /// List of excluded pids.
4880        #[prost(int32, repeated, packed = "false", tag = "3")]
4881        pub exclude_pid: ::prost::alloc::vec::Vec<i32>,
4882        /// List of excluded cmdlines. See description of |target_cmdline| for how
4883        /// this is handled.
4884        #[prost(string, repeated, tag = "4")]
4885        pub exclude_cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4886        /// Number of additional command lines to sample. Only those which are
4887        /// neither explicitly included nor excluded will be considered. Processes
4888        /// are accepted on a first come, first served basis.
4889        #[prost(uint32, optional, tag = "5")]
4890        pub additional_cmdline_count: ::core::option::Option<u32>,
4891        /// If set to N, all encountered processes will be put into one of the N
4892        /// possible bins, and only one randomly-chosen bin will be selected for
4893        /// unwinding. The binning is simply "pid % N", under the assumption that
4894        /// low-order bits of pids are roughly uniformly distributed. Other explicit
4895        /// inclusions/exclusions in this |Scope| message are still respected.
4896        ///
4897        /// The profiler will report the chosen shard in PerfSampleDefaults, and the
4898        /// values will be queryable in trace processor under the "stats" table as
4899        /// "perf_process_shard_count" and "perf_chosen_process_shard".
4900        ///
4901        /// NB: all data sources in a config that set |process_shard_count| must set
4902        /// it to the same value. The profiler will choose one bin for all those data
4903        /// sources.
4904        #[prost(uint32, optional, tag = "6")]
4905        pub process_shard_count: ::core::option::Option<u32>,
4906    }
4907    /// Userspace unwinding mode.
4908    #[derive(
4909        Clone,
4910        Copy,
4911        Debug,
4912        PartialEq,
4913        Eq,
4914        Hash,
4915        PartialOrd,
4916        Ord,
4917        ::prost::Enumeration
4918    )]
4919    #[repr(i32)]
4920    pub enum UnwindMode {
4921        UnwindUnknown = 0,
4922        /// Do not unwind userspace:
4923        UnwindSkip = 1,
4924        /// Use libunwindstack (default):
4925        UnwindDwarf = 2,
4926        /// Use userspace frame pointer unwinder:
4927        UnwindFramePointer = 3,
4928        /// Ask the kernel to unwind the userspace stack via frame pointers, using
4929        /// PERF_SAMPLE_CALLCHAIN. The user stack bytes are not copied into the
4930        /// sample, which avoids the per-sample copy cost and the depth limit
4931        /// imposed by PERF_SAMPLE_STACK_USER. Requires that the userspace code
4932        /// (including system libraries) is built with frame pointers - the kernel
4933        /// walks the chain and returns instruction addresses, which still need to
4934        /// be symbolized offline using the recorded process mappings.
4935        UnwindKernelFramePointer = 4,
4936    }
4937    impl UnwindMode {
4938        /// String value of the enum field names used in the ProtoBuf definition.
4939        ///
4940        /// The values are not transformed in any way and thus are considered stable
4941        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4942        pub fn as_str_name(&self) -> &'static str {
4943            match self {
4944                Self::UnwindUnknown => "UNWIND_UNKNOWN",
4945                Self::UnwindSkip => "UNWIND_SKIP",
4946                Self::UnwindDwarf => "UNWIND_DWARF",
4947                Self::UnwindFramePointer => "UNWIND_FRAME_POINTER",
4948                Self::UnwindKernelFramePointer => "UNWIND_KERNEL_FRAME_POINTER",
4949            }
4950        }
4951        /// Creates an enum from field names used in the ProtoBuf definition.
4952        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4953            match value {
4954                "UNWIND_UNKNOWN" => Some(Self::UnwindUnknown),
4955                "UNWIND_SKIP" => Some(Self::UnwindSkip),
4956                "UNWIND_DWARF" => Some(Self::UnwindDwarf),
4957                "UNWIND_FRAME_POINTER" => Some(Self::UnwindFramePointer),
4958                "UNWIND_KERNEL_FRAME_POINTER" => Some(Self::UnwindKernelFramePointer),
4959                _ => None,
4960            }
4961        }
4962    }
4963}
4964#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4965pub struct ProtoVmConfig {
4966    #[prost(uint32, optional, tag = "1")]
4967    pub memory_limit_kb: ::core::option::Option<u32>,
4968}
4969/// QnxConfig is used with trace_qnx_probes build from
4970/// <https://github.com/qnx-ports/perfetto>
4971#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4972pub struct QnxConfig {
4973    /// The number of buffers that tracelog will init for the QNX trace.
4974    #[prost(uint32, optional, tag = "1")]
4975    pub qnx_kernel_buffers: ::core::option::Option<u32>,
4976    /// The number of kernel buffers that tracelog will init for the QNX trace.
4977    #[prost(uint32, optional, tag = "2")]
4978    pub qnx_kernel_kbuffers: ::core::option::Option<u32>,
4979    /// Flag indicating whether the QNX kernel tracing should produce wide
4980    /// events which contain additional data or fast events which are most
4981    /// concise. In fast mode we lose the priority information
4982    #[prost(bool, optional, tag = "3")]
4983    pub qnx_kernel_wide_events: ::core::option::Option<bool>,
4984    /// The number of pages initialized by default the parser's page cache.
4985    #[prost(uint32, optional, tag = "4")]
4986    pub qnx_cache_pages: ::core::option::Option<u32>,
4987    /// The max pages the page cache should allocate (must be at least as big)
4988    /// as the qnx_cache_pages value. Using -1 will allow the cache to grow
4989    /// unbounded. The cache will prefer to re-use existing pages so growth will
4990    /// only happen when needed (when parser is not keeping up).
4991    #[prost(int32, optional, tag = "5")]
4992    pub qnx_cache_max_pages: ::core::option::Option<i32>,
4993    /// The initial size of the the buffer used to hold the trace header values
4994    /// this dynamic buffer will grow as needed but reallocs can be avoided by
4995    /// selecting an initial size large enough to hold all the initial header
4996    /// data.
4997    #[prost(uint32, optional, tag = "6")]
4998    pub qnx_trace_buffer_init_bytes: ::core::option::Option<u32>,
4999}
5000/// This file is named 'statsd_tracing_config.proto' rather than
5001/// 'statsd_config.proto' (which would be more consistent with the other
5002/// config protos) so it doesn't show up and confuse folks looking for
5003/// the existing statsd_config.proto for configuring statsd itself.
5004/// Same for the config proto itself.
5005#[derive(Clone, PartialEq, ::prost::Message)]
5006pub struct StatsdTracingConfig {
5007    /// This is for the common case of the atom id being known in the enum AtomId.
5008    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
5009    pub push_atom_id: ::prost::alloc::vec::Vec<i32>,
5010    /// Escape hatch for Atom IDs that are not yet in the AtomId enum
5011    /// (e.g. non-upstream atoms that don't exist in AOSP).
5012    #[prost(int32, repeated, packed = "false", tag = "2")]
5013    pub raw_push_atom_id: ::prost::alloc::vec::Vec<i32>,
5014    #[prost(message, repeated, tag = "3")]
5015    pub pull_config: ::prost::alloc::vec::Vec<StatsdPullAtomConfig>,
5016}
5017#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5018pub struct StatsdPullAtomConfig {
5019    #[prost(enumeration = "AtomId", repeated, packed = "false", tag = "1")]
5020    pub pull_atom_id: ::prost::alloc::vec::Vec<i32>,
5021    #[prost(int32, repeated, packed = "false", tag = "2")]
5022    pub raw_pull_atom_id: ::prost::alloc::vec::Vec<i32>,
5023    #[prost(int32, optional, tag = "3")]
5024    pub pull_frequency_ms: ::core::option::Option<i32>,
5025    #[prost(string, repeated, tag = "4")]
5026    pub packages: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5027}
5028/// This file defines the configuration for the Linux /proc poller data source,
5029/// which injects counters in the trace.
5030/// Counters that are needed in the trace must be explicitly listed in the
5031/// *_counters fields. This is to avoid spamming the trace with all counters
5032/// at all times.
5033/// The sampling rate is configurable. All polling rates (*_period_ms) need
5034/// to be integer multiples of each other.
5035/// OK:     \[10ms, 10ms, 10ms\],  \[10ms, 20ms, 10ms\],  \[10ms, 20ms, 60ms\]
5036/// Not OK: \[10ms, 10ms, 11ms\],  \[10ms, 15ms, 20ms\]
5037#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5038pub struct SysStatsConfig {
5039    /// Polls /proc/meminfo every X ms, if non-zero.
5040    /// This is required to be > 10ms to avoid excessive CPU usage.
5041    /// Cost: 0.3 ms \[read\] + 0.07 ms \[parse + trace injection\]
5042    #[prost(uint32, optional, tag = "1")]
5043    pub meminfo_period_ms: ::core::option::Option<u32>,
5044    /// If empty all known counters are reported. Otherwise, only the counters
5045    /// specified below are reported.
5046    #[prost(enumeration = "MeminfoCounters", repeated, packed = "false", tag = "2")]
5047    pub meminfo_counters: ::prost::alloc::vec::Vec<i32>,
5048    /// Polls /proc/vmstat every X ms, if non-zero.
5049    /// This is required to be > 10ms to avoid excessive CPU usage.
5050    /// Cost: 0.2 ms \[read\] + 0.3 ms \[parse + trace injection\]
5051    #[prost(uint32, optional, tag = "3")]
5052    pub vmstat_period_ms: ::core::option::Option<u32>,
5053    #[prost(enumeration = "VmstatCounters", repeated, packed = "false", tag = "4")]
5054    pub vmstat_counters: ::prost::alloc::vec::Vec<i32>,
5055    /// Pols /proc/stat every X ms, if non-zero.
5056    /// This is required to be > 10ms to avoid excessive CPU usage.
5057    /// Cost: 4.1 ms \[read\] + 1.9 ms \[parse + trace injection\]
5058    #[prost(uint32, optional, tag = "5")]
5059    pub stat_period_ms: ::core::option::Option<u32>,
5060    #[prost(
5061        enumeration = "sys_stats_config::StatCounters",
5062        repeated,
5063        packed = "false",
5064        tag = "6"
5065    )]
5066    pub stat_counters: ::prost::alloc::vec::Vec<i32>,
5067    /// Polls /sys/devfreq/*/curfreq every X ms, if non-zero.
5068    /// This is required to be > 10ms to avoid excessive CPU usage.
5069    /// This option can be used to record unchanging values.
5070    /// Updates from frequency changes can come from ftrace/set_clock_rate.
5071    #[prost(uint32, optional, tag = "7")]
5072    pub devfreq_period_ms: ::core::option::Option<u32>,
5073    /// Polls /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq every X ms.
5074    /// This is required to be > 10ms to avoid excessive CPU usage.
5075    #[prost(uint32, optional, tag = "8")]
5076    pub cpufreq_period_ms: ::core::option::Option<u32>,
5077    /// Polls /proc/buddyinfo every X ms, if non-zero.
5078    /// This is required to be > 10ms to avoid excessive CPU usage.
5079    #[prost(uint32, optional, tag = "9")]
5080    pub buddyinfo_period_ms: ::core::option::Option<u32>,
5081    /// Polls /proc/diskstats every X ms, if non-zero.
5082    /// This is required to be > 10ms to avoid excessive CPU usage.
5083    #[prost(uint32, optional, tag = "10")]
5084    pub diskstat_period_ms: ::core::option::Option<u32>,
5085    /// Polls /proc/pressure/* every X ms, if non-zero.
5086    /// This is required to be > 10ms to avoid excessive CPU usage.
5087    #[prost(uint32, optional, tag = "11")]
5088    pub psi_period_ms: ::core::option::Option<u32>,
5089    /// Polls /sys/class/thermal/* every X ms, if non-zero.
5090    /// This is required to be > 10ms to avoid excessive CPU usage.
5091    #[prost(uint32, optional, tag = "12")]
5092    pub thermal_period_ms: ::core::option::Option<u32>,
5093    /// Polls /sys/devices/system/cpu/cpu*/cpuidle/state* every X ms, if non-zero.
5094    /// This is required to be > 10ms to avoid excessive CPU usage.
5095    #[prost(uint32, optional, tag = "13")]
5096    pub cpuidle_period_ms: ::core::option::Option<u32>,
5097    /// Polls device-specific GPU frequency info every X ms, if non-zero.
5098    /// This is required to be > 10ms to avoid excessive CPU usage.
5099    #[prost(uint32, optional, tag = "14")]
5100    pub gpufreq_period_ms: ::core::option::Option<u32>,
5101    /// Polls /proc/slabinfo every X ms, if non-zero.
5102    /// This is required to be > 10ms to avoid excessive CPU usage.
5103    #[prost(uint32, optional, tag = "15")]
5104    pub slab_period_ms: ::core::option::Option<u32>,
5105}
5106/// Nested message and enum types in `SysStatsConfig`.
5107pub mod sys_stats_config {
5108    #[derive(
5109        Clone,
5110        Copy,
5111        Debug,
5112        PartialEq,
5113        Eq,
5114        Hash,
5115        PartialOrd,
5116        Ord,
5117        ::prost::Enumeration
5118    )]
5119    #[repr(i32)]
5120    pub enum StatCounters {
5121        StatUnspecified = 0,
5122        StatCpuTimes = 1,
5123        StatIrqCounts = 2,
5124        StatSoftirqCounts = 3,
5125        StatForkCount = 4,
5126    }
5127    impl StatCounters {
5128        /// String value of the enum field names used in the ProtoBuf definition.
5129        ///
5130        /// The values are not transformed in any way and thus are considered stable
5131        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5132        pub fn as_str_name(&self) -> &'static str {
5133            match self {
5134                Self::StatUnspecified => "STAT_UNSPECIFIED",
5135                Self::StatCpuTimes => "STAT_CPU_TIMES",
5136                Self::StatIrqCounts => "STAT_IRQ_COUNTS",
5137                Self::StatSoftirqCounts => "STAT_SOFTIRQ_COUNTS",
5138                Self::StatForkCount => "STAT_FORK_COUNT",
5139            }
5140        }
5141        /// Creates an enum from field names used in the ProtoBuf definition.
5142        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5143            match value {
5144                "STAT_UNSPECIFIED" => Some(Self::StatUnspecified),
5145                "STAT_CPU_TIMES" => Some(Self::StatCpuTimes),
5146                "STAT_IRQ_COUNTS" => Some(Self::StatIrqCounts),
5147                "STAT_SOFTIRQ_COUNTS" => Some(Self::StatSoftirqCounts),
5148                "STAT_FORK_COUNT" => Some(Self::StatForkCount),
5149                _ => None,
5150            }
5151        }
5152    }
5153}
5154/// This data-source does a one-off recording of system information when
5155/// the trace starts.
5156/// Currently this includes:
5157/// - Values of
5158/// /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies This
5159/// datasource has no configuration options at present.
5160#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5161pub struct SystemInfoConfig {
5162    /// If true, records hardware interrupt ID-to-name mappings from
5163    /// /proc/interrupts.
5164    #[prost(bool, optional, tag = "1")]
5165    pub irq_names: ::core::option::Option<bool>,
5166}
5167/// The configuration for a fake producer used in tests.
5168#[derive(Clone, PartialEq, ::prost::Message)]
5169pub struct TestConfig {
5170    /// The number of messages the fake producer should send.
5171    #[prost(uint32, optional, tag = "1")]
5172    pub message_count: ::core::option::Option<u32>,
5173    /// The maximum number of messages which should be sent each second.
5174    /// The actual obserced speed may be lower if the producer is unable to
5175    /// work fast enough.
5176    /// If this is zero or unset, the producer will send as fast as possible.
5177    #[prost(uint32, optional, tag = "2")]
5178    pub max_messages_per_second: ::core::option::Option<u32>,
5179    /// The seed value for a simple multiplicative congruential pseudo-random
5180    /// number sequence.
5181    #[prost(uint32, optional, tag = "3")]
5182    pub seed: ::core::option::Option<u32>,
5183    /// The size of each message in bytes. Should be greater than or equal 5 to
5184    /// account for the number of bytes needed to encode the random number and a
5185    /// null byte for the string.
5186    #[prost(uint32, optional, tag = "4")]
5187    pub message_size: ::core::option::Option<u32>,
5188    /// Whether the producer should send a event batch when the data source is
5189    /// is initially registered.
5190    #[prost(bool, optional, tag = "5")]
5191    pub send_batch_on_register: ::core::option::Option<bool>,
5192    #[prost(message, optional, tag = "6")]
5193    pub dummy_fields: ::core::option::Option<test_config::DummyFields>,
5194}
5195/// Nested message and enum types in `TestConfig`.
5196pub mod test_config {
5197    #[derive(Clone, PartialEq, ::prost::Message)]
5198    pub struct DummyFields {
5199        #[prost(uint32, optional, tag = "1")]
5200        pub field_uint32: ::core::option::Option<u32>,
5201        #[prost(int32, optional, tag = "2")]
5202        pub field_int32: ::core::option::Option<i32>,
5203        #[prost(uint64, optional, tag = "3")]
5204        pub field_uint64: ::core::option::Option<u64>,
5205        #[prost(int64, optional, tag = "4")]
5206        pub field_int64: ::core::option::Option<i64>,
5207        #[prost(fixed64, optional, tag = "5")]
5208        pub field_fixed64: ::core::option::Option<u64>,
5209        #[prost(sfixed64, optional, tag = "6")]
5210        pub field_sfixed64: ::core::option::Option<i64>,
5211        #[prost(fixed32, optional, tag = "7")]
5212        pub field_fixed32: ::core::option::Option<u32>,
5213        #[prost(sfixed32, optional, tag = "8")]
5214        pub field_sfixed32: ::core::option::Option<i32>,
5215        #[prost(double, optional, tag = "9")]
5216        pub field_double: ::core::option::Option<f64>,
5217        #[prost(float, optional, tag = "10")]
5218        pub field_float: ::core::option::Option<f32>,
5219        #[prost(sint64, optional, tag = "11")]
5220        pub field_sint64: ::core::option::Option<i64>,
5221        #[prost(sint32, optional, tag = "12")]
5222        pub field_sint32: ::core::option::Option<i32>,
5223        #[prost(string, optional, tag = "13")]
5224        pub field_string: ::core::option::Option<::prost::alloc::string::String>,
5225        #[prost(bytes = "vec", optional, tag = "14")]
5226        pub field_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5227    }
5228}
5229/// The following fields define the set of enabled trace categories. Each list
5230/// item is a glob.
5231///
5232/// To determine if category is enabled, it is checked against the filters in
5233/// the following order:
5234///
5235///    1. Exact matches in enabled categories.
5236///    2. Exact matches in enabled tags.
5237///    3. Exact matches in disabled categories.
5238///    4. Exact matches in disabled tags.
5239///    5. Pattern matches in enabled categories.
5240///    6. Pattern matches in enabled tags.
5241///    7. Pattern matches in disabled categories.
5242///    8. Pattern matches in disabled tags.
5243///
5244/// If none of the steps produced a match:
5245///   - In the C++ SDK (`perfetto::Category`), categories are enabled by
5246///   default.
5247///   - In the C SDK (`PerfettoTeCategory`), categories are disabled by default.
5248///
5249/// Examples:
5250///
5251///   - To enable all non-slow/debug categories:
5252///
5253///        enabled_categories: "*"
5254///
5255///   - To enable specific categories:
5256///
5257///        disabled_categories: "*"
5258///        enabled_categories: "my_category"
5259///        enabled_categories: "my_category2"
5260///
5261///   - To enable only categories with a specific tag:
5262///
5263///        disabled_tags: "*"
5264///        enabled_tags: "my_tag"
5265///
5266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5267pub struct TrackEventConfig {
5268    /// Default: \[\]
5269    #[prost(string, repeated, tag = "1")]
5270    pub disabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5271    /// Default: \[\]
5272    #[prost(string, repeated, tag = "2")]
5273    pub enabled_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5274    /// Default: \["slow", "debug"\]
5275    #[prost(string, repeated, tag = "3")]
5276    pub disabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5277    /// Default: \[\]
5278    #[prost(string, repeated, tag = "4")]
5279    pub enabled_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5280    /// Default: false (i.e. enabled by default)
5281    #[prost(bool, optional, tag = "5")]
5282    pub disable_incremental_timestamps: ::core::option::Option<bool>,
5283    /// Allows to specify a custom unit different than the default (ns).
5284    /// Also affects thread timestamps if enable_thread_time_sampling = true.
5285    /// A multiplier of 1000 means that a timestamp = 3 should be interpreted as
5286    /// 3000 ns = 3 us.
5287    /// Default: 1 (if unset, it should be read as 1).
5288    #[prost(uint64, optional, tag = "6")]
5289    pub timestamp_unit_multiplier: ::core::option::Option<u64>,
5290    /// Default: false (i.e. debug_annotations is NOT filtered out by default)
5291    /// When true, any debug annotations provided as arguments to the
5292    /// TRACE_EVENT macros are not written into the trace. Typed arguments will
5293    /// still be emitted even if set to true.
5294    #[prost(bool, optional, tag = "7")]
5295    pub filter_debug_annotations: ::core::option::Option<bool>,
5296    /// Default: false (i.e. disabled)
5297    /// When true, the SDK samples and emits the current thread time counter value
5298    /// for each event on the current thread's track. This value represents the
5299    /// total CPU time consumed by that thread since its creation.
5300    /// Learn more: "CLOCK_THREAD_CPUTIME_ID" flag at
5301    /// <https://man7.org/linux/man-pages/man3/clock_gettime.3.html>
5302    #[prost(bool, optional, tag = "8")]
5303    pub enable_thread_time_sampling: ::core::option::Option<bool>,
5304    /// When enable_thread_time_sampling is true, and this is specified, thread
5305    /// time is sampled only if the elapsed wall time >
5306    /// `thread_time_subsampling_ns`. Otherwise, thread time is considered nil.
5307    /// Effectively, this means thread time will have a leeway of
5308    /// `thread_time_subsampling_ns` and won't be emitted for shorter events.
5309    #[prost(uint64, optional, tag = "10")]
5310    pub thread_time_subsampling_ns: ::core::option::Option<u64>,
5311    /// Default: false (i.e. dynamic event names are NOT filtered out by default)
5312    /// When true, event_names wrapped in perfetto::DynamicString will be filtered
5313    /// out.
5314    #[prost(bool, optional, tag = "9")]
5315    pub filter_dynamic_event_names: ::core::option::Option<bool>,
5316}
5317/// The configuration that is passed to each data source when starting tracing.
5318///
5319/// Keep the lower IDs (up to 99) for fields that are *not* specific to
5320/// data-sources and needs to be processed by the traced daemon.
5321///
5322/// All data source config fields must be marked as \[lazy=true\]. This prevents
5323/// the proto-to-cpp generator from recursing into those when generating the
5324/// cpp classes and polluting tracing/core with data-source-specific classes.
5325/// Instead they are treated as opaque strings containing raw proto bytes.
5326///
5327/// Next id: 152
5328#[derive(Clone, PartialEq, ::prost::Message)]
5329pub struct DataSourceConfig {
5330    /// Data source unique name, e.g., "linux.ftrace". This must match
5331    /// the name passed by the data source when it registers (see
5332    /// RegisterDataSource()).
5333    #[prost(string, optional, tag = "1")]
5334    pub name: ::core::option::Option<::prost::alloc::string::String>,
5335    /// The index of the logging buffer where TracePacket(s) will be stored.
5336    /// This field is quite subtle as it has a double semantic:
5337    /// 1) When the config is passed, this field is a 0-based index relative to the
5338    ///     buffer array in the TraceConfig and defines the mapping between data
5339    ///     sources and config. From v54 this is optional because the user can
5340    ///     instead use target_buffer_name.
5341    /// 2) When the TracingService issues a SetupDataSource/StartDataSource to the
5342    ///     producer, it overwrites this field with the global buffer index (which
5343    ///     depends on other tracing sessions active). This tells the producer which
5344    ///     buffer id should be passed to CreateTraceWriter. In this case, the trace
5345    ///     service always sets the resolved global id, even when using
5346    ///     `target_buffer_name`.
5347    /// In hindsight we should have used two different fields given even in v0 they
5348    /// had a different semantic. But now it's too late as this would be a major
5349    /// protocol breaking change.
5350    #[prost(uint32, optional, tag = "2")]
5351    pub target_buffer: ::core::option::Option<u32>,
5352    /// Alternative to |target_buffer|. References a buffer by name (as specified
5353    /// in TraceConfig.BufferConfig.name) rather than by index. This is more
5354    /// readable and less error-prone than using buffer indices.
5355    /// If both |target_buffer| and |target_buffer_name| are specified, they must
5356    /// refer to the same buffer, otherwise the service will reject the config.
5357    /// Using both fields allows configs to work with both old and new versions
5358    /// of the tracing service. Introduced in v54.
5359    #[prost(string, optional, tag = "11")]
5360    pub target_buffer_name: ::core::option::Option<::prost::alloc::string::String>,
5361    /// Set by the service to indicate the duration of the trace.
5362    /// DO NOT SET in consumer as this will be overridden by the service.
5363    #[prost(uint32, optional, tag = "3")]
5364    pub trace_duration_ms: ::core::option::Option<u32>,
5365    /// If true, |trace_duration_ms| should count also time in suspend. This
5366    /// is propagated from TraceConfig.prefer_suspend_clock_for_duration.
5367    #[prost(bool, optional, tag = "122")]
5368    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
5369    /// Set by the service to indicate how long it waits after StopDataSource.
5370    /// DO NOT SET in consumer as this will be overridden by the service.
5371    #[prost(uint32, optional, tag = "7")]
5372    pub stop_timeout_ms: ::core::option::Option<u32>,
5373    /// Set by the service to indicate whether this tracing session has extra
5374    /// guardrails.
5375    /// DO NOT SET in consumer as this will be overridden by the service.
5376    #[prost(bool, optional, tag = "6")]
5377    pub enable_extra_guardrails: ::core::option::Option<bool>,
5378    /// Set by the service to indicate which user initiated this trace.
5379    /// DO NOT SET in consumer as this will be overridden by the service.
5380    #[prost(enumeration = "data_source_config::SessionInitiator", optional, tag = "8")]
5381    pub session_initiator: ::core::option::Option<i32>,
5382    /// Set by the service to indicate which tracing session the data source
5383    /// belongs to. The intended use case for this is checking if two data sources,
5384    /// one of which produces metadata for the other one, belong to the same trace
5385    /// session and hence should be linked together.
5386    /// This field was introduced in Aug 2018 after Android P.
5387    /// DO NOT SET in consumer as this will be overridden by the service.
5388    #[prost(uint64, optional, tag = "4")]
5389    pub tracing_session_id: ::core::option::Option<u64>,
5390    /// How to behave when the producer runs out of space in the shared memory
5391    /// buffer. This is only honored by some data sources (in the SDK, the data
5392    /// sources registered with a configurable buffer exhausted policy).
5393    #[prost(
5394        enumeration = "data_source_config::BufferExhaustedPolicy",
5395        optional,
5396        tag = "9"
5397    )]
5398    pub buffer_exhausted_policy: ::core::option::Option<i32>,
5399    #[prost(message, optional, tag = "10")]
5400    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
5401    /// If specified, the data source requires the tracing service to process
5402    /// overwritten packets (patches) using a ProtoVM instance with this config.
5403    /// The ProtoVM program is specified at data source registration time through
5404    /// the descriptor.
5405    ///
5406    /// TODO(primiano): today when we enable a protovm_config, we actually accept
5407    /// that if N producers advertise M different versions of the same program we
5408    /// will create M instances of that program.
5409    /// To overcome this, we could move the program to the TraceConfig. But doing
5410    /// so would bloat the trace config size too big and create problems to statsd.
5411    /// Once the config store (b/482305876) exists we should move protovm programs
5412    /// onto that.
5413    #[prost(message, optional, tag = "12")]
5414    pub protovm_config: ::core::option::Option<ProtoVmConfig>,
5415    /// Set by the service to indicate that this data source can write to its
5416    /// target buffer through the tracing v2 ring buffer. True only if:
5417    /// - v2 is in the connection's common ProtocolAbiVersion mask, and
5418    /// - the target buffer is a TraceBufferV2.
5419    /// Absent means false. True permits v2 but does not select it. The producer
5420    /// can select v1 only if v1 is also in the common mask. If no common version
5421    /// is permitted by the config and target buffer, the instance cannot run.
5422    /// One buffer can hold both formats. Each writer sequence uses one format.
5423    ///
5424    /// Not supported: a ProtoVM data source on the same buffer.
5425    /// DO NOT SET in consumer as this will be overridden by the service.
5426    #[prost(bool, optional, tag = "147")]
5427    pub supports_tracing_v2: ::core::option::Option<bool>,
5428    #[prost(message, optional, tag = "148")]
5429    pub experimental_tracing_v2: ::core::option::Option<
5430        data_source_config::ExperimentalTracingV2Config,
5431    >,
5432    /// Data source name: linux.ftrace
5433    #[prost(message, optional, tag = "100")]
5434    pub ftrace_config: ::core::option::Option<FtraceConfig>,
5435    /// Data source name: linux.inode_file_map
5436    #[prost(message, optional, tag = "102")]
5437    pub inode_file_config: ::core::option::Option<InodeFileConfig>,
5438    /// Data source name: linux.process_stats
5439    #[prost(message, optional, tag = "103")]
5440    pub process_stats_config: ::core::option::Option<ProcessStatsConfig>,
5441    /// Data source name: linux.sys_stats
5442    #[prost(message, optional, tag = "104")]
5443    pub sys_stats_config: ::core::option::Option<SysStatsConfig>,
5444    /// Data source name: android.heapprofd
5445    /// Introduced in Android 10.
5446    #[prost(message, optional, tag = "105")]
5447    pub heapprofd_config: ::core::option::Option<HeapprofdConfig>,
5448    /// Data source name: android.java_hprof
5449    /// Introduced in Android 11.
5450    #[prost(message, optional, tag = "110")]
5451    pub java_hprof_config: ::core::option::Option<JavaHprofConfig>,
5452    /// Data source name: android.power
5453    #[prost(message, optional, tag = "106")]
5454    pub android_power_config: ::core::option::Option<AndroidPowerConfig>,
5455    /// Data source name: android.log
5456    #[prost(message, optional, tag = "107")]
5457    pub android_log_config: ::core::option::Option<AndroidLogConfig>,
5458    /// Data source name: gpu.counters
5459    #[prost(message, optional, tag = "108")]
5460    pub gpu_counter_config: ::core::option::Option<GpuCounterConfig>,
5461    /// Data source name: android.game_interventions
5462    #[prost(message, optional, tag = "116")]
5463    pub android_game_intervention_list_config: ::core::option::Option<
5464        AndroidGameInterventionListConfig,
5465    >,
5466    /// Data source name: android.packages_list
5467    #[prost(message, optional, tag = "109")]
5468    pub packages_list_config: ::core::option::Option<PackagesListConfig>,
5469    /// Data source name: linux.perf
5470    #[prost(message, optional, tag = "111")]
5471    pub perf_event_config: ::core::option::Option<PerfEventConfig>,
5472    /// Data source name: vulkan.memory_tracker
5473    #[prost(message, optional, tag = "112")]
5474    pub vulkan_memory_config: ::core::option::Option<VulkanMemoryConfig>,
5475    /// Data source name: track_event
5476    #[prost(message, optional, tag = "113")]
5477    pub track_event_config: ::core::option::Option<TrackEventConfig>,
5478    /// Data source name: android.polled_state
5479    #[prost(message, optional, tag = "114")]
5480    pub android_polled_state_config: ::core::option::Option<AndroidPolledStateConfig>,
5481    /// Data source name: android.system_property
5482    #[prost(message, optional, tag = "118")]
5483    pub android_system_property_config: ::core::option::Option<
5484        AndroidSystemPropertyConfig,
5485    >,
5486    /// Data source name: android.statsd
5487    #[prost(message, optional, tag = "117")]
5488    pub statsd_tracing_config: ::core::option::Option<StatsdTracingConfig>,
5489    /// Data source name: linux.system_info
5490    #[prost(message, optional, tag = "119")]
5491    pub system_info_config: ::core::option::Option<SystemInfoConfig>,
5492    /// Data source name: linux.frozen_ftrace
5493    #[prost(message, optional, tag = "136")]
5494    pub frozen_ftrace_config: ::core::option::Option<FrozenFtraceConfig>,
5495    /// Chrome is special as it doesn't use the perfetto IPC layer. We want to
5496    /// avoid proto serialization and de-serialization there because that would
5497    /// just add extra hops on top of the Mojo ser/des. Instead we auto-generate a
5498    /// C++ class for it so it can pass around plain C++ objets.
5499    #[prost(message, optional, tag = "101")]
5500    pub chrome_config: ::core::option::Option<ChromeConfig>,
5501    /// Data source name: code.v8.dev
5502    #[prost(message, optional, tag = "127")]
5503    pub v8_config: ::core::option::Option<V8Config>,
5504    /// If an interceptor is specified here, packets for this data source will be
5505    /// rerouted to the interceptor instead of the main trace buffer. This can be
5506    /// used, for example, to write trace data into ETW or for logging trace points
5507    /// to the console.
5508    ///
5509    /// Note that interceptors are only supported by data sources registered
5510    /// through the Perfetto SDK API. Data sources that don't use that API (e.g.,
5511    /// traced_probes) may not support interception.
5512    #[prost(message, optional, tag = "115")]
5513    pub interceptor_config: ::core::option::Option<InterceptorConfig>,
5514    /// Data source name: android.network_packets.
5515    /// Introduced in Android 14 (U).
5516    #[prost(message, optional, tag = "120")]
5517    pub network_packet_trace_config: ::core::option::Option<NetworkPacketTraceConfig>,
5518    /// Data source name: android.surfaceflinger.layers
5519    #[prost(message, optional, tag = "121")]
5520    pub surfaceflinger_layers_config: ::core::option::Option<SurfaceFlingerLayersConfig>,
5521    /// Data source name: android.surfaceflinger.transactions
5522    #[prost(message, optional, tag = "123")]
5523    pub surfaceflinger_transactions_config: ::core::option::Option<
5524        SurfaceFlingerTransactionsConfig,
5525    >,
5526    /// Data source name: android.sdk_sysprop_guard
5527    /// Introduced in Android 14 (U) QPR1.
5528    #[prost(message, optional, tag = "124")]
5529    pub android_sdk_sysprop_guard_config: ::core::option::Option<
5530        AndroidSdkSyspropGuardConfig,
5531    >,
5532    /// Data source name: windows.etw
5533    #[prost(message, optional, tag = "125")]
5534    pub etw_config: ::core::option::Option<EtwConfig>,
5535    /// Data source name: android.protolog
5536    #[prost(message, optional, tag = "126")]
5537    pub protolog_config: ::core::option::Option<ProtoLogConfig>,
5538    /// Data source name: android.input.inputevent
5539    #[prost(message, optional, tag = "128")]
5540    pub android_input_event_config: ::core::option::Option<AndroidInputEventConfig>,
5541    /// Data source name: android.pixel.modem
5542    #[prost(message, optional, tag = "129")]
5543    pub pixel_modem_config: ::core::option::Option<PixelModemConfig>,
5544    /// Data source name: android.windowmanager
5545    #[prost(message, optional, tag = "130")]
5546    pub windowmanager_config: ::core::option::Option<WindowManagerConfig>,
5547    /// Data source name: org.chromium.system_metrics
5548    #[prost(message, optional, tag = "131")]
5549    pub chromium_system_metrics: ::core::option::Option<ChromiumSystemMetricsConfig>,
5550    /// Data source name: android.kernel_wakelocks
5551    #[prost(message, optional, tag = "132")]
5552    pub kernel_wakelocks_config: ::core::option::Option<KernelWakelocksConfig>,
5553    /// Data source name: gpu.renderstages
5554    #[prost(message, optional, tag = "133")]
5555    pub gpu_renderstages_config: ::core::option::Option<GpuRenderStagesConfig>,
5556    /// Data source name: org.chromium.histogram_samples
5557    #[prost(message, optional, tag = "134")]
5558    pub chromium_histogram_samples: ::core::option::Option<
5559        ChromiumHistogramSamplesConfig,
5560    >,
5561    /// Data source name: android.app_wakelocks
5562    #[prost(message, optional, tag = "135")]
5563    pub app_wakelocks_config: ::core::option::Option<AppWakelocksConfig>,
5564    /// Data source name: android.cpu_per_uid
5565    #[prost(message, optional, tag = "137")]
5566    pub cpu_per_uid_config: ::core::option::Option<CpuPerUidConfig>,
5567    /// Data source name: android.user_list
5568    #[prost(message, optional, tag = "138")]
5569    pub user_list_config: ::core::option::Option<AndroidUserListConfig>,
5570    /// Data source name: android.inputmethod
5571    #[prost(message, optional, tag = "139")]
5572    pub inputmethod_config: ::core::option::Option<InputMethodConfig>,
5573    /// Data source name: android.aflags
5574    #[prost(message, optional, tag = "140")]
5575    pub android_aflags_config: ::core::option::Option<AndroidAflagsConfig>,
5576    /// Data source name: linux.systemd_journald
5577    #[prost(message, optional, tag = "141")]
5578    pub journald_config: ::core::option::Option<SystemdJournaldConfig>,
5579    /// Data source name: android.display.video
5580    #[prost(message, optional, tag = "142")]
5581    pub display_video_config: ::core::option::Option<DisplayVideoConfig>,
5582    /// Data source name: org.chromium.sampler_profiler
5583    #[prost(message, optional, tag = "143")]
5584    pub chromium_stack_sampling_profiler: ::core::option::Option<
5585        ChromiumStackSamplingProfilerConfig,
5586    >,
5587    /// Data source name: org.chromium.native_heap_profiler
5588    #[prost(message, optional, tag = "144")]
5589    pub chromium_sampling_heap_profiler: ::core::option::Option<
5590        ChromiumSamplingHeapProfilerConfig,
5591    >,
5592    /// Data source name: android.process_state
5593    #[prost(message, optional, tag = "145")]
5594    pub android_process_state_config: ::core::option::Option<AndroidProcessStateConfig>,
5595    /// Data source name: linux.smaps
5596    #[prost(message, optional, tag = "146")]
5597    pub process_smaps_config: ::core::option::Option<ProcessSmapsConfig>,
5598    /// Data source name: qnx.kernel
5599    #[prost(message, optional, tag = "150")]
5600    pub qnx_config: ::core::option::Option<QnxConfig>,
5601    /// Data source name: linux.cgroup
5602    #[prost(message, optional, tag = "151")]
5603    pub cgroup_config: ::core::option::Option<CgroupConfig>,
5604    /// This is a fallback mechanism to send a free-form text config to the
5605    /// producer. In theory this should never be needed. All the code that
5606    /// is part of the platform (i.e. traced service) is supposed to *not* truncate
5607    /// the trace config proto and propagate unknown fields. However, if anything
5608    /// in the pipeline (client or backend) ends up breaking this forward compat
5609    /// plan, this field will become the escape hatch to allow future data sources
5610    /// to get some meaningful configuration.
5611    #[prost(string, optional, tag = "1000")]
5612    pub legacy_config: ::core::option::Option<::prost::alloc::string::String>,
5613    /// This field is only used for testing.
5614    #[prost(message, optional, tag = "1001")]
5615    pub for_testing: ::core::option::Option<TestConfig>,
5616}
5617/// Nested message and enum types in `DataSourceConfig`.
5618pub mod data_source_config {
5619    /// Experimental.
5620    /// Lets the producer write this data source through the tracing v2 ring
5621    /// buffer.
5622    /// - Selecting v2 requires a TRACE_BUFFER_V2 target buffer and support from
5623    ///    the producer and data source.
5624    /// - Instances that do not select v2 use v1 only if the connection permits it.
5625    ///    If neither transport is available, writers discard their data.
5626    /// - If the producer cannot create or attach the ring buffer, selected
5627    ///    instances discard their data and do not fall back to v1.
5628    #[derive(Clone, PartialEq, ::prost::Message)]
5629    pub struct ExperimentalTracingV2Config {
5630        /// Percent of instances that use v2, from 0 (the default) to 100.
5631        /// The service rejects a nonzero use_v2_probability_percent and a
5632        /// ProtoVM data source on the same buffer.
5633        #[prost(uint32, optional, tag = "1")]
5634        pub use_v2_probability_percent: ::core::option::Option<u32>,
5635        /// The producer chooses one option at random, by weight, when it creates
5636        /// the ring buffer.
5637        /// With no option, or with all weights 0, it uses 256 bytes.
5638        ///
5639        /// The first instance that selects v2 chooses the size for the connection,
5640        /// and the options of later instances have no effect.
5641        #[prost(message, repeated, tag = "2")]
5642        pub chunk_size_options: ::prost::alloc::vec::Vec<
5643            experimental_tracing_v2_config::ChunkSizeOption,
5644        >,
5645        /// When the writers ask the service to drain the ring buffer.
5646        /// After each publication, a writer counts the ring buffer positions that
5647        /// wait for the reader, and asks for a drain when the count reaches:
5648        /// - 0 or absent: 25% of the positions.
5649        /// - 1 to 100: this percent of the positions, and at least one.
5650        /// - -1: one position, so it asks after every publication.
5651        /// Flushes and full ring buffers still ask for a drain at once.
5652        /// The service rejects other values.
5653        ///
5654        /// As for chunk_size_options, the first instance that selects v2 sets it
5655        /// for the connection, and the values of later instances have no effect.
5656        #[prost(int32, optional, tag = "3")]
5657        pub drain_occupancy_percent: ::core::option::Option<i32>,
5658    }
5659    /// Nested message and enum types in `ExperimentalTracingV2Config`.
5660    pub mod experimental_tracing_v2_config {
5661        /// One chunk size that the producer can choose for the ring buffer.
5662        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5663        pub struct ChunkSizeOption {
5664            /// Bytes per chunk, from 256 to 65536, and a multiple of 4.
5665            /// The service rejects other values.
5666            #[prost(uint32, optional, tag = "1")]
5667            pub size_bytes: ::core::option::Option<u32>,
5668            /// The chance of this option, relative to the other options.
5669            /// Absent means 1, and 0 means never.
5670            #[prost(uint32, optional, tag = "2")]
5671            pub weight: ::core::option::Option<u32>,
5672        }
5673    }
5674    #[derive(
5675        Clone,
5676        Copy,
5677        Debug,
5678        PartialEq,
5679        Eq,
5680        Hash,
5681        PartialOrd,
5682        Ord,
5683        ::prost::Enumeration
5684    )]
5685    #[repr(i32)]
5686    pub enum SessionInitiator {
5687        Unspecified = 0,
5688        /// This trace was initiated from a trusted system app has DUMP and
5689        /// USAGE_STATS permission. This system app is expected to not expose the
5690        /// trace to the user of the device.
5691        /// This is determined by checking the UID initiating the trace.
5692        TrustedSystem = 1,
5693    }
5694    impl SessionInitiator {
5695        /// String value of the enum field names used in the ProtoBuf definition.
5696        ///
5697        /// The values are not transformed in any way and thus are considered stable
5698        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5699        pub fn as_str_name(&self) -> &'static str {
5700            match self {
5701                Self::Unspecified => "SESSION_INITIATOR_UNSPECIFIED",
5702                Self::TrustedSystem => "SESSION_INITIATOR_TRUSTED_SYSTEM",
5703            }
5704        }
5705        /// Creates an enum from field names used in the ProtoBuf definition.
5706        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5707            match value {
5708                "SESSION_INITIATOR_UNSPECIFIED" => Some(Self::Unspecified),
5709                "SESSION_INITIATOR_TRUSTED_SYSTEM" => Some(Self::TrustedSystem),
5710                _ => None,
5711            }
5712        }
5713    }
5714    #[derive(
5715        Clone,
5716        Copy,
5717        Debug,
5718        PartialEq,
5719        Eq,
5720        Hash,
5721        PartialOrd,
5722        Ord,
5723        ::prost::Enumeration
5724    )]
5725    #[repr(i32)]
5726    pub enum BufferExhaustedPolicy {
5727        /// The data source will use its default buffer exhausted policy, specified
5728        /// by the code when the data source is registered.
5729        BufferExhaustedUnspecified = 0,
5730        /// The data source will drop packets when there's no space in the shared
5731        /// memory buffer.
5732        BufferExhaustedDrop = 1,
5733        /// The data source will wait when there's no space in the shared memory
5734        /// buffer. If there's still not space, after a few seconds, the whole
5735        /// producer process will be aborted.
5736        BufferExhaustedStallThenAbort = 2,
5737        /// The data source will wait when there's no space in the shared memory
5738        /// buffer.  If there's still not space, after a few seconds, the data source
5739        /// will drop packets.
5740        BufferExhaustedStallThenDrop = 3,
5741    }
5742    impl BufferExhaustedPolicy {
5743        /// String value of the enum field names used in the ProtoBuf definition.
5744        ///
5745        /// The values are not transformed in any way and thus are considered stable
5746        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5747        pub fn as_str_name(&self) -> &'static str {
5748            match self {
5749                Self::BufferExhaustedUnspecified => "BUFFER_EXHAUSTED_UNSPECIFIED",
5750                Self::BufferExhaustedDrop => "BUFFER_EXHAUSTED_DROP",
5751                Self::BufferExhaustedStallThenAbort => {
5752                    "BUFFER_EXHAUSTED_STALL_THEN_ABORT"
5753                }
5754                Self::BufferExhaustedStallThenDrop => "BUFFER_EXHAUSTED_STALL_THEN_DROP",
5755            }
5756        }
5757        /// Creates an enum from field names used in the ProtoBuf definition.
5758        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5759            match value {
5760                "BUFFER_EXHAUSTED_UNSPECIFIED" => Some(Self::BufferExhaustedUnspecified),
5761                "BUFFER_EXHAUSTED_DROP" => Some(Self::BufferExhaustedDrop),
5762                "BUFFER_EXHAUSTED_STALL_THEN_ABORT" => {
5763                    Some(Self::BufferExhaustedStallThenAbort)
5764                }
5765                "BUFFER_EXHAUSTED_STALL_THEN_DROP" => {
5766                    Some(Self::BufferExhaustedStallThenDrop)
5767                }
5768                _ => None,
5769            }
5770        }
5771    }
5772}
5773/// The overall config that is used when starting a new tracing session through
5774/// ProducerPort::StartTracing().
5775/// It contains the general config for the logging buffer(s) and the configs for
5776/// all the data source being enabled.
5777///
5778/// Next id: 51.
5779#[derive(Clone, PartialEq, ::prost::Message)]
5780pub struct TraceConfig {
5781    #[prost(message, repeated, tag = "1")]
5782    pub buffers: ::prost::alloc::vec::Vec<trace_config::BufferConfig>,
5783    /// Enables compaction after reads for this session's TraceBufferV2.
5784    /// Defaults to false and does not affect V1, DISCARD, or read-only buffers.
5785    #[prost(bool, optional, tag = "50")]
5786    pub experimental_trace_buffer_v2_compaction: ::core::option::Option<bool>,
5787    #[prost(message, repeated, tag = "2")]
5788    pub data_sources: ::prost::alloc::vec::Vec<trace_config::DataSource>,
5789    #[prost(message, optional, tag = "20")]
5790    pub builtin_data_sources: ::core::option::Option<trace_config::BuiltinDataSource>,
5791    /// If specified, the trace will be stopped |duration_ms| after starting.
5792    /// This does *not* count the time the system is suspended, so we will run
5793    /// for duration_ms of system activity, not wall time.
5794    ///
5795    /// However in case of traces with triggers, see
5796    /// TriggerConfig.trigger_timeout_ms instead.
5797    #[prost(uint32, optional, tag = "3")]
5798    pub duration_ms: ::core::option::Option<u32>,
5799    /// If true, tries to use CLOCK_BOOTTIME for duration_ms rather than
5800    /// CLOCK_MONOTONIC (which doesn't count time in suspend). Supported only on
5801    /// Linux/Android, no-op on other platforms. This is used when dealing with
5802    /// long (e.g. 24h) traces, where suspend can inflate them to weeks of
5803    /// wall-time, making them more likely to hit device reboots (and hence loss).
5804    /// This option also changes consistently the semantic of
5805    /// TriggerConfig.stop_delay_ms.
5806    #[prost(bool, optional, tag = "36")]
5807    pub prefer_suspend_clock_for_duration: ::core::option::Option<bool>,
5808    /// This is set when --dropbox is passed to the Perfetto command line client
5809    /// and enables guardrails that limit resource usage for traces requested
5810    /// by statsd.
5811    #[prost(bool, optional, tag = "4")]
5812    pub enable_extra_guardrails: ::core::option::Option<bool>,
5813    /// Reject producers that are not running under the same UID as the tracing
5814    /// service.
5815    #[prost(enumeration = "trace_config::LockdownModeOperation", optional, tag = "5")]
5816    pub lockdown_mode: ::core::option::Option<i32>,
5817    #[prost(message, repeated, tag = "6")]
5818    pub producers: ::prost::alloc::vec::Vec<trace_config::ProducerConfig>,
5819    /// Statsd-specific metadata.
5820    #[prost(message, optional, tag = "7")]
5821    pub statsd_metadata: ::core::option::Option<trace_config::StatsdMetadata>,
5822    /// When true && |output_path| is empty, the EnableTracing() request must
5823    /// provide a file descriptor. The service will then periodically read packets
5824    /// out of the trace buffer and store it into the passed file.
5825    /// If |output_path| is not empty no fd should be passed, the service
5826    /// will create a new file and write into that (see comment below).
5827    #[prost(bool, optional, tag = "8")]
5828    pub write_into_file: ::core::option::Option<bool>,
5829    /// This must point to a non-existing file. If the file exists the service
5830    /// will NOT overwrite and will fail instead as a security precaution.
5831    /// On Android, when this is used with the system traced, the path must be
5832    /// within /data/misc/perfetto-traces/ or the trace will fail.
5833    /// This option has been introduced in Android R. Before R write_into_file
5834    /// can be used only with the "pass a file descriptor over IPC" mode.
5835    #[prost(string, optional, tag = "29")]
5836    pub output_path: ::core::option::Option<::prost::alloc::string::String>,
5837    /// Optional. If non-zero tunes the write period. A min value of 100ms is
5838    /// enforced (i.e. smaller values are ignored).
5839    #[prost(uint32, optional, tag = "9")]
5840    pub file_write_period_ms: ::core::option::Option<u32>,
5841    /// Optional. When non zero the periodic write stops once at most X bytes
5842    /// have been written into the file. Tracing is disabled when this limit is
5843    /// reached, even if |duration_ms| has not been reached yet.
5844    #[prost(uint64, optional, tag = "10")]
5845    pub max_file_size_bytes: ::core::option::Option<u64>,
5846    #[prost(message, optional, tag = "11")]
5847    pub guardrail_overrides: ::core::option::Option<trace_config::GuardrailOverrides>,
5848    /// When true, data sources are not started until an explicit call to
5849    /// StartTracing() on the consumer port. This is to support early
5850    /// initialization and fast trace triggering. This can be used only when the
5851    /// Consumer explicitly triggers the StartTracing() method.
5852    /// This should not be used in a remote trace config via statsd, doing so will
5853    /// result in a hung trace session.
5854    #[prost(bool, optional, tag = "12")]
5855    pub deferred_start: ::core::option::Option<bool>,
5856    /// When set, it periodically issues a Flush() to all data source, forcing them
5857    /// to commit their data into the tracing service. This can be used for
5858    /// quasi-real-time streaming mode and to guarantee some partial ordering of
5859    /// events in the trace in windows of X ms.
5860    ///
5861    /// Warning: Perfetto automatically handles periodic flushing so in most
5862    /// scenarios setting this field is not needed. High frequency flushing can
5863    /// significantly impact performance.
5864    #[prost(uint32, optional, tag = "13")]
5865    pub flush_period_ms: ::core::option::Option<u32>,
5866    /// Wait for this long for producers to acknowledge flush requests.
5867    /// Default 5s.
5868    #[prost(uint32, optional, tag = "14")]
5869    pub flush_timeout_ms: ::core::option::Option<u32>,
5870    /// Wait for this long for producers to acknowledge stop requests.
5871    /// Default 5s.
5872    #[prost(uint32, optional, tag = "23")]
5873    pub data_source_stop_timeout_ms: ::core::option::Option<u32>,
5874    /// Android-only. If set, sends an intent to the Traceur system app when the
5875    /// trace ends to notify it about the trace readiness.
5876    #[prost(bool, optional, tag = "16")]
5877    pub notify_traceur: ::core::option::Option<bool>,
5878    /// This field was introduced in Android S.
5879    /// Android-only. If set to a value > 0, marks the trace session as a candidate
5880    /// for being attached to a bugreport. This field effectively acts as a z-index
5881    /// for bugreports. When Android's dumpstate runs perfetto
5882    /// --save-for-bugreport, traced will pick the tracing session with the highest
5883    /// score (score <= 0 is ignored) and:
5884    /// On Android S, T:  will steal its contents, save the trace into
5885    ///      a known path and stop prematurely.
5886    /// On Android U+: will create a read-only snapshot and save that into a known
5887    ///      path, without stoppin the original tracing session.
5888    /// When this field is set the tracing session becomes eligible to be cloned
5889    /// by other UIDs.
5890    #[prost(int32, optional, tag = "30")]
5891    pub bugreport_score: ::core::option::Option<i32>,
5892    /// When set, defines name of the file that will be saved under
5893    /// /data/misc/perfetto-traces/bugreport/ when using --save-all-for-bugreport.
5894    /// If omitted, traces will be named systrace.pftrace, systrace_1.pftrace, etc,
5895    /// starting from the highest `bugreport_score`.
5896    /// Introduced in v42 / Android V.
5897    #[prost(string, optional, tag = "38")]
5898    pub bugreport_filename: ::core::option::Option<::prost::alloc::string::String>,
5899    #[prost(message, optional, tag = "17")]
5900    pub trigger_config: ::core::option::Option<trace_config::TriggerConfig>,
5901    /// When this is non-empty the perfetto command line tool will ignore the rest
5902    /// of this TraceConfig and instead connect to the perfetto service as a
5903    /// producer and send these triggers, potentially stopping or starting traces
5904    /// that were previous configured to use a TriggerConfig.
5905    #[prost(string, repeated, tag = "18")]
5906    pub activate_triggers: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5907    #[prost(message, optional, tag = "21")]
5908    pub incremental_state_config: ::core::option::Option<
5909        trace_config::IncrementalStateConfig,
5910    >,
5911    /// No longer needed as we unconditionally allow tracing on user builds.
5912    #[deprecated]
5913    #[prost(bool, optional, tag = "19")]
5914    pub allow_user_build_tracing: ::core::option::Option<bool>,
5915    /// If set the tracing service will ensure there is at most one tracing session
5916    /// with this key.
5917    #[prost(string, optional, tag = "22")]
5918    pub unique_session_name: ::core::option::Option<::prost::alloc::string::String>,
5919    #[deprecated]
5920    #[prost(enumeration = "trace_config::CompressionType", optional, tag = "24")]
5921    pub compression_type: ::core::option::Option<i32>,
5922    #[prost(message, optional, tag = "47")]
5923    pub compression: ::core::option::Option<trace_config::CompressionConfig>,
5924    #[prost(message, optional, tag = "25")]
5925    pub incident_report_config: ::core::option::Option<
5926        trace_config::IncidentReportConfig,
5927    >,
5928    /// Android-only. Not for general use. If specified, sets the logging to statsd
5929    /// of guardrails and checkpoints in the tracing service. perfetto_cmd sets
5930    /// this to enabled (if not explicitly set in the config) when specifying
5931    /// --upload.
5932    #[prost(enumeration = "trace_config::StatsdLogging", optional, tag = "31")]
5933    pub statsd_logging: ::core::option::Option<i32>,
5934    /// An identifier clients can use to tie this trace to other logging.
5935    /// DEPRECATED as per v32. See TracePacket.trace_uuid for the authoritative
5936    /// Trace UUID. If this field is set, the tracing service will respect the
5937    /// requested UUID (i.e. TracePacket.trace_uuid == this field) but only if
5938    /// gap-less snapshotting is not used.
5939    #[deprecated]
5940    #[prost(int64, optional, tag = "27")]
5941    pub trace_uuid_msb: ::core::option::Option<i64>,
5942    #[deprecated]
5943    #[prost(int64, optional, tag = "28")]
5944    pub trace_uuid_lsb: ::core::option::Option<i64>,
5945    #[prost(message, optional, tag = "33")]
5946    pub trace_filter: ::core::option::Option<trace_config::TraceFilter>,
5947    #[prost(message, optional, tag = "34")]
5948    pub android_report_config: ::core::option::Option<trace_config::AndroidReportConfig>,
5949    #[prost(message, optional, tag = "35")]
5950    pub cmd_trace_start_delay: ::core::option::Option<trace_config::CmdTraceStartDelay>,
5951    #[prost(message, repeated, tag = "39")]
5952    pub session_semaphores: ::prost::alloc::vec::Vec<trace_config::SessionSemaphore>,
5953    /// Priority boost to be applied to the traced process, when the session is
5954    /// running.
5955    #[prost(message, optional, tag = "40")]
5956    pub priority_boost: ::core::option::Option<PriorityBoostConfig>,
5957    /// When set to a value > 0, this tracing session will be started in
5958    /// "exclusive mode". This has the following semantics:
5959    /// - It can only be set by shell or root users.
5960    /// - A new exclusive session will only be started if its priority is strictly
5961    ///    higher than any other active tracing session.
5962    /// - If a new exclusive session is started, all other existing tracing
5963    ///    sessions (exclusive or not) are aborted.
5964    /// - While an exclusive session is active, any new non-exclusive session (or
5965    ///    any exclusive session with a lower or equal priority) will be rejected.
5966    ///
5967    /// Introduced in: perfetto v52.
5968    /// Supported on: Android 25Q3+.
5969    #[prost(uint32, optional, tag = "41")]
5970    pub exclusive_prio: ::core::option::Option<u32>,
5971    /// Configures how the service should handle flushing data from producers
5972    /// before periodically writing the trace into the output file.
5973    /// Only applicable when |write_into_file| is true.
5974    ///
5975    /// By default, if |write_into_file| is set, the service periodically issues
5976    /// a Flush() to all data sources before writing buffers into the file.
5977    /// This ensures the file always contains the latest available data.
5978    ///
5979    /// Introduced in: perfetto v54.
5980    /// Supported on: Android 26Q1+.
5981    #[prost(enumeration = "trace_config::WriteFlushMode", optional, tag = "44")]
5982    pub write_flush_mode: ::core::option::Option<i32>,
5983    /// Whether to sync the output file to storage after each periodic write pass.
5984    /// Only applicable when |write_into_file| is true.
5985    ///
5986    /// By default, no fflush is invoked. FFLUSH_ENABLED must be set to explicitly
5987    /// sync to storage on every write.
5988    ///
5989    /// Introduced in: perfetto v54.
5990    /// Supported on: Android 26Q1+.
5991    #[prost(enumeration = "trace_config::FFlushMode", optional, tag = "45")]
5992    pub fflush_post_write: ::core::option::Option<i32>,
5993    /// When true, data sources in remote producers (machines connected via
5994    /// traced_relay) will be matched by default. When false (the default), data
5995    /// sources only match the host machine. In either case, an explicit
5996    /// |DataSource.machine_name_filter| takes priority.
5997    ///
5998    /// NB: perfetto versions before v54 do not have this option and match across
5999    /// machines by default. To be compatible across this version boundary, either
6000    /// set this field to true, or set an explicit machine_name_filter on all data
6001    /// sources.
6002    ///
6003    /// Introduced in: perfetto v54.
6004    #[prost(bool, optional, tag = "43")]
6005    pub trace_all_machines: ::core::option::Option<bool>,
6006    /// Trace attributes: arbitrary key/value pairs describing the trace, saved
6007    /// into it and surfaced by trace_processor in the `metadata` table (see
6008    /// common/trace_attributes.proto). Typically set via
6009    /// `perfetto --add-attribute key=value`.
6010    ///
6011    /// Introduced in: perfetto v58.
6012    #[prost(message, optional, tag = "48")]
6013    pub trace_attributes: ::core::option::Option<TraceAttributes>,
6014    /// Android-only. Not for general use. If set to true, writes trace chunks to a
6015    /// persistent file
6016    /// (/data/misc/perfetto-traces/persistent/$unique_session_name.tmp) that
6017    /// survives device reboots (e.g. during OTA updates or battery depletion).
6018    ///
6019    /// Introduced in: perfetto v59.
6020    /// Supported on: Android 26Q4+.
6021    #[prost(bool, optional, tag = "49")]
6022    pub persist_trace_across_reboots: ::core::option::Option<bool>,
6023}
6024/// Nested message and enum types in `TraceConfig`.
6025pub mod trace_config {
6026    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6027    pub struct BufferConfig {
6028        #[prost(uint32, optional, tag = "1")]
6029        pub size_kb: ::core::option::Option<u32>,
6030        #[prost(enumeration = "buffer_config::FillPolicy", optional, tag = "4")]
6031        pub fill_policy: ::core::option::Option<i32>,
6032        /// When true the buffer is moved (rather than copied) onto the cloned
6033        /// session, and an empty buffer of the same size is allocated in the source
6034        /// tracing session. This feature will likely get deprecated in the future.
6035        /// It been introduced mainly to support the surfaceflinger snapshot dump
6036        /// for bugreports, where SF can dumps O(400MB) into the bugreport trace. In
6037        /// that case we don't want to retain another in-memory copy of the buffer.
6038        #[prost(bool, optional, tag = "5")]
6039        pub transfer_on_clone: ::core::option::Option<bool>,
6040        /// Used in conjunction with transfer_on_clone. When true the buffer is
6041        /// cleared before issuing the Flush(reason=kTraceClone). This is to ensure
6042        /// that if the data source took too long to write the data in a previous
6043        /// clone-related flush, we don't end up with a mixture of leftovers from
6044        /// the previous write and new data.
6045        #[prost(bool, optional, tag = "6")]
6046        pub clear_before_clone: ::core::option::Option<bool>,
6047        /// Optional name for this buffer. If set, data sources can reference this
6048        /// buffer by name using |target_buffer_name| in DataSourceConfig instead of
6049        /// using the buffer index. Buffer names must be unique within a tracing
6050        /// session. This provides a more human-readable and less error-prone way to
6051        /// configure which buffer a data source writes to.
6052        #[prost(string, optional, tag = "7")]
6053        pub name: ::core::option::Option<::prost::alloc::string::String>,
6054        #[prost(enumeration = "buffer_config::ExperimentalMode", optional, tag = "8")]
6055        pub experimental_mode: ::core::option::Option<i32>,
6056    }
6057    /// Nested message and enum types in `BufferConfig`.
6058    pub mod buffer_config {
6059        #[derive(
6060            Clone,
6061            Copy,
6062            Debug,
6063            PartialEq,
6064            Eq,
6065            Hash,
6066            PartialOrd,
6067            Ord,
6068            ::prost::Enumeration
6069        )]
6070        #[repr(i32)]
6071        pub enum FillPolicy {
6072            Unspecified = 0,
6073            /// Default behavior. The buffer operates as a conventional ring buffer.
6074            /// If the writer is faster than the reader (or if the reader reads only
6075            /// after tracing is stopped) newly written packets will overwrite old
6076            /// packets.
6077            RingBuffer = 1,
6078            /// Behaves like RING_BUFFER as long as there is space in the buffer or
6079            /// the reader catches up with the writer. As soon as the writer hits
6080            /// an unread chunk, it stops accepting new data in the buffer.
6081            Discard = 2,
6082        }
6083        impl FillPolicy {
6084            /// String value of the enum field names used in the ProtoBuf definition.
6085            ///
6086            /// The values are not transformed in any way and thus are considered stable
6087            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6088            pub fn as_str_name(&self) -> &'static str {
6089                match self {
6090                    Self::Unspecified => "UNSPECIFIED",
6091                    Self::RingBuffer => "RING_BUFFER",
6092                    Self::Discard => "DISCARD",
6093                }
6094            }
6095            /// Creates an enum from field names used in the ProtoBuf definition.
6096            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6097                match value {
6098                    "UNSPECIFIED" => Some(Self::Unspecified),
6099                    "RING_BUFFER" => Some(Self::RingBuffer),
6100                    "DISCARD" => Some(Self::Discard),
6101                    _ => None,
6102                }
6103            }
6104        }
6105        /// When true, uses the experimental TraceBufferV2 implementation for this
6106        /// buffer. This is for testing purposes only and may be removed in future
6107        /// versions.
6108        #[derive(
6109            Clone,
6110            Copy,
6111            Debug,
6112            PartialEq,
6113            Eq,
6114            Hash,
6115            PartialOrd,
6116            Ord,
6117            ::prost::Enumeration
6118        )]
6119        #[repr(i32)]
6120        pub enum ExperimentalMode {
6121            /// Use the default V1 implementation.
6122            ModeUnspecified = 0,
6123            /// Use TraceBufferV2.
6124            TraceBufferV2 = 1,
6125        }
6126        impl ExperimentalMode {
6127            /// String value of the enum field names used in the ProtoBuf definition.
6128            ///
6129            /// The values are not transformed in any way and thus are considered stable
6130            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6131            pub fn as_str_name(&self) -> &'static str {
6132                match self {
6133                    Self::ModeUnspecified => "MODE_UNSPECIFIED",
6134                    Self::TraceBufferV2 => "TRACE_BUFFER_V2",
6135                }
6136            }
6137            /// Creates an enum from field names used in the ProtoBuf definition.
6138            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6139                match value {
6140                    "MODE_UNSPECIFIED" => Some(Self::ModeUnspecified),
6141                    "TRACE_BUFFER_V2" => Some(Self::TraceBufferV2),
6142                    _ => None,
6143                }
6144            }
6145        }
6146    }
6147    #[derive(Clone, PartialEq, ::prost::Message)]
6148    pub struct DataSource {
6149        /// Filters and data-source specific config. It contains also the unique name
6150        /// of the data source, the one passed in the  DataSourceDescriptor when they
6151        /// register on the service.
6152        #[prost(message, optional, tag = "1")]
6153        pub config: ::core::option::Option<super::DataSourceConfig>,
6154        /// Optional. If multiple producers (~processes) expose the same data source
6155        /// and either |producer_name_filter| or |producer_name_regex_filter| is set,
6156        /// the data source is enabled only for producers whose names match any of
6157        /// the filters.
6158        /// |producer_name_filter| has to be an exact match, while
6159        /// |producer_name_regex_filter| is a regular expression.
6160        /// This allows to enable a data source only for specific processes.
6161        /// The "repeated" fields have OR semantics: specifying a filter ["foo",
6162        /// "bar"] will enable data sources on both "foo" and "bar" (if they exist).
6163        #[prost(string, repeated, tag = "2")]
6164        pub producer_name_filter: ::prost::alloc::vec::Vec<
6165            ::prost::alloc::string::String,
6166        >,
6167        #[prost(string, repeated, tag = "3")]
6168        pub producer_name_regex_filter: ::prost::alloc::vec::Vec<
6169            ::prost::alloc::string::String,
6170        >,
6171        /// Filter by machine names. The name of a machine is determined by the
6172        /// PERFETTO_MACHINE_NAME env variable. In Android systems, if the env
6173        /// variable is not set then the
6174        /// persist.traced_relay.machine_name system property is used. If the
6175        /// sysprop isn't set or not in an Android system, then the machine name by
6176        /// default is set to the utsname sysname (e.g. Linux), which can be obtained
6177        /// via the 'uname -s' command. As a convenience, one can use "host" to refer
6178        /// to the host machine, which is the machine running traced.
6179        #[prost(string, repeated, tag = "4")]
6180        pub machine_name_filter: ::prost::alloc::vec::Vec<
6181            ::prost::alloc::string::String,
6182        >,
6183    }
6184    /// Config for disabling builtin data sources in the tracing service.
6185    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6186    pub struct BuiltinDataSource {
6187        /// Disable emitting clock timestamps into the trace.
6188        #[prost(bool, optional, tag = "1")]
6189        pub disable_clock_snapshotting: ::core::option::Option<bool>,
6190        /// Disable echoing the original trace config in the trace.
6191        #[prost(bool, optional, tag = "2")]
6192        pub disable_trace_config: ::core::option::Option<bool>,
6193        /// Disable emitting system info (build fingerprint, cpuinfo, etc).
6194        #[prost(bool, optional, tag = "3")]
6195        pub disable_system_info: ::core::option::Option<bool>,
6196        /// Disable emitting events for data-source state changes (e.g. the marker
6197        /// for all data sources having ACKed the start of the trace).
6198        #[prost(bool, optional, tag = "4")]
6199        pub disable_service_events: ::core::option::Option<bool>,
6200        /// The authoritative clock domain for the trace. Defaults to BOOTTIME. See
6201        /// also ClockSnapshot's primary_trace_clock. The configured value is written
6202        /// into the trace as part of the ClockSnapshots emitted by the service.
6203        /// Trace processor will attempt to translate packet/event timestamps from
6204        /// various data sources (and their chosen clock domains) to this domain
6205        /// during import. Added in Android R.
6206        #[prost(enumeration = "super::BuiltinClock", optional, tag = "5")]
6207        pub primary_trace_clock: ::core::option::Option<i32>,
6208        /// Time interval in between snapshotting of sync markers, clock snapshots,
6209        /// stats, and other periodic service-emitted events. Note that the service
6210        /// only keeps track of the first and the most recent snapshot until
6211        /// ReadBuffers() is called.
6212        #[prost(uint32, optional, tag = "6")]
6213        pub snapshot_interval_ms: ::core::option::Option<u32>,
6214        /// Hints to the service that a suspend-aware (i.e. counting time in suspend)
6215        /// clock should be used for periodic snapshots of service-emitted events.
6216        /// This means, if a snapshot *should* have happened during suspend, it will
6217        /// happen immediately after the device resumes.
6218        ///
6219        /// Choosing a clock like this is done on best-effort basis; not all
6220        /// platforms (e.g. Windows) expose a clock which can be used for periodic
6221        /// tasks counting suspend. If such a clock is not available, the service
6222        /// falls back to the best-available alternative.
6223        ///
6224        /// Introduced in Android S.
6225        /// TODO(lalitm): deprecate this in T and make this the default if nothing
6226        /// crashes in S.
6227        #[prost(bool, optional, tag = "7")]
6228        pub prefer_suspend_clock_for_snapshot: ::core::option::Option<bool>,
6229        /// Disables the reporting of per-trace-writer histograms in TraceStats.
6230        #[prost(bool, optional, tag = "8")]
6231        pub disable_chunk_usage_histograms: ::core::option::Option<bool>,
6232        /// Disable emitting extension descriptors into the trace.
6233        #[prost(bool, optional, tag = "9")]
6234        pub disable_extension_descriptors: ::core::option::Option<bool>,
6235        /// Emit state changes of other tracing sessions running concurrently
6236        /// with this one (see ConcurrentSessionEvent).
6237        ///
6238        /// Introduced in v58 / Android 26Q3+.
6239        #[prost(bool, optional, tag = "10")]
6240        pub enable_concurrent_session_events: ::core::option::Option<bool>,
6241    }
6242    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6243    pub struct ProducerConfig {
6244        /// Identifies the producer for which this config is for.
6245        #[prost(string, optional, tag = "1")]
6246        pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
6247        /// Specifies the preferred size of the shared memory buffer. If the size is
6248        /// larger than the max size, the max will be used. If it is smaller than
6249        /// the page size or doesn't fit pages evenly into it, it will fall back to
6250        /// the size specified by the producer or finally the default shared memory
6251        /// size.
6252        #[prost(uint32, optional, tag = "2")]
6253        pub shm_size_kb: ::core::option::Option<u32>,
6254        /// Specifies the preferred size of each page in the shared memory buffer.
6255        /// Must be an integer multiple of 4K.
6256        #[prost(uint32, optional, tag = "3")]
6257        pub page_size_kb: ::core::option::Option<u32>,
6258    }
6259    /// Contains statsd-specific metadata about an alert associated with the trace.
6260    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6261    pub struct StatsdMetadata {
6262        /// The identifier of the alert which triggered this trace.
6263        #[prost(int64, optional, tag = "1")]
6264        pub triggering_alert_id: ::core::option::Option<i64>,
6265        /// The uid which registered the triggering configuration with statsd.
6266        #[prost(int32, optional, tag = "2")]
6267        pub triggering_config_uid: ::core::option::Option<i32>,
6268        /// The identifier of the config which triggered the alert.
6269        #[prost(int64, optional, tag = "3")]
6270        pub triggering_config_id: ::core::option::Option<i64>,
6271        /// The identifier of the subscription which triggered this trace.
6272        #[prost(int64, optional, tag = "4")]
6273        pub triggering_subscription_id: ::core::option::Option<i64>,
6274    }
6275    /// Contains flags which override the default values of the guardrails inside
6276    /// Perfetto.
6277    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6278    pub struct GuardrailOverrides {
6279        /// Override the default limit (in bytes) for uploading data to server within
6280        /// a 24 hour period.
6281        /// On R-, this override only affected userdebug builds. Since S, it also
6282        /// affects user builds.
6283        /// In 24Q3+ (V+), this override is a noop because upload guardrail logic
6284        /// was removed from Perfetto.
6285        #[deprecated]
6286        #[prost(uint64, optional, tag = "1")]
6287        pub max_upload_per_day_bytes: ::core::option::Option<u64>,
6288        /// Overrides the guardrail for maximum trace buffer size.
6289        /// Available on U+
6290        #[prost(uint32, optional, tag = "2")]
6291        pub max_tracing_buffer_size_kb: ::core::option::Option<u32>,
6292    }
6293    /// Triggers allow producers to start or stop the tracing session when an event
6294    /// occurs.
6295    ///
6296    /// For example if we are tracing probabilistically, most traces will be
6297    /// uninteresting. Triggers allow us to keep only the interesting ones such as
6298    /// those traces during which the device temperature reached a certain
6299    /// threshold. In this case the producer can activate a trigger to keep
6300    /// (STOP_TRACING) the trace, otherwise it can also begin a trace
6301    /// (START_TRACING) because it knows something is about to happen.
6302    #[derive(Clone, PartialEq, ::prost::Message)]
6303    pub struct TriggerConfig {
6304        #[prost(enumeration = "trigger_config::TriggerMode", optional, tag = "1")]
6305        pub trigger_mode: ::core::option::Option<i32>,
6306        /// This flag is really a workaround for b/274931668. This is needed only
6307        /// when deploying configs to different versions of the tracing service.
6308        /// When this is set to true this has the same effect of setting trigger_mode
6309        /// to CLONE_SNAPSHOT on newer versions of the service. This boolean has been
6310        /// introduced to allow to have configs that use CLONE_SNAPSHOT on newer
6311        /// versions of Android and fall back to STOP_TRACING on older versions where
6312        /// CLONE_SNAPSHOT did not exist.
6313        /// When using this flag, trigger_mode must be set to STOP_TRACING.
6314        #[prost(bool, optional, tag = "5")]
6315        pub use_clone_snapshot_if_available: ::core::option::Option<bool>,
6316        /// A list of triggers which are related to this configuration. If ANY
6317        /// trigger is seen then an action will be performed based on |trigger_mode|.
6318        #[prost(message, repeated, tag = "2")]
6319        pub triggers: ::prost::alloc::vec::Vec<trigger_config::Trigger>,
6320        /// Required and must be positive if a TriggerConfig is specified. This is
6321        /// how long this TraceConfig should wait for a trigger to arrive. After this
6322        /// period of time if no trigger is seen the TracingSession will be cleaned
6323        /// up.
6324        #[prost(uint32, optional, tag = "3")]
6325        pub trigger_timeout_ms: ::core::option::Option<u32>,
6326    }
6327    /// Nested message and enum types in `TriggerConfig`.
6328    pub mod trigger_config {
6329        #[derive(Clone, PartialEq, ::prost::Message)]
6330        pub struct Trigger {
6331            /// The producer must specify this name to activate the trigger.
6332            #[prost(string, optional, tag = "1")]
6333            pub name: ::core::option::Option<::prost::alloc::string::String>,
6334            /// An std::regex that will match the producer that can activate this
6335            /// trigger. This is optional. If unset any producers can activate this
6336            /// trigger.
6337            #[prost(string, optional, tag = "2")]
6338            pub producer_name_regex: ::core::option::Option<
6339                ::prost::alloc::string::String,
6340            >,
6341            /// After a trigger is received either in START_TRACING or STOP_TRACING
6342            /// mode then the trace will end |stop_delay_ms| after triggering.
6343            /// In CLONE_SNAPSHOT mode, this is the delay between the trigger and the
6344            /// snapshot.
6345            /// If |prefer_suspend_clock_for_duration| is set, the duration will be
6346            /// based on wall-clock, counting also time in suspend.
6347            #[prost(uint32, optional, tag = "3")]
6348            pub stop_delay_ms: ::core::option::Option<u32>,
6349            /// Limits the number of traces this trigger can start/stop in a rolling
6350            /// 24 hour window. If this field is unset or zero, no limit is applied and
6351            /// activiation of this trigger *always* starts/stops the trace.
6352            #[prost(uint32, optional, tag = "4")]
6353            pub max_per_24_h: ::core::option::Option<u32>,
6354            /// A value between 0 and 1 which encodes the probability of skipping a
6355            /// trigger with this name. This is useful for reducing the probability
6356            /// of high-frequency triggers from dominating trace finaization. If this
6357            /// field is unset or zero, the trigger will *never* be skipped. If this
6358            /// field is greater than or equal to 1, this trigger will *always* be
6359            /// skipped i.e. it will be as if this trigger was never included in the
6360            /// first place.
6361            /// This probability check is applied *before* any other limits. For
6362            /// example, if |max_per_24_h| is also set, first we will check if the
6363            /// probability bar is met and only then will we check the |max_per_24_h|
6364            /// limit.
6365            #[prost(double, optional, tag = "5")]
6366            pub skip_probability: ::core::option::Option<f64>,
6367        }
6368        #[derive(
6369            Clone,
6370            Copy,
6371            Debug,
6372            PartialEq,
6373            Eq,
6374            Hash,
6375            PartialOrd,
6376            Ord,
6377            ::prost::Enumeration
6378        )]
6379        #[repr(i32)]
6380        pub enum TriggerMode {
6381            Unspecified = 0,
6382            /// When this mode is chosen, data sources are not started until one of the
6383            /// |triggers| are received. This supports early initialization and fast
6384            /// starting of the tracing system. On triggering, the session will then
6385            /// record for |stop_delay_ms|. However if no trigger is seen
6386            /// after |trigger_timeout_ms| the session will be stopped and no data will
6387            /// be returned.
6388            StartTracing = 1,
6389            /// When this mode is chosen, the session will be started via the normal
6390            /// EnableTracing() & StartTracing(). If no trigger is ever seen
6391            /// the session will be stopped after |trigger_timeout_ms| and no data will
6392            /// be returned. However if triggered the trace will stop after
6393            /// |stop_delay_ms| and any data in the buffer will be returned to the
6394            /// consumer.
6395            StopTracing = 2,
6396            /// When this mode is chosen, this causes a snapshot of the current tracing
6397            /// session to be created after |stop_delay_ms| while the current tracing
6398            /// session continues undisturbed (% an extra flush). This mode can be
6399            /// used only when the tracing session is handled by the "perfetto" cmdline
6400            /// client (which is true in 90% of cases). Part of the business logic
6401            /// necessary for this behavior, and ensuing file handling, lives in
6402            /// perfetto_cmd.cc . On other consumers, this causes only a notification
6403            /// of the trigger through a CloneTriggerHit ObservableEvent. The custom
6404            /// consumer is supposed to call CloneSession() itself after the event.
6405            /// Use use_clone_snapshot_if_available=true when targeting older versions
6406            /// of perfetto.
6407            ///
6408            /// NOTE: CLONE_SNAPSHOT should be used only when we targeting Android V+
6409            /// (15+) / Perfetto v38+. A bug in older versions of the tracing service
6410            /// might cause indefinitely long tracing sessions (see b/274931668).
6411            CloneSnapshot = 4,
6412        }
6413        impl TriggerMode {
6414            /// String value of the enum field names used in the ProtoBuf definition.
6415            ///
6416            /// The values are not transformed in any way and thus are considered stable
6417            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6418            pub fn as_str_name(&self) -> &'static str {
6419                match self {
6420                    Self::Unspecified => "UNSPECIFIED",
6421                    Self::StartTracing => "START_TRACING",
6422                    Self::StopTracing => "STOP_TRACING",
6423                    Self::CloneSnapshot => "CLONE_SNAPSHOT",
6424                }
6425            }
6426            /// Creates an enum from field names used in the ProtoBuf definition.
6427            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6428                match value {
6429                    "UNSPECIFIED" => Some(Self::Unspecified),
6430                    "START_TRACING" => Some(Self::StartTracing),
6431                    "STOP_TRACING" => Some(Self::StopTracing),
6432                    "CLONE_SNAPSHOT" => Some(Self::CloneSnapshot),
6433                    _ => None,
6434                }
6435            }
6436        }
6437    }
6438    /// Configuration for trace contents that reference earlier trace data. For
6439    /// example, a data source might intern strings, and emit packets containing
6440    /// {interned id : string} pairs. Future packets from that data source can then
6441    /// use the interned ids instead of duplicating the raw string contents. The
6442    /// trace parser will then need to use that interning table to fully interpret
6443    /// the rest of the trace.
6444    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6445    pub struct IncrementalStateConfig {
6446        /// If nonzero, notify eligible data sources to clear their incremental state
6447        /// periodically, with the given period. The notification is sent only to
6448        /// data sources that have |handles_incremental_state_clear| set in their
6449        /// DataSourceDescriptor. The notification requests that the data source
6450        /// stops referring to past trace contents. This is particularly useful when
6451        /// tracing in ring buffer mode, where it is not exceptional to overwrite old
6452        /// trace data.
6453        ///
6454        /// Warning: this time-based global clearing is likely to be removed in the
6455        /// future, to be replaced with a smarter way of sending the notifications
6456        /// only when necessary.
6457        #[prost(uint32, optional, tag = "1")]
6458        pub clear_period_ms: ::core::option::Option<u32>,
6459    }
6460    /// Selects and configures the compression codec, superseding
6461    /// |compression_type|. The codec is chosen by which sub-message is set; when
6462    /// several are set the service picks the highest-numbered one it supports and
6463    /// ignores codecs it doesn't know, so a single config can target old and new
6464    /// services. Falls back to |compression_type| (deflate-only), if given.
6465    ///
6466    /// Introduced in: perfetto v58.
6467    /// Supported on: Android 26Q3+.
6468    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6469    pub struct CompressionConfig {
6470        /// If a config sets more than one of these, the service picks the one with
6471        /// the highest field number (see the rule above): e.g. with deflate (1) and
6472        /// zstd (2) both set, zstd wins.
6473        #[prost(message, optional, tag = "1")]
6474        pub deflate: ::core::option::Option<compression_config::Deflate>,
6475        #[prost(message, optional, tag = "2")]
6476        pub zstd: ::core::option::Option<compression_config::Zstd>,
6477    }
6478    /// Nested message and enum types in `CompressionConfig`.
6479    pub mod compression_config {
6480        /// Deflate (zlib), equivalent to the legacy `COMPRESSION_TYPE_DEFLATE`.
6481        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6482        pub struct Deflate {}
6483        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6484        pub struct Zstd {
6485            /// Compression level, 1 (fast) to 22 (smallest); 0/unset uses zstd's
6486            /// default (3). Levels above the max are clamped; negatives are valid
6487            /// faster, lower-ratio modes.
6488            #[prost(int32, optional, tag = "1")]
6489            pub level: ::core::option::Option<i32>,
6490        }
6491    }
6492    /// Android-only. Not for general use. If set, saves the trace into an
6493    /// incident. This field is read by perfetto_cmd, rather than the tracing
6494    /// service. This field must be set when passing the --upload flag to
6495    /// perfetto_cmd.
6496    /// In this message, either:
6497    ///   * all of |destination_package|, |destination_class| and |privacy_level|
6498    ///     must be set.
6499    ///   * |skip_incidentd| must be explicitly set to true.
6500    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6501    pub struct IncidentReportConfig {
6502        #[prost(string, optional, tag = "1")]
6503        pub destination_package: ::core::option::Option<::prost::alloc::string::String>,
6504        #[prost(string, optional, tag = "2")]
6505        pub destination_class: ::core::option::Option<::prost::alloc::string::String>,
6506        /// Level of filtering in the requested incident. See |Destination| in
6507        /// frameworks/base/core/proto/android/privacy.proto.
6508        #[prost(int32, optional, tag = "3")]
6509        pub privacy_level: ::core::option::Option<i32>,
6510        /// If true, then skips saving the trace to incidentd.
6511        ///
6512        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
6513        /// or when we explicitly don't want traces to go to incidentd even when they
6514        /// usually would (e.g. configs deployed using statsd but only used for
6515        /// inclusion in bugreports using |bugreport_score|).
6516        ///
6517        /// The motivation for having this flag, instead of just not setting
6518        /// |incident_report_config|, is prevent accidents where
6519        /// |incident_report_config| is omitted by mistake.
6520        #[prost(bool, optional, tag = "5")]
6521        pub skip_incidentd: ::core::option::Option<bool>,
6522        /// If true, do not write the trace into dropbox (i.e. incident only).
6523        /// Otherwise, write to both dropbox and incident.
6524        /// TODO(lalitm): remove this field as we no longer use Dropbox.
6525        #[deprecated]
6526        #[prost(bool, optional, tag = "4")]
6527        pub skip_dropbox: ::core::option::Option<bool>,
6528    }
6529    /// When set applies a post-filter to the trace contents using the filter
6530    /// provided. The filter is applied at ReadBuffers() time and works both in the
6531    /// case of IPC readback and write_into_file. This filter can be generated
6532    /// using `tools/proto_filter -s schema.proto -F filter_out.bytes` or
6533    /// `-T filter_out.escaped_string` (for .pbtx). See go/trace-filtering for
6534    /// design.
6535    ///
6536    /// Introduced in Android S, but it was broken (b/195065199). Reintroduced in
6537    /// Android T with a different field number. Updated in Android U with a new
6538    /// bytecode version which supports string filtering.
6539    ///
6540    /// The principles and terminology of string filtering is heavily inspired by
6541    /// iptables. A "rule" decide how strings should be filtered. Each rule
6542    /// contains a "policy" which indicates the algorithm to use for filtering.
6543    /// A "chain" is a list of rules which will be sequentially checked against
6544    /// each string.
6545    ///
6546    /// The first rule which applies to the string terminates filtering for that
6547    /// string. If no rules apply, the string is left unchanged.
6548    ///
6549    /// =========================
6550    /// Filter bytecode.
6551    /// =========================
6552    #[derive(Clone, PartialEq, ::prost::Message)]
6553    pub struct TraceFilter {
6554        /// The bytecode as implemented in Android T.
6555        #[prost(bytes = "vec", optional, tag = "1")]
6556        pub bytecode: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6557        /// The bytecode as implemented in Android U. Adds support for string
6558        /// filtering.
6559        #[prost(bytes = "vec", optional, tag = "2")]
6560        pub bytecode_v2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6561        #[prost(message, optional, tag = "3")]
6562        pub string_filter_chain: ::core::option::Option<trace_filter::StringFilterChain>,
6563        /// Bytecode overlay for Perfetto v54+. This overlay is applied on top of
6564        /// bytecode_v2 to upgrade specific simple fields to new values. Old Perfetto
6565        /// versions ignore this field; new versions apply it.
6566        ///
6567        /// The motivation for this is that adding new opcodes in a backwards
6568        /// compatible way while also minimizing config size is hard. Instead, the
6569        /// overlay mechanism allows us to "patch" specific fields in the original
6570        /// bytecode_v2 with new semantics.
6571        ///
6572        /// See RFC 0011-subset-string-filter-rules.md for more info.
6573        ///
6574        /// Note:
6575        /// Unlike bytecode_v2 (which uses implicit message indices via EndOfMessage
6576        /// markers), this overlay uses a triplet format with explicit indices:
6577        ///    \[msg_index, field_id << 3 | opcode, argument\] ... \[checksum\]
6578        /// Each entry is exactly 3 varints. The argument is 0 when not needed.
6579        /// Entries must be sorted by (msg_index, field_id).
6580        ///
6581        /// The parser processes bytecode_v2 and this overlay simultaneously:
6582        ///   - any field not mentioned in the overlay is parsed as usual
6583        ///   - any field in the overlay but *not* in the bytecode_v2 is added
6584        ///     with its overlay value
6585        ///   - any field in both the overlay and bytecode_v2 takes the value in the
6586        ///     overlay, the bytecode_v2 value is ignored.
6587        ///
6588        /// Note: despite the name, this was broken in v54 (the overlay was not
6589        /// passed through to the bytecode parser). Only works in v55+.
6590        #[prost(bytes = "vec", optional, tag = "4")]
6591        pub bytecode_overlay_v54: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6592        /// String filter chain for Perfetto v54+. Rules in this chain either
6593        /// overwrite rules in string_filter_chain (if the name matches) or are
6594        /// appended (if the name doesn't match). This allows modifying existing
6595        /// rules (e.g., changing policy) without duplicating the entire chain.
6596        /// Rules without a name are always appended.
6597        /// See /rfcs/0011-subset-string-filter-rules.md for design details.
6598        /// Introduced in: Perfetto v54.
6599        #[prost(message, optional, tag = "5")]
6600        pub string_filter_chain_v54: ::core::option::Option<
6601            trace_filter::StringFilterChain,
6602        >,
6603    }
6604    /// Nested message and enum types in `TraceFilter`.
6605    pub mod trace_filter {
6606        /// A rule specifies how strings should be filtered.
6607        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6608        pub struct StringFilterRule {
6609            /// The policy (i.e. algorithm) dictating how strings matching this rule
6610            /// should be handled.
6611            #[prost(enumeration = "StringFilterPolicy", optional, tag = "1")]
6612            pub policy: ::core::option::Option<i32>,
6613            /// The regex pattern used to match against each string.
6614            #[prost(string, optional, tag = "2")]
6615            pub regex_pattern: ::core::option::Option<::prost::alloc::string::String>,
6616            /// The string which should appear after the tgid in atrace tracepoint
6617            /// strings.
6618            #[prost(string, optional, tag = "3")]
6619            pub atrace_payload_starts_with: ::core::option::Option<
6620                ::prost::alloc::string::String,
6621            >,
6622            /// Optional name for the rule. When merging chains (e.g. via
6623            /// string_filter_chain_v54), rules with matching names in the newer chain
6624            /// will overwrite rules in the base chain. Rules without a name (empty or
6625            /// unset) are always treated as distinct and will be appended.
6626            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
6627            /// Introduced in: Perfetto v54.
6628            #[prost(string, optional, tag = "4")]
6629            pub name: ::core::option::Option<::prost::alloc::string::String>,
6630            /// The semantic types this rule applies to.
6631            ///
6632            /// SEMANTIC_TYPE_UNSPECIFIED (0) is treated as its own distinct category:
6633            /// - If empty, the rule applies only to fields with UNSPECIFIED type.
6634            /// - If non-empty, the rule applies only to fields whose semantic type
6635            ///    is explicitly listed. To match UNSPECIFIED fields, you must include
6636            ///    SEMANTIC_TYPE_UNSPECIFIED in the list.
6637            ///
6638            /// Examples:
6639            ///    semantic_type: \[\]           -> matches only UNSPECIFIED fields
6640            ///    semantic_type: \[ATRACE\]     -> matches only ATRACE fields
6641            ///    semantic_type: \[UNSPECIFIED, ATRACE\] -> matches both
6642            ///
6643            /// See /rfcs/0011-subset-string-filter-rules.md for design details.
6644            /// Introduced in: Perfetto v54.
6645            #[prost(
6646                enumeration = "super::super::SemanticType",
6647                repeated,
6648                packed = "false",
6649                tag = "5"
6650            )]
6651            pub semantic_type: ::prost::alloc::vec::Vec<i32>,
6652        }
6653        /// A chain is a list of rules which string will be sequentially checked
6654        /// against.
6655        #[derive(Clone, PartialEq, ::prost::Message)]
6656        pub struct StringFilterChain {
6657            #[prost(message, repeated, tag = "1")]
6658            pub rules: ::prost::alloc::vec::Vec<StringFilterRule>,
6659        }
6660        /// A policy specifies which algorithm should be used for filtering the
6661        /// string.
6662        #[derive(
6663            Clone,
6664            Copy,
6665            Debug,
6666            PartialEq,
6667            Eq,
6668            Hash,
6669            PartialOrd,
6670            Ord,
6671            ::prost::Enumeration
6672        )]
6673        #[repr(i32)]
6674        pub enum StringFilterPolicy {
6675            SfpUnspecified = 0,
6676            /// Tries to match the string field against |regex_pattern|. If it
6677            /// matches, all matching groups are "redacted" (i.e. replaced with a
6678            /// constant string) and filtering is terminated (i.e. no further rules are
6679            /// checked). If it doesn't match, the string is left unchanged and the
6680            /// next rule in chain is considered.
6681            SfpMatchRedactGroups = 1,
6682            /// Like |SFP_MATCH_REDACT_GROUPS| but tries to do some pre-work before
6683            /// checking the regex. Specifically, it tries to parse the string field as
6684            /// an atrace tracepoint and checks if the post-tgid field starts with
6685            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
6686            /// this check succeeds.
6687            SfpAtraceMatchRedactGroups = 2,
6688            /// Tries to match the string field against |regex_pattern|. If it
6689            /// matches, filtering is terminated (i.e. no further rules are checked).
6690            /// If it doesn't match, the string is left unchanged and the next rule in
6691            /// chain is considered.
6692            SfpMatchBreak = 3,
6693            /// Like |SFP_MATCH_BREAK| but tries to do some pre-work before checking
6694            /// the regex. Specifically, it tries to parse the string field as an
6695            /// atrace tracepoint and checks if the post-tgid field starts with
6696            /// |atrace_post_tgid_starts_with|. The regex matching is only performed if
6697            /// this check succeeds.
6698            SfpAtraceMatchBreak = 4,
6699            /// Tries to repeatedly search (i.e. find substrings of) the string field
6700            /// with |regex_pattern|. For each match, redacts any matching groups (i.e.
6701            /// replaced with a constant string). Once there are no further matches,
6702            /// filtering is terminated (i.e. no further rules are checked).
6703            ///
6704            /// Note that this is policy is a "search" policy not a "match" policy
6705            /// unlike the above policies:
6706            ///   * Match policies require matching the full string i.e. there is an
6707            ///     implicit leading `^` and trailing `$`.
6708            ///   * Search policies perform repeated partial matching of the string
6709            ///     e.g.
6710            ///       - String: `foo=aaa,bar=123,foo=bbb,baz=456`
6711            ///       - Pattern: `foo=(\d+)`
6712            ///       - Output: `foo=P6O,bar=123,foo=P6O,baz=456`
6713            ///     where P6O is the redaction string
6714            ///
6715            /// All of this is only performed after some pre-work where we try to parse
6716            /// the string field as an atrace tracepoint and check if the post-tgid
6717            /// field starts with |atrace_post_tgid_starts_with|.
6718            ///
6719            /// If there are no partial matches, the string is left unchanged and the
6720            /// next rule in chain is considered.
6721            SfpAtraceRepeatedSearchRedactGroups = 5,
6722        }
6723        impl StringFilterPolicy {
6724            /// String value of the enum field names used in the ProtoBuf definition.
6725            ///
6726            /// The values are not transformed in any way and thus are considered stable
6727            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6728            pub fn as_str_name(&self) -> &'static str {
6729                match self {
6730                    Self::SfpUnspecified => "SFP_UNSPECIFIED",
6731                    Self::SfpMatchRedactGroups => "SFP_MATCH_REDACT_GROUPS",
6732                    Self::SfpAtraceMatchRedactGroups => "SFP_ATRACE_MATCH_REDACT_GROUPS",
6733                    Self::SfpMatchBreak => "SFP_MATCH_BREAK",
6734                    Self::SfpAtraceMatchBreak => "SFP_ATRACE_MATCH_BREAK",
6735                    Self::SfpAtraceRepeatedSearchRedactGroups => {
6736                        "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS"
6737                    }
6738                }
6739            }
6740            /// Creates an enum from field names used in the ProtoBuf definition.
6741            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6742                match value {
6743                    "SFP_UNSPECIFIED" => Some(Self::SfpUnspecified),
6744                    "SFP_MATCH_REDACT_GROUPS" => Some(Self::SfpMatchRedactGroups),
6745                    "SFP_ATRACE_MATCH_REDACT_GROUPS" => {
6746                        Some(Self::SfpAtraceMatchRedactGroups)
6747                    }
6748                    "SFP_MATCH_BREAK" => Some(Self::SfpMatchBreak),
6749                    "SFP_ATRACE_MATCH_BREAK" => Some(Self::SfpAtraceMatchBreak),
6750                    "SFP_ATRACE_REPEATED_SEARCH_REDACT_GROUPS" => {
6751                        Some(Self::SfpAtraceRepeatedSearchRedactGroups)
6752                    }
6753                    _ => None,
6754                }
6755            }
6756        }
6757    }
6758    /// Android-only. Not for general use. If set, reports the trace to the
6759    /// Android framework. This field is read by perfetto_cmd, rather than the
6760    /// tracing service. This field must be set when passing the --upload flag to
6761    /// perfetto_cmd.
6762    /// In this message, either:
6763    ///   * |reporter_service_package| and |reporter_service_class| must be set.
6764    ///   * |skip_reporting| must be explicitly set to true.
6765    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6766    pub struct AndroidReportConfig {
6767        #[prost(string, optional, tag = "1")]
6768        pub reporter_service_package: ::core::option::Option<
6769            ::prost::alloc::string::String,
6770        >,
6771        #[prost(string, optional, tag = "2")]
6772        pub reporter_service_class: ::core::option::Option<
6773            ::prost::alloc::string::String,
6774        >,
6775        /// If true, then skips reporting the trace to Android framework.
6776        ///
6777        /// This flag is useful in testing (e.g. Perfetto-statsd integration tests)
6778        /// or when we explicitly don't want to report traces to the framework even
6779        /// when they usually would (e.g. configs deployed using statsd but only
6780        /// used for inclusion in bugreports using |bugreport_score|).
6781        ///
6782        /// The motivation for having this flag, instead of just not setting
6783        /// |framework_report_config|, is prevent accidents where
6784        /// |framework_report_config| is omitted by mistake.
6785        #[prost(bool, optional, tag = "3")]
6786        pub skip_report: ::core::option::Option<bool>,
6787        /// If true, will direct the Android framework to read the data in trace
6788        /// file and pass it to the reporter class over a pipe instead of passing
6789        /// the file descriptor directly.
6790        ///
6791        /// This flag is needed because the Android test framework does not
6792        /// currently support priv-app helper apps (in terms of SELinux) and we
6793        /// really don't want to add an allow rule for untrusted_app to receive
6794        /// trace fds.
6795        ///
6796        /// Because of this, we instead will direct the framework to create a new
6797        /// pipe and pass this to the reporter process instead. As the pipe is
6798        /// created by the framework, we won't have any problems with SELinux
6799        /// (system_server is already allowed to pass pipe fds, even
6800        /// to untrusted apps).
6801        ///
6802        /// As the name suggests this option *MUST* only be used for testing.
6803        /// Note that the framework will reject (and drop) files which are too
6804        /// large both for simplicity and to be minimize the amount of data we
6805        /// pass to a non-priv app (note that the framework will still check
6806        /// manifest permissions even though SELinux permissions are worked around).
6807        #[prost(bool, optional, tag = "4")]
6808        pub use_pipe_in_framework_for_testing: ::core::option::Option<bool>,
6809    }
6810    /// If set, delays the start of tracing by a random duration. The duration is
6811    /// chosen from a uniform distribution between the specified minimum and
6812    /// maximum.
6813    /// Note: this delay is implemented by perfetto_cmd *not* by traced so will
6814    /// not work if you communicate with traced directly over the consumer API.
6815    /// Introduced in Android T.
6816    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6817    pub struct CmdTraceStartDelay {
6818        #[prost(uint32, optional, tag = "1")]
6819        pub min_delay_ms: ::core::option::Option<u32>,
6820        #[prost(uint32, optional, tag = "2")]
6821        pub max_delay_ms: ::core::option::Option<u32>,
6822    }
6823    /// When non-empty, ensures that for a each semaphore named `name at most
6824    /// `max_other_session_count`` *other* sessions (whose value is taken of the
6825    /// minimum of all values specified by this config or any already-running
6826    /// session) can be be running.
6827    ///
6828    /// If a semaphore "acquisition" fails, EnableTracing will return an error
6829    /// and the tracing session will not be started (or elgible to start in
6830    /// the case of deferred sessions).
6831    ///
6832    /// This is easiest to explain with an example. Suppose the tracing service has
6833    /// the following active tracing sessions:
6834    ///    S1 = [{name=foo, max_other_session_count=2},
6835    ///          {name=bar, max_other_session_count=0}]
6836    ///    S2 = [{name=foo, max_other_session_count=1},
6837    ///          {name=baz, max_other_session_count=1}]
6838    ///
6839    /// Then, for a new session, the following would be the expected behaviour of
6840    /// EnableSession given the state of `session_semaphores`.
6841    ///    Q: session_semaphores = \[\]
6842    ///    A: Allowed because it does not specify any semaphores. Will be allowed
6843    ///       no matter the state of any other tracing session.
6844    ///    Q: session_semaphores = \[{name=baz, max_other_session_count=1}\]
6845    ///    A: Allowed because both S2 and this config specify
6846    ///       max_other_session_count=1 for baz.
6847    ///    Q: session_semaphores = \[{name=foo, max_other_session_count=3}\]
6848    ///    A: Denied because S2 specified max_other_session_count=1 for foo and S1
6849    ///       takes that slot.
6850    ///    Q: session_semaphores = \[{name=bar, max_other_session_count=0}\]
6851    ///    A: Denied because S1 takes the the slot specified by both S1 and
6852    ///       this config.
6853    ///
6854    /// Introduced in 24Q3 (Android V).
6855    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6856    pub struct SessionSemaphore {
6857        /// The name of the semaphore. Acts as a unique identifier across all
6858        /// tracing sessions (including the one being started).
6859        #[prost(string, optional, tag = "1")]
6860        pub name: ::core::option::Option<::prost::alloc::string::String>,
6861        /// The maximum number of *other* sesssions which specify the same semaphore
6862        /// which can be active. The minimum of this value across all tracing
6863        /// sessions and the value specified by the config is used when deciding
6864        /// whether the tracing session can be started.
6865        #[prost(uint64, optional, tag = "2")]
6866        pub max_other_session_count: ::core::option::Option<u64>,
6867    }
6868    #[derive(
6869        Clone,
6870        Copy,
6871        Debug,
6872        PartialEq,
6873        Eq,
6874        Hash,
6875        PartialOrd,
6876        Ord,
6877        ::prost::Enumeration
6878    )]
6879    #[repr(i32)]
6880    pub enum LockdownModeOperation {
6881        LockdownUnchanged = 0,
6882        LockdownClear = 1,
6883        LockdownSet = 2,
6884    }
6885    impl LockdownModeOperation {
6886        /// String value of the enum field names used in the ProtoBuf definition.
6887        ///
6888        /// The values are not transformed in any way and thus are considered stable
6889        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6890        pub fn as_str_name(&self) -> &'static str {
6891            match self {
6892                Self::LockdownUnchanged => "LOCKDOWN_UNCHANGED",
6893                Self::LockdownClear => "LOCKDOWN_CLEAR",
6894                Self::LockdownSet => "LOCKDOWN_SET",
6895            }
6896        }
6897        /// Creates an enum from field names used in the ProtoBuf definition.
6898        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6899            match value {
6900                "LOCKDOWN_UNCHANGED" => Some(Self::LockdownUnchanged),
6901                "LOCKDOWN_CLEAR" => Some(Self::LockdownClear),
6902                "LOCKDOWN_SET" => Some(Self::LockdownSet),
6903                _ => None,
6904            }
6905        }
6906    }
6907    /// Deprecated: use |compression| (CompressionConfig) instead. Legacy selector
6908    /// that only ever selects deflate. Kept for backwards compatibility with
6909    /// Perfetto <= v57, whose services predate |compression|. Best effort.
6910    #[derive(
6911        Clone,
6912        Copy,
6913        Debug,
6914        PartialEq,
6915        Eq,
6916        Hash,
6917        PartialOrd,
6918        Ord,
6919        ::prost::Enumeration
6920    )]
6921    #[repr(i32)]
6922    pub enum CompressionType {
6923        Unspecified = 0,
6924        Deflate = 1,
6925    }
6926    impl CompressionType {
6927        /// String value of the enum field names used in the ProtoBuf definition.
6928        ///
6929        /// The values are not transformed in any way and thus are considered stable
6930        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6931        pub fn as_str_name(&self) -> &'static str {
6932            match self {
6933                Self::Unspecified => "COMPRESSION_TYPE_UNSPECIFIED",
6934                Self::Deflate => "COMPRESSION_TYPE_DEFLATE",
6935            }
6936        }
6937        /// Creates an enum from field names used in the ProtoBuf definition.
6938        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6939            match value {
6940                "COMPRESSION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
6941                "COMPRESSION_TYPE_DEFLATE" => Some(Self::Deflate),
6942                _ => None,
6943            }
6944        }
6945    }
6946    #[derive(
6947        Clone,
6948        Copy,
6949        Debug,
6950        PartialEq,
6951        Eq,
6952        Hash,
6953        PartialOrd,
6954        Ord,
6955        ::prost::Enumeration
6956    )]
6957    #[repr(i32)]
6958    pub enum StatsdLogging {
6959        Unspecified = 0,
6960        Enabled = 1,
6961        Disabled = 2,
6962    }
6963    impl StatsdLogging {
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 => "STATSD_LOGGING_UNSPECIFIED",
6971                Self::Enabled => "STATSD_LOGGING_ENABLED",
6972                Self::Disabled => "STATSD_LOGGING_DISABLED",
6973            }
6974        }
6975        /// Creates an enum from field names used in the ProtoBuf definition.
6976        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6977            match value {
6978                "STATSD_LOGGING_UNSPECIFIED" => Some(Self::Unspecified),
6979                "STATSD_LOGGING_ENABLED" => Some(Self::Enabled),
6980                "STATSD_LOGGING_DISABLED" => Some(Self::Disabled),
6981                _ => None,
6982            }
6983        }
6984    }
6985    #[derive(
6986        Clone,
6987        Copy,
6988        Debug,
6989        PartialEq,
6990        Eq,
6991        Hash,
6992        PartialOrd,
6993        Ord,
6994        ::prost::Enumeration
6995    )]
6996    #[repr(i32)]
6997    pub enum WriteFlushMode {
6998        /// Same as WRITE_FLUSH_AUTO.
6999        WriteFlushUnspecified = 0,
7000        /// Default mode. The service automatically determines the flush frequency
7001        /// to balance performance and data freshness:
7002        /// 1) If file_write_period_ms <= 5s (kDefaultWriteIntoFilePeriodMs):
7003        ///     Flushes are NOT issued on every write. Instead, a periodic flush is
7004        ///     issued every 5s.
7005        /// 2) If file_write_period_ms > 5s:
7006        ///     A flush is issued before every periodic write into the file.
7007        WriteFlushAuto = 1,
7008        /// The following modes are intended for advanced usage and not recommended
7009        /// for general use.
7010        ///
7011        /// Do not flush buffers before periodic writes into the file.
7012        /// Use this mode if you want to minimize the performance impact of flushes
7013        /// and can tolerate potentially missing the most recent data in the trace
7014        /// file until the end of the session or an explicit flush.
7015        /// When this mode is selected, |flush_period_ms| is respected.
7016        WriteFlushDisabled = 2,
7017        /// Issue a flush before every periodic write into the file.
7018        /// This ensures that each write into the file contains the most up-to-date
7019        /// data from all data sources, but may have a higher performance overhead.
7020        WriteFlushEnabled = 3,
7021    }
7022    impl WriteFlushMode {
7023        /// String value of the enum field names used in the ProtoBuf definition.
7024        ///
7025        /// The values are not transformed in any way and thus are considered stable
7026        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7027        pub fn as_str_name(&self) -> &'static str {
7028            match self {
7029                Self::WriteFlushUnspecified => "WRITE_FLUSH_UNSPECIFIED",
7030                Self::WriteFlushAuto => "WRITE_FLUSH_AUTO",
7031                Self::WriteFlushDisabled => "WRITE_FLUSH_DISABLED",
7032                Self::WriteFlushEnabled => "WRITE_FLUSH_ENABLED",
7033            }
7034        }
7035        /// Creates an enum from field names used in the ProtoBuf definition.
7036        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7037            match value {
7038                "WRITE_FLUSH_UNSPECIFIED" => Some(Self::WriteFlushUnspecified),
7039                "WRITE_FLUSH_AUTO" => Some(Self::WriteFlushAuto),
7040                "WRITE_FLUSH_DISABLED" => Some(Self::WriteFlushDisabled),
7041                "WRITE_FLUSH_ENABLED" => Some(Self::WriteFlushEnabled),
7042                _ => None,
7043            }
7044        }
7045    }
7046    #[derive(
7047        Clone,
7048        Copy,
7049        Debug,
7050        PartialEq,
7051        Eq,
7052        Hash,
7053        PartialOrd,
7054        Ord,
7055        ::prost::Enumeration
7056    )]
7057    #[repr(i32)]
7058    pub enum FFlushMode {
7059        /// Default: same as FFLUSH_DISABLED.
7060        FflushUnspecified = 0,
7061        /// Do not explicitly sync the file to storage after each write pass.
7062        FflushDisabled = 1,
7063        /// Explicitly sync the file to storage (via fdatasync) after each periodic
7064        /// write pass. Increases data durability at the cost of higher disk I/O
7065        /// overhead.
7066        FflushEnabled = 2,
7067    }
7068    impl FFlushMode {
7069        /// String value of the enum field names used in the ProtoBuf definition.
7070        ///
7071        /// The values are not transformed in any way and thus are considered stable
7072        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7073        pub fn as_str_name(&self) -> &'static str {
7074            match self {
7075                Self::FflushUnspecified => "FFLUSH_UNSPECIFIED",
7076                Self::FflushDisabled => "FFLUSH_DISABLED",
7077                Self::FflushEnabled => "FFLUSH_ENABLED",
7078            }
7079        }
7080        /// Creates an enum from field names used in the ProtoBuf definition.
7081        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7082            match value {
7083                "FFLUSH_UNSPECIFIED" => Some(Self::FflushUnspecified),
7084                "FFLUSH_DISABLED" => Some(Self::FflushDisabled),
7085                "FFLUSH_ENABLED" => Some(Self::FflushEnabled),
7086                _ => None,
7087            }
7088        }
7089    }
7090}
7091#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7092pub struct Utsname {
7093    #[prost(string, optional, tag = "1")]
7094    pub sysname: ::core::option::Option<::prost::alloc::string::String>,
7095    #[prost(string, optional, tag = "2")]
7096    pub version: ::core::option::Option<::prost::alloc::string::String>,
7097    #[prost(string, optional, tag = "3")]
7098    pub release: ::core::option::Option<::prost::alloc::string::String>,
7099    #[prost(string, optional, tag = "4")]
7100    pub machine: ::core::option::Option<::prost::alloc::string::String>,
7101}
7102/// Next id: 19
7103#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7104pub struct SystemInfo {
7105    #[prost(message, optional, tag = "1")]
7106    pub utsname: ::core::option::Option<Utsname>,
7107    #[prost(string, optional, tag = "2")]
7108    pub android_build_fingerprint: ::core::option::Option<
7109        ::prost::alloc::string::String,
7110    >,
7111    /// The manufacturer of the product/hardware.
7112    /// Source : "ro.product.manufacturer"
7113    /// Introduced after Android W in Nov 2024 and is not supported on older
7114    /// versions.
7115    #[prost(string, optional, tag = "14")]
7116    pub android_device_manufacturer: ::core::option::Option<
7117        ::prost::alloc::string::String,
7118    >,
7119    /// The SoC model from which trace is collected
7120    #[prost(string, optional, tag = "9")]
7121    pub android_soc_model: ::core::option::Option<::prost::alloc::string::String>,
7122    /// Device tree compatible strings for Linux devices. This field is populated
7123    /// from the firmware file /sys/firmware/devicetree/base/compatible on the
7124    /// target device. The ordering matches the ordering in the device tree.
7125    /// Introduced after 26Q3 in Sept 2026 and is not supported on older versions.
7126    #[prost(string, repeated, tag = "18")]
7127    pub device_tree_compatibles: ::prost::alloc::vec::Vec<
7128        ::prost::alloc::string::String,
7129    >,
7130    /// The guest SoC model from which trace is collected in case of VMs
7131    #[prost(string, optional, tag = "13")]
7132    pub android_guest_soc_model: ::core::option::Option<::prost::alloc::string::String>,
7133    /// The hardware reversion from android device
7134    #[prost(string, optional, tag = "10")]
7135    pub android_hardware_revision: ::core::option::Option<
7136        ::prost::alloc::string::String,
7137    >,
7138    /// The storage component from android_device. This field has been introduced
7139    /// after Android W in Aug 2024 and is not supported on older versions.
7140    #[prost(string, optional, tag = "11")]
7141    pub android_storage_model: ::core::option::Option<::prost::alloc::string::String>,
7142    /// The RAM component information from android device. This field has been
7143    /// introduced after Android W in Aug 2024 and is not supported on older
7144    /// versions.
7145    #[prost(string, optional, tag = "12")]
7146    pub android_ram_model: ::core::option::Option<::prost::alloc::string::String>,
7147    /// The serial console information from android device.
7148    #[prost(string, optional, tag = "15")]
7149    pub android_serial_console: ::core::option::Option<::prost::alloc::string::String>,
7150    /// The version of traced (the same returned by `traced --version`).
7151    /// This is a human readable string with and its format varies depending on
7152    /// the build system and the repo (standalone vs AOSP).
7153    /// This is intended for human debugging only.
7154    #[prost(string, optional, tag = "4")]
7155    pub tracing_service_version: ::core::option::Option<::prost::alloc::string::String>,
7156    /// The Android SDK vesion (e.g. 21 for L, 31 for S etc).
7157    /// Introduced in Android T.
7158    #[prost(uint64, optional, tag = "5")]
7159    pub android_sdk_version: ::core::option::Option<u64>,
7160    /// Kernel page size - sysconf(_SC_PAGESIZE).
7161    #[prost(uint32, optional, tag = "6")]
7162    pub page_size: ::core::option::Option<u32>,
7163    /// Number of cpus - sysconf(_SC_NPROCESSORS_CONF).
7164    /// Might be different to the number of online cpus.
7165    /// Introduced in perfetto v44.
7166    #[prost(uint32, optional, tag = "8")]
7167    pub num_cpus: ::core::option::Option<u32>,
7168    /// The timezone offset from UTC, as per strftime("%z"), in minutes.
7169    /// Introduced in v38 / Android V.
7170    #[prost(int32, optional, tag = "7")]
7171    pub timezone_off_mins: ::core::option::Option<i32>,
7172    /// Ticks per second - sysconf(_SC_CLK_TCK).
7173    /// Not serialised as of perfetto v44.
7174    #[prost(int64, optional, tag = "3")]
7175    pub hz: ::core::option::Option<i64>,
7176    /// The size of the system RAM in bytes.
7177    ///
7178    /// On Linux/Android: sysinfo.totalram * sysinfo.mem_unit.
7179    /// Other POSIX (e.g. Mac): sysconf(_SC_PHYS_PAGES) * sysconf(_SC_PAGESIZE).
7180    ///
7181    /// Introduced in perfetto v54 / Android 26Q1+.
7182    #[prost(uint64, optional, tag = "16")]
7183    pub system_ram_bytes: ::core::option::Option<u64>,
7184    /// Human-readable name of the machine this SystemInfo describes, used as the
7185    /// machine's label in the UI (falling back to "machine <id>" when unset).
7186    ///
7187    /// A producer attributing its data to a non-host machine can set this by
7188    /// emitting a SystemInfo packet to give that machine a name. Only meaningful
7189    /// when the packet carries a non-zero machine_id.
7190    #[prost(string, optional, tag = "17")]
7191    pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
7192}
7193/// Statistics for the internals of the tracing service.
7194///
7195/// Next id: 19.
7196#[derive(Clone, PartialEq, ::prost::Message)]
7197pub struct TraceStats {
7198    /// Stats for the TraceBuffer(s) of the current trace session.
7199    #[prost(message, repeated, tag = "1")]
7200    pub buffer_stats: ::prost::alloc::vec::Vec<trace_stats::BufferStats>,
7201    /// The thresholds of each the `writer_stats` histogram buckets. This is
7202    /// emitted only once as all WriterStats share the same bucket layout.
7203    /// This field has the same cardinality of the
7204    /// `writer_stats.chunk_payload_histogram_{counts,sum}` - 1.
7205    /// (The -1 is because the last overflow bucket is not reported in the _def).
7206    /// An array of values \[10, 100, 1000\] in the _def array means that there are
7207    /// four buckets (3 + the implicit overflow bucket):
7208    /// \[0\]: x <= 10; \[1\]: 100 < x <= 1000; \[2\]: 1000 < x <= 1000; \[3\]: x > 1000.
7209    #[prost(int64, repeated, packed = "false", tag = "17")]
7210    pub chunk_payload_histogram_def: ::prost::alloc::vec::Vec<i64>,
7211    #[prost(message, repeated, tag = "18")]
7212    pub writer_stats: ::prost::alloc::vec::Vec<trace_stats::WriterStats>,
7213    /// Num. producers connected (whether they are involved in the current tracing
7214    /// session or not).
7215    #[prost(uint32, optional, tag = "2")]
7216    pub producers_connected: ::core::option::Option<u32>,
7217    /// Num. producers ever seen for all trace sessions since startup (it's a good
7218    /// proxy for inferring num. producers crashed / killed).
7219    #[prost(uint64, optional, tag = "3")]
7220    pub producers_seen: ::core::option::Option<u64>,
7221    /// Num. data sources registered for all trace sessions.
7222    #[prost(uint32, optional, tag = "4")]
7223    pub data_sources_registered: ::core::option::Option<u32>,
7224    /// Num. data sources ever seen for all trace sessions since startup.
7225    #[prost(uint64, optional, tag = "5")]
7226    pub data_sources_seen: ::core::option::Option<u64>,
7227    /// Num. concurrently active tracing sessions.
7228    #[prost(uint32, optional, tag = "6")]
7229    pub tracing_sessions: ::core::option::Option<u32>,
7230    /// Num. buffers for all tracing session (not just the current one). This will
7231    /// be >= buffer_stats.size(), because the latter is only about the current
7232    /// session.
7233    #[prost(uint32, optional, tag = "7")]
7234    pub total_buffers: ::core::option::Option<u32>,
7235    /// Num. chunks that were discarded by the service before attempting to commit
7236    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
7237    #[prost(uint64, optional, tag = "8")]
7238    pub chunks_discarded: ::core::option::Option<u64>,
7239    /// Num. patches that were discarded by the service before attempting to apply
7240    /// them to a buffer, e.g. because the producer specified an invalid buffer ID.
7241    #[prost(uint64, optional, tag = "9")]
7242    pub patches_discarded: ::core::option::Option<u64>,
7243    /// Packets that failed validation of the TrustedPacket. If this is > 0, there
7244    /// is a bug in the producer.
7245    #[prost(uint64, optional, tag = "10")]
7246    pub invalid_packets: ::core::option::Option<u64>,
7247    #[prost(message, optional, tag = "11")]
7248    pub filter_stats: ::core::option::Option<trace_stats::FilterStats>,
7249    /// Count of Flush() requests (either from the Consumer, or self-induced
7250    /// periodic flushes). The final Flush() is also included in the count.
7251    #[prost(uint64, optional, tag = "12")]
7252    pub flushes_requested: ::core::option::Option<u64>,
7253    /// The count of the Flush() requests that were completed successfully.
7254    /// In a well behaving trace this should always be == `flush_requests`.
7255    #[prost(uint64, optional, tag = "13")]
7256    pub flushes_succeeded: ::core::option::Option<u64>,
7257    /// The count of the Flush() requests that failed (in most timed out).
7258    /// In a well behaving trace this should always be == 0.
7259    #[prost(uint64, optional, tag = "14")]
7260    pub flushes_failed: ::core::option::Option<u64>,
7261    #[prost(enumeration = "trace_stats::FinalFlushOutcome", optional, tag = "15")]
7262    pub final_flush_outcome: ::core::option::Option<i32>,
7263}
7264/// Nested message and enum types in `TraceStats`.
7265pub mod trace_stats {
7266    /// From TraceBuffer::Stats.
7267    ///
7268    /// Next id: 25.
7269    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7270    pub struct BufferStats {
7271        /// Size of the circular buffer in bytes.
7272        #[prost(uint64, optional, tag = "12")]
7273        pub buffer_size: ::core::option::Option<u64>,
7274        /// Num. bytes written into the circular buffer, including chunk headers.
7275        #[prost(uint64, optional, tag = "1")]
7276        pub bytes_written: ::core::option::Option<u64>,
7277        /// Num. bytes overwritten before they have been read (i.e. loss of data).
7278        #[prost(uint64, optional, tag = "13")]
7279        pub bytes_overwritten: ::core::option::Option<u64>,
7280        /// Total size of chunks that were fully read from the circular buffer by the
7281        /// consumer. This may not be equal to |bytes_written| either in the middle
7282        /// of tracing, or if |chunks_overwritten| is non-zero. Note that this is the
7283        /// size of the chunks read from the buffer, including chunk headers, which
7284        /// will be different from the total size of packets returned to the
7285        /// consumer.
7286        ///
7287        /// The current utilization of the trace buffer (mid-tracing) can be obtained
7288        /// by subtracting |bytes_read| and |bytes_overwritten| from |bytes_written|,
7289        /// adding the difference of |padding_bytes_written| and
7290        /// |padding_bytes_cleared|, and comparing this sum to the |buffer_size|.
7291        /// Note that this represents the total size of buffered data in the buffer,
7292        /// yet this data may be spread non-contiguously through the buffer and may
7293        /// be overridden before the utilization reaches 100%.
7294        #[prost(uint64, optional, tag = "14")]
7295        pub bytes_read: ::core::option::Option<u64>,
7296        /// Num. bytes that were allocated as padding between chunks in the circular
7297        /// buffer.
7298        #[prost(uint64, optional, tag = "15")]
7299        pub padding_bytes_written: ::core::option::Option<u64>,
7300        /// Num. of padding bytes that were removed from the circular buffer when
7301        /// they were overwritten.
7302        ///
7303        /// The difference between |padding_bytes_written| and
7304        /// |padding_bytes_cleared| denotes the total size of padding currently
7305        /// present in the buffer.
7306        #[prost(uint64, optional, tag = "16")]
7307        pub padding_bytes_cleared: ::core::option::Option<u64>,
7308        /// Num. chunks (!= packets) written into the buffer.
7309        #[prost(uint64, optional, tag = "2")]
7310        pub chunks_written: ::core::option::Option<u64>,
7311        /// Num. chunks (!= packets) rewritten into the buffer. This means we rewrote
7312        /// the same chunk with additional packets appended to the end.
7313        #[prost(uint64, optional, tag = "10")]
7314        pub chunks_rewritten: ::core::option::Option<u64>,
7315        /// TraceBufferV2 only. Num. chunks that we moved to the write cursor
7316        /// instead of rewriting in place. We do this for scraped chunks that have
7317        /// been fully read: their old position can be so close to the write cursor
7318        /// that the packets we just recovered would be overwritten before any read.
7319        ///
7320        /// Introduced in v59 / Android 26Q3+.
7321        #[prost(uint64, optional, tag = "20")]
7322        pub chunks_relocated: ::core::option::Option<u64>,
7323        /// Num. chunks overwritten before they have been read (i.e. loss of data).
7324        #[prost(uint64, optional, tag = "3")]
7325        pub chunks_overwritten: ::core::option::Option<u64>,
7326        /// Num. chunks discarded (i.e. loss of data). For SMB chunks, this can be
7327        /// > 0 only when a buffer is configured with FillPolicy == DISCARD.
7328        /// TraceBufferV2 also counts SMB v2 batches rejected because their
7329        /// producer has a ProtoVM on this buffer.
7330        #[prost(uint64, optional, tag = "18")]
7331        pub chunks_discarded: ::core::option::Option<u64>,
7332        /// Num. chunks (!= packets) that were fully read from the circular buffer by
7333        /// the consumer. This may not be equal to |chunks_written| either in the
7334        /// middle of tracing, or if |chunks_overwritten| is non-zero.
7335        #[prost(uint64, optional, tag = "17")]
7336        pub chunks_read: ::core::option::Option<u64>,
7337        /// Num. chunks that were committed out of order.
7338        #[prost(uint64, optional, tag = "11")]
7339        pub chunks_committed_out_of_order: ::core::option::Option<u64>,
7340        /// Num. times the ring buffer wrapped around.
7341        #[prost(uint64, optional, tag = "4")]
7342        pub write_wrap_count: ::core::option::Option<u64>,
7343        /// Number of completed TraceBufferV2 compactions.
7344        /// Includes compactions that move no chunks and excludes calls that skip
7345        /// compaction, such as calls on DISCARD or read-only buffers.
7346        ///
7347        /// Compaction moves remaining chunks to the front and clears the unused
7348        /// tail.
7349        /// It keeps the pages that a similar write cycle can reuse, and releases
7350        /// the other whole pages where supported.
7351        /// The next writes start after the remaining chunks, which can reduce how
7352        /// often |write_wrap_count| and |chunks_overwritten| increase.
7353        /// Incomplete chunks can remain until later writes overwrite them.
7354        ///
7355        /// Introduced in v59 / Android 26Q4+.
7356        #[prost(uint64, optional, tag = "23")]
7357        pub compactions: ::core::option::Option<u64>,
7358        /// Number of TraceBufferV2 compactions skipped because live chunks were
7359        /// on both sides of the write cursor.
7360        ///
7361        /// Introduced in v59 / Android 26Q4+.
7362        #[prost(uint64, optional, tag = "24")]
7363        pub compactions_skipped: ::core::option::Option<u64>,
7364        /// Num. out-of-band (OOB) patches that succeeded.
7365        #[prost(uint64, optional, tag = "5")]
7366        pub patches_succeeded: ::core::option::Option<u64>,
7367        /// Num. OOB patches that failed (e.g., the chunk to patch was gone).
7368        #[prost(uint64, optional, tag = "6")]
7369        pub patches_failed: ::core::option::Option<u64>,
7370        /// Num. readaheads (for large multi-chunk packet reads) that ended up in a
7371        /// successful packet read.
7372        #[prost(uint64, optional, tag = "7")]
7373        pub readaheads_succeeded: ::core::option::Option<u64>,
7374        /// Num. readaheads aborted because of missing chunks in the sequence stream.
7375        /// Note that a small number > 0 is totally expected: occasionally, when
7376        /// issuing a read, the very last packet in a sequence might be incomplete
7377        /// (because the producer is still writing it while we read). The read will
7378        /// stop at that point, for that sequence, increasing this counter.
7379        #[prost(uint64, optional, tag = "8")]
7380        pub readaheads_failed: ::core::option::Option<u64>,
7381        /// Num. of violations of the SharedMemoryABI or the shared ring buffer ABI
7382        /// found while writing or reading the buffer. This includes SMB v2 packets
7383        /// that TraceBufferV2 cannot rewrite because they are malformed or nest
7384        /// more than 128 groups. It also includes chunks whose writer ID already
7385        /// uses the other input format.
7386        /// This is an indication of either a bug in the producer(s) or malicious
7387        /// producer(s).
7388        #[prost(uint64, optional, tag = "9")]
7389        pub abi_violations: ::core::option::Option<u64>,
7390        /// Num. of times the service detected packet loss on a trace writer
7391        /// sequence. This is usually caused by exhaustion of available chunks in the
7392        /// writer process's SMB. Note that this relies on the client's TraceWriter
7393        /// indicating this loss to the service -- packets lost for other reasons are
7394        /// not reflected in this stat.
7395        #[prost(uint64, optional, tag = "19")]
7396        pub trace_writer_packet_loss: ::core::option::Option<u64>,
7397        /// TraceBufferV2 only. Num. SMB v2 packets dropped at read time because
7398        /// they contain a nested message larger than 256 MiB, the limit of the
7399        /// four-byte length field. The packet can be valid. Loss is reported on the
7400        /// next packet of the same sequence.
7401        #[prost(uint64, optional, tag = "22")]
7402        pub oversized_packets_dropped: ::core::option::Option<u64>,
7403    }
7404    /// Per TraceWriter stat. Each {producer, trace writer} tuple is publicly
7405    /// visible as a unique sequence ID in the trace.
7406    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7407    pub struct WriterStats {
7408        /// This matches the TracePacket.trusted_packet_sequence_id and is used to
7409        /// correlate the stats with the actual packet types.
7410        #[prost(uint64, optional, tag = "1")]
7411        pub sequence_id: ::core::option::Option<u64>,
7412        /// The buffer index (0..N, as defined in the TraceConfig).
7413        #[prost(uint32, optional, tag = "4")]
7414        pub buffer: ::core::option::Option<u32>,
7415        /// Which protocol carried this writer's chunks to the buffer.
7416        /// This is a bitmask of ProtocolAbiVersion (see producer_port.proto).
7417        /// The value is 1 for the SMB (v1) and 2 for the tracing v2 ring buffer.
7418        /// Both bits are set only if a v1 and a v2 writer of the same producer used
7419        /// the same writer ID which should NOT be happening.
7420        #[prost(uint32, optional, tag = "5")]
7421        pub protocol_abi_versions: ::core::option::Option<u32>,
7422        /// These two arrays have the same cardinality and match the cardinality of
7423        /// chunk_payload_histogram_def + 1 (for the overflow bucket, see below).
7424        /// `sum` contains the SUM(entries) and `counts` contains the COUNT(entries)
7425        /// for each bucket.
7426        #[prost(uint64, repeated, tag = "2")]
7427        pub chunk_payload_histogram_counts: ::prost::alloc::vec::Vec<u64>,
7428        #[prost(int64, repeated, tag = "3")]
7429        pub chunk_payload_histogram_sum: ::prost::alloc::vec::Vec<i64>,
7430    }
7431    /// This is set only when the TraceConfig specifies a TraceFilter.
7432    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7433    pub struct FilterStats {
7434        #[prost(uint64, optional, tag = "1")]
7435        pub input_packets: ::core::option::Option<u64>,
7436        #[prost(uint64, optional, tag = "2")]
7437        pub input_bytes: ::core::option::Option<u64>,
7438        #[prost(uint64, optional, tag = "3")]
7439        pub output_bytes: ::core::option::Option<u64>,
7440        #[prost(uint64, optional, tag = "4")]
7441        pub errors: ::core::option::Option<u64>,
7442        #[prost(uint64, optional, tag = "5")]
7443        pub time_taken_ns: ::core::option::Option<u64>,
7444        /// The number of bytes discarded by the filter (i.e. output - input).
7445        /// The array has one entry for each buffer defined in the config (unless no
7446        /// packets for that buffer were seen and hence filtered).
7447        /// Note: the SUM(bytes_discarded_per_buffer) will be <= but not == the total
7448        /// (output_bytes - input_bytes) because the filter might also discard
7449        /// server-generated synthetic packets, that have no buffer index.
7450        #[prost(uint64, repeated, packed = "false", tag = "20")]
7451        pub bytes_discarded_per_buffer: ::prost::alloc::vec::Vec<u64>,
7452    }
7453    #[derive(
7454        Clone,
7455        Copy,
7456        Debug,
7457        PartialEq,
7458        Eq,
7459        Hash,
7460        PartialOrd,
7461        Ord,
7462        ::prost::Enumeration
7463    )]
7464    #[repr(i32)]
7465    pub enum FinalFlushOutcome {
7466        FinalFlushUnspecified = 0,
7467        FinalFlushSucceeded = 1,
7468        FinalFlushFailed = 2,
7469    }
7470    impl FinalFlushOutcome {
7471        /// String value of the enum field names used in the ProtoBuf definition.
7472        ///
7473        /// The values are not transformed in any way and thus are considered stable
7474        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7475        pub fn as_str_name(&self) -> &'static str {
7476            match self {
7477                Self::FinalFlushUnspecified => "FINAL_FLUSH_UNSPECIFIED",
7478                Self::FinalFlushSucceeded => "FINAL_FLUSH_SUCCEEDED",
7479                Self::FinalFlushFailed => "FINAL_FLUSH_FAILED",
7480            }
7481        }
7482        /// Creates an enum from field names used in the ProtoBuf definition.
7483        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7484            match value {
7485                "FINAL_FLUSH_UNSPECIFIED" => Some(Self::FinalFlushUnspecified),
7486                "FINAL_FLUSH_SUCCEEDED" => Some(Self::FinalFlushSucceeded),
7487                "FINAL_FLUSH_FAILED" => Some(Self::FinalFlushFailed),
7488                _ => None,
7489            }
7490        }
7491    }
7492}
7493/// Android aconfig flags (aflags).
7494/// This message captures a snapshot of the state of aconfig flags on the device.
7495/// Keep in sync with:
7496/// <http://ac/packages/modules/ConfigInfrastructure/aflags/proto/aflags.proto>
7497#[derive(Clone, PartialEq, ::prost::Message)]
7498pub struct AndroidAflags {
7499    /// A collection of flags.
7500    #[prost(message, repeated, tag = "1")]
7501    pub flags: ::prost::alloc::vec::Vec<android_aflags::Flag>,
7502    /// A human-readable error logged if aflags processing fails.
7503    /// This is a perfetto specific field used to help debugging.
7504    #[prost(string, optional, tag = "2")]
7505    pub error: ::core::option::Option<::prost::alloc::string::String>,
7506}
7507/// Nested message and enum types in `AndroidAflags`.
7508pub mod android_aflags {
7509    /// Representation of an aconfig flag and its metadata.
7510    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7511    pub struct Flag {
7512        #[prost(string, optional, tag = "1")]
7513        pub flag_namespace: ::core::option::Option<::prost::alloc::string::String>,
7514        #[prost(string, optional, tag = "2")]
7515        pub name: ::core::option::Option<::prost::alloc::string::String>,
7516        /// The aconfig package (e.g. "com.android.foo"). These are system-level
7517        /// identifiers and not privacy-impacting.
7518        #[prost(string, optional, tag = "3")]
7519        pub pkg: ::core::option::Option<::prost::alloc::string::String>,
7520        /// The container where the flag lives (e.g. "system", "vendor", or mainline
7521        /// module name).
7522        #[prost(string, optional, tag = "4")]
7523        pub container: ::core::option::Option<::prost::alloc::string::String>,
7524        /// The flag value as a string to support different future data types.
7525        #[prost(string, optional, tag = "5")]
7526        pub value: ::core::option::Option<::prost::alloc::string::String>,
7527        /// The value that will be applied after the next reboot, if different from
7528        /// the current value.
7529        #[prost(string, optional, tag = "6")]
7530        pub staged_value: ::core::option::Option<::prost::alloc::string::String>,
7531        #[prost(enumeration = "FlagPermission", optional, tag = "7")]
7532        pub permission: ::core::option::Option<i32>,
7533        #[prost(enumeration = "ValuePickedFrom", optional, tag = "8")]
7534        pub value_picked_from: ::core::option::Option<i32>,
7535        #[prost(enumeration = "FlagStorageBackend", optional, tag = "9")]
7536        pub storage_backend: ::core::option::Option<i32>,
7537        #[prost(enumeration = "FlagType", optional, tag = "10")]
7538        pub r#type: ::core::option::Option<i32>,
7539    }
7540    /// Whether a flag can be modified at runtime.
7541    #[derive(
7542        Clone,
7543        Copy,
7544        Debug,
7545        PartialEq,
7546        Eq,
7547        Hash,
7548        PartialOrd,
7549        Ord,
7550        ::prost::Enumeration
7551    )]
7552    #[repr(i32)]
7553    pub enum FlagPermission {
7554        Unspecified = 0,
7555        ReadOnly = 1,
7556        ReadWrite = 2,
7557    }
7558    impl FlagPermission {
7559        /// String value of the enum field names used in the ProtoBuf definition.
7560        ///
7561        /// The values are not transformed in any way and thus are considered stable
7562        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7563        pub fn as_str_name(&self) -> &'static str {
7564            match self {
7565                Self::Unspecified => "FLAG_PERMISSION_UNSPECIFIED",
7566                Self::ReadOnly => "FLAG_PERMISSION_READ_ONLY",
7567                Self::ReadWrite => "FLAG_PERMISSION_READ_WRITE",
7568            }
7569        }
7570        /// Creates an enum from field names used in the ProtoBuf definition.
7571        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7572            match value {
7573                "FLAG_PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
7574                "FLAG_PERMISSION_READ_ONLY" => Some(Self::ReadOnly),
7575                "FLAG_PERMISSION_READ_WRITE" => Some(Self::ReadWrite),
7576                _ => None,
7577            }
7578        }
7579    }
7580    /// The source of the current flag value.
7581    #[derive(
7582        Clone,
7583        Copy,
7584        Debug,
7585        PartialEq,
7586        Eq,
7587        Hash,
7588        PartialOrd,
7589        Ord,
7590        ::prost::Enumeration
7591    )]
7592    #[repr(i32)]
7593    pub enum ValuePickedFrom {
7594        Unspecified = 0,
7595        /// The value is the build-time default.
7596        Default = 1,
7597        /// The value comes from a server-side override.
7598        Server = 2,
7599        /// The value comes from a local override on the device.
7600        Local = 3,
7601    }
7602    impl ValuePickedFrom {
7603        /// String value of the enum field names used in the ProtoBuf definition.
7604        ///
7605        /// The values are not transformed in any way and thus are considered stable
7606        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7607        pub fn as_str_name(&self) -> &'static str {
7608            match self {
7609                Self::Unspecified => "VALUE_PICKED_FROM_UNSPECIFIED",
7610                Self::Default => "VALUE_PICKED_FROM_DEFAULT",
7611                Self::Server => "VALUE_PICKED_FROM_SERVER",
7612                Self::Local => "VALUE_PICKED_FROM_LOCAL",
7613            }
7614        }
7615        /// Creates an enum from field names used in the ProtoBuf definition.
7616        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7617            match value {
7618                "VALUE_PICKED_FROM_UNSPECIFIED" => Some(Self::Unspecified),
7619                "VALUE_PICKED_FROM_DEFAULT" => Some(Self::Default),
7620                "VALUE_PICKED_FROM_SERVER" => Some(Self::Server),
7621                "VALUE_PICKED_FROM_LOCAL" => Some(Self::Local),
7622                _ => None,
7623            }
7624        }
7625    }
7626    /// The underlying storage mechanism for the flag.
7627    #[derive(
7628        Clone,
7629        Copy,
7630        Debug,
7631        PartialEq,
7632        Eq,
7633        Hash,
7634        PartialOrd,
7635        Ord,
7636        ::prost::Enumeration
7637    )]
7638    #[repr(i32)]
7639    pub enum FlagStorageBackend {
7640        Unspecified = 0,
7641        None = 1,
7642        Aconfigd = 2,
7643        DeviceConfig = 3,
7644    }
7645    impl FlagStorageBackend {
7646        /// String value of the enum field names used in the ProtoBuf definition.
7647        ///
7648        /// The values are not transformed in any way and thus are considered stable
7649        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7650        pub fn as_str_name(&self) -> &'static str {
7651            match self {
7652                Self::Unspecified => "FLAG_STORAGE_BACKEND_UNSPECIFIED",
7653                Self::None => "FLAG_STORAGE_BACKEND_NONE",
7654                Self::Aconfigd => "FLAG_STORAGE_BACKEND_ACONFIGD",
7655                Self::DeviceConfig => "FLAG_STORAGE_BACKEND_DEVICE_CONFIG",
7656            }
7657        }
7658        /// Creates an enum from field names used in the ProtoBuf definition.
7659        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7660            match value {
7661                "FLAG_STORAGE_BACKEND_UNSPECIFIED" => Some(Self::Unspecified),
7662                "FLAG_STORAGE_BACKEND_NONE" => Some(Self::None),
7663                "FLAG_STORAGE_BACKEND_ACONFIGD" => Some(Self::Aconfigd),
7664                "FLAG_STORAGE_BACKEND_DEVICE_CONFIG" => Some(Self::DeviceConfig),
7665                _ => None,
7666            }
7667        }
7668    }
7669    /// The value type of the flag.
7670    #[derive(
7671        Clone,
7672        Copy,
7673        Debug,
7674        PartialEq,
7675        Eq,
7676        Hash,
7677        PartialOrd,
7678        Ord,
7679        ::prost::Enumeration
7680    )]
7681    #[repr(i32)]
7682    pub enum FlagType {
7683        /// Flag type unspecified. This flag type means the flag is an old version
7684        /// boolean flag or unknown newer type.
7685        Unspecified = 0,
7686        Boolean = 1,
7687        Integer = 2,
7688    }
7689    impl FlagType {
7690        /// String value of the enum field names used in the ProtoBuf definition.
7691        ///
7692        /// The values are not transformed in any way and thus are considered stable
7693        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7694        pub fn as_str_name(&self) -> &'static str {
7695            match self {
7696                Self::Unspecified => "FLAG_TYPE_UNSPECIFIED",
7697                Self::Boolean => "FLAG_TYPE_BOOLEAN",
7698                Self::Integer => "FLAG_TYPE_INTEGER",
7699            }
7700        }
7701        /// Creates an enum from field names used in the ProtoBuf definition.
7702        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7703            match value {
7704                "FLAG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
7705                "FLAG_TYPE_BOOLEAN" => Some(Self::Boolean),
7706                "FLAG_TYPE_INTEGER" => Some(Self::Integer),
7707                _ => None,
7708            }
7709        }
7710    }
7711}
7712#[derive(Clone, PartialEq, ::prost::Message)]
7713pub struct AndroidGameInterventionList {
7714    #[prost(message, repeated, tag = "1")]
7715    pub game_packages: ::prost::alloc::vec::Vec<
7716        android_game_intervention_list::GamePackageInfo,
7717    >,
7718    /// True when at least one error occurred when parsing
7719    /// game_mode_intervention.list
7720    #[prost(bool, optional, tag = "2")]
7721    pub parse_error: ::core::option::Option<bool>,
7722    /// Failed to open / read game_mode_intervention.list
7723    #[prost(bool, optional, tag = "3")]
7724    pub read_error: ::core::option::Option<bool>,
7725}
7726/// Nested message and enum types in `AndroidGameInterventionList`.
7727pub mod android_game_intervention_list {
7728    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7729    pub struct GameModeInfo {
7730        #[prost(uint32, optional, tag = "1")]
7731        pub mode: ::core::option::Option<u32>,
7732        #[prost(bool, optional, tag = "2")]
7733        pub use_angle: ::core::option::Option<bool>,
7734        #[prost(float, optional, tag = "3")]
7735        pub resolution_downscale: ::core::option::Option<f32>,
7736        #[prost(float, optional, tag = "4")]
7737        pub fps: ::core::option::Option<f32>,
7738    }
7739    #[derive(Clone, PartialEq, ::prost::Message)]
7740    pub struct GamePackageInfo {
7741        #[prost(string, optional, tag = "1")]
7742        pub name: ::core::option::Option<::prost::alloc::string::String>,
7743        #[prost(uint64, optional, tag = "2")]
7744        pub uid: ::core::option::Option<u64>,
7745        #[prost(uint32, optional, tag = "3")]
7746        pub current_mode: ::core::option::Option<u32>,
7747        #[prost(message, repeated, tag = "4")]
7748        pub game_mode_info: ::prost::alloc::vec::Vec<GameModeInfo>,
7749    }
7750}
7751#[derive(Clone, PartialEq, ::prost::Message)]
7752pub struct AndroidLogPacket {
7753    #[prost(message, repeated, tag = "1")]
7754    pub events: ::prost::alloc::vec::Vec<android_log_packet::LogEvent>,
7755    #[prost(message, optional, tag = "2")]
7756    pub stats: ::core::option::Option<android_log_packet::Stats>,
7757}
7758/// Nested message and enum types in `AndroidLogPacket`.
7759pub mod android_log_packet {
7760    #[derive(Clone, PartialEq, ::prost::Message)]
7761    pub struct LogEvent {
7762        /// The log buffer (e.g. MAIN, SYSTEM, RADIO) the event comes from.
7763        #[prost(enumeration = "super::AndroidLogId", optional, tag = "1")]
7764        pub log_id: ::core::option::Option<i32>,
7765        /// PID (TGID), TID and UID of the task that emitted the event.
7766        #[prost(int32, optional, tag = "2")]
7767        pub pid: ::core::option::Option<i32>,
7768        #[prost(int32, optional, tag = "3")]
7769        pub tid: ::core::option::Option<i32>,
7770        #[prost(int32, optional, tag = "4")]
7771        pub uid: ::core::option::Option<i32>,
7772        /// Timestamp \[ns\]. The clock source is CLOCK_REALTIME, unlike many other
7773        /// Perfetto trace events that instead use CLOCK_BOOTTIME. The trace
7774        /// processor will take care of realigning clocks using the ClockSnapshot(s).
7775        #[prost(uint64, optional, tag = "5")]
7776        pub timestamp: ::core::option::Option<u64>,
7777        /// When log_id == LID_EVENTS, |tag| corresponds to the event name defined in
7778        /// the second column of /system/etc/event-log-tags. For all other events,
7779        /// |tag| is the app-specified argument passed to __android_log_write().
7780        #[prost(string, optional, tag = "6")]
7781        pub tag: ::core::option::Option<::prost::alloc::string::String>,
7782        /// Empty when log_id == LID_EVENTS.
7783        #[prost(enumeration = "super::AndroidLogPriority", optional, tag = "7")]
7784        pub prio: ::core::option::Option<i32>,
7785        /// Empty when log_id == LID_EVENTS.
7786        #[prost(string, optional, tag = "8")]
7787        pub message: ::core::option::Option<::prost::alloc::string::String>,
7788        /// Only populated when log_id == LID_EVENTS.
7789        #[prost(message, repeated, tag = "9")]
7790        pub args: ::prost::alloc::vec::Vec<log_event::Arg>,
7791    }
7792    /// Nested message and enum types in `LogEvent`.
7793    pub mod log_event {
7794        #[derive(Clone, PartialEq, ::prost::Message)]
7795        pub struct Arg {
7796            #[prost(string, optional, tag = "1")]
7797            pub name: ::core::option::Option<::prost::alloc::string::String>,
7798            #[prost(oneof = "arg::Value", tags = "2, 3, 4")]
7799            pub value: ::core::option::Option<arg::Value>,
7800        }
7801        /// Nested message and enum types in `Arg`.
7802        pub mod arg {
7803            #[derive(Clone, PartialEq, ::prost::Oneof)]
7804            pub enum Value {
7805                #[prost(int64, tag = "2")]
7806                IntValue(i64),
7807                #[prost(float, tag = "3")]
7808                FloatValue(f32),
7809                #[prost(string, tag = "4")]
7810                StringValue(::prost::alloc::string::String),
7811            }
7812        }
7813    }
7814    /// Stats are emitted only upon Flush() and are monotonic (i.e. they are
7815    /// absolute counters since the beginning of the lifetime of the tracing
7816    /// session and NOT relative to the previous Stats snapshot).
7817    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7818    pub struct Stats {
7819        /// Total number of log events seen, including errors and skipped entries
7820        /// (num of events stored in the trace = total - failed - skipped).
7821        #[prost(uint64, optional, tag = "1")]
7822        pub num_total: ::core::option::Option<u64>,
7823        /// Parser failures.
7824        #[prost(uint64, optional, tag = "2")]
7825        pub num_failed: ::core::option::Option<u64>,
7826        /// Messages skipped due to filters.
7827        #[prost(uint64, optional, tag = "3")]
7828        pub num_skipped: ::core::option::Option<u64>,
7829    }
7830}
7831#[derive(Clone, PartialEq, ::prost::Message)]
7832pub struct AndroidSystemProperty {
7833    #[prost(message, repeated, tag = "1")]
7834    pub values: ::prost::alloc::vec::Vec<android_system_property::PropertyValue>,
7835}
7836/// Nested message and enum types in `AndroidSystemProperty`.
7837pub mod android_system_property {
7838    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7839    pub struct PropertyValue {
7840        #[prost(string, optional, tag = "1")]
7841        pub name: ::core::option::Option<::prost::alloc::string::String>,
7842        #[prost(string, optional, tag = "2")]
7843        pub value: ::core::option::Option<::prost::alloc::string::String>,
7844    }
7845}
7846#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7847pub struct CpuPerUidData {
7848    /// Number of clusters in the device. This will only be filled in the first
7849    /// packet in a sequence.
7850    #[prost(uint32, optional, tag = "1")]
7851    pub cluster_count: ::core::option::Option<u32>,
7852    /// The UIDs for which we have data in this packet.
7853    #[prost(uint32, repeated, tag = "2")]
7854    pub uid: ::prost::alloc::vec::Vec<u32>,
7855    /// List of times for {UID, cluster} tuples. This will be cluster_count
7856    /// times as long as the UID list.
7857    ///
7858    /// Ordered like:
7859    /// [{UID 0, cluster 0}, {UID 0, cluster 1}, {UID 0, cluster 2},
7860    ///   {UID 1, cluster 0}, {UID 1, cluster 1}, {UID 1, cluster 2}, ...]
7861    ///
7862    /// Each value is an absolute count for the first packet in a sequence, and a
7863    /// delta thereafter. UIDs for which all clusters have a zero delta are
7864    /// omitted; a single non-zero value for any cluster for a UID will cause
7865    /// values for all clusters to be recorded.
7866    #[prost(uint64, repeated, tag = "3")]
7867    pub total_time_ms: ::prost::alloc::vec::Vec<u64>,
7868}
7869/// Generated by Android's SurfaceFlinger.
7870#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7871pub struct GraphicsFrameEvent {
7872    #[prost(message, optional, tag = "1")]
7873    pub buffer_event: ::core::option::Option<graphics_frame_event::BufferEvent>,
7874}
7875/// Nested message and enum types in `GraphicsFrameEvent`.
7876pub mod graphics_frame_event {
7877    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7878    pub struct BufferEvent {
7879        #[prost(uint32, optional, tag = "1")]
7880        pub frame_number: ::core::option::Option<u32>,
7881        #[prost(enumeration = "BufferEventType", optional, tag = "2")]
7882        pub r#type: ::core::option::Option<i32>,
7883        #[prost(string, optional, tag = "3")]
7884        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
7885        /// If no duration is set, the event is an instant event.
7886        #[prost(uint64, optional, tag = "4")]
7887        pub duration_ns: ::core::option::Option<u64>,
7888        /// Unique buffer identifier.
7889        #[prost(uint32, optional, tag = "5")]
7890        pub buffer_id: ::core::option::Option<u32>,
7891    }
7892    #[derive(
7893        Clone,
7894        Copy,
7895        Debug,
7896        PartialEq,
7897        Eq,
7898        Hash,
7899        PartialOrd,
7900        Ord,
7901        ::prost::Enumeration
7902    )]
7903    #[repr(i32)]
7904    pub enum BufferEventType {
7905        Unspecified = 0,
7906        Dequeue = 1,
7907        Queue = 2,
7908        Post = 3,
7909        AcquireFence = 4,
7910        Latch = 5,
7911        /// HWC will compose this buffer
7912        HwcCompositionQueued = 6,
7913        /// renderEngine composition
7914        FallbackComposition = 7,
7915        PresentFence = 8,
7916        ReleaseFence = 9,
7917        Modify = 10,
7918        Detach = 11,
7919        Attach = 12,
7920        Cancel = 13,
7921    }
7922    impl BufferEventType {
7923        /// String value of the enum field names used in the ProtoBuf definition.
7924        ///
7925        /// The values are not transformed in any way and thus are considered stable
7926        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7927        pub fn as_str_name(&self) -> &'static str {
7928            match self {
7929                Self::Unspecified => "UNSPECIFIED",
7930                Self::Dequeue => "DEQUEUE",
7931                Self::Queue => "QUEUE",
7932                Self::Post => "POST",
7933                Self::AcquireFence => "ACQUIRE_FENCE",
7934                Self::Latch => "LATCH",
7935                Self::HwcCompositionQueued => "HWC_COMPOSITION_QUEUED",
7936                Self::FallbackComposition => "FALLBACK_COMPOSITION",
7937                Self::PresentFence => "PRESENT_FENCE",
7938                Self::ReleaseFence => "RELEASE_FENCE",
7939                Self::Modify => "MODIFY",
7940                Self::Detach => "DETACH",
7941                Self::Attach => "ATTACH",
7942                Self::Cancel => "CANCEL",
7943            }
7944        }
7945        /// Creates an enum from field names used in the ProtoBuf definition.
7946        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7947            match value {
7948                "UNSPECIFIED" => Some(Self::Unspecified),
7949                "DEQUEUE" => Some(Self::Dequeue),
7950                "QUEUE" => Some(Self::Queue),
7951                "POST" => Some(Self::Post),
7952                "ACQUIRE_FENCE" => Some(Self::AcquireFence),
7953                "LATCH" => Some(Self::Latch),
7954                "HWC_COMPOSITION_QUEUED" => Some(Self::HwcCompositionQueued),
7955                "FALLBACK_COMPOSITION" => Some(Self::FallbackComposition),
7956                "PRESENT_FENCE" => Some(Self::PresentFence),
7957                "RELEASE_FENCE" => Some(Self::ReleaseFence),
7958                "MODIFY" => Some(Self::Modify),
7959                "DETACH" => Some(Self::Detach),
7960                "ATTACH" => Some(Self::Attach),
7961                "CANCEL" => Some(Self::Cancel),
7962                _ => None,
7963            }
7964        }
7965    }
7966}
7967#[derive(Clone, Copy, PartialEq, ::prost::Message)]
7968pub struct InitialDisplayState {
7969    /// Same values as android.view.Display.STATE_*
7970    #[prost(int32, optional, tag = "1")]
7971    pub display_state: ::core::option::Option<i32>,
7972    #[prost(double, optional, tag = "2")]
7973    pub brightness: ::core::option::Option<f64>,
7974}
7975#[derive(Clone, PartialEq, ::prost::Message)]
7976pub struct KernelWakelockData {
7977    /// This is only emitted when we encounter new wakelocks.
7978    #[prost(message, repeated, tag = "1")]
7979    pub wakelock: ::prost::alloc::vec::Vec<kernel_wakelock_data::Wakelock>,
7980    /// Interning id.
7981    #[prost(uint32, repeated, tag = "2")]
7982    pub wakelock_id: ::prost::alloc::vec::Vec<u32>,
7983    /// If we interned the wakelock name in this packet, this is the total time
7984    /// the wakelock has been held.
7985    /// If not, it's a delta from the last time we saw it.
7986    #[prost(uint64, repeated, tag = "3")]
7987    pub time_held_millis: ::prost::alloc::vec::Vec<u64>,
7988    #[prost(uint64, optional, tag = "4")]
7989    pub error_flags: ::core::option::Option<u64>,
7990}
7991/// Nested message and enum types in `KernelWakelockData`.
7992pub mod kernel_wakelock_data {
7993    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7994    pub struct Wakelock {
7995        /// Interning id.
7996        #[prost(uint32, optional, tag = "1")]
7997        pub wakelock_id: ::core::option::Option<u32>,
7998        /// Name of the wakelock.
7999        #[prost(string, optional, tag = "2")]
8000        pub wakelock_name: ::core::option::Option<::prost::alloc::string::String>,
8001        /// Type of the wakelock. We record data about both true kernel wakelocks
8002        /// and "native" wakelocks which are taken in userspace but are more
8003        /// conceptually similar to kernel wakelocks than normal userspace ones.
8004        #[prost(enumeration = "wakelock::Type", optional, tag = "3")]
8005        pub wakelock_type: ::core::option::Option<i32>,
8006    }
8007    /// Nested message and enum types in `Wakelock`.
8008    pub mod wakelock {
8009        #[derive(
8010            Clone,
8011            Copy,
8012            Debug,
8013            PartialEq,
8014            Eq,
8015            Hash,
8016            PartialOrd,
8017            Ord,
8018            ::prost::Enumeration
8019        )]
8020        #[repr(i32)]
8021        pub enum Type {
8022            WakelockTypeUnknown = 0,
8023            WakelockTypeKernel = 1,
8024            WakelockTypeNative = 2,
8025        }
8026        impl Type {
8027            /// String value of the enum field names used in the ProtoBuf definition.
8028            ///
8029            /// The values are not transformed in any way and thus are considered stable
8030            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8031            pub fn as_str_name(&self) -> &'static str {
8032                match self {
8033                    Self::WakelockTypeUnknown => "WAKELOCK_TYPE_UNKNOWN",
8034                    Self::WakelockTypeKernel => "WAKELOCK_TYPE_KERNEL",
8035                    Self::WakelockTypeNative => "WAKELOCK_TYPE_NATIVE",
8036                }
8037            }
8038            /// Creates an enum from field names used in the ProtoBuf definition.
8039            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8040                match value {
8041                    "WAKELOCK_TYPE_UNKNOWN" => Some(Self::WakelockTypeUnknown),
8042                    "WAKELOCK_TYPE_KERNEL" => Some(Self::WakelockTypeKernel),
8043                    "WAKELOCK_TYPE_NATIVE" => Some(Self::WakelockTypeNative),
8044                    _ => None,
8045                }
8046            }
8047        }
8048    }
8049}
8050#[derive(Clone, PartialEq, ::prost::Message)]
8051pub struct PackagesList {
8052    #[prost(message, repeated, tag = "1")]
8053    pub packages: ::prost::alloc::vec::Vec<packages_list::PackageInfo>,
8054    /// At least one error occurred parsing the packages.list.
8055    #[prost(bool, optional, tag = "2")]
8056    pub parse_error: ::core::option::Option<bool>,
8057    /// Failed to open / read packages.list.
8058    #[prost(bool, optional, tag = "3")]
8059    pub read_error: ::core::option::Option<bool>,
8060}
8061/// Nested message and enum types in `PackagesList`.
8062pub mod packages_list {
8063    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8064    pub struct PackageInfo {
8065        #[prost(string, optional, tag = "1")]
8066        pub name: ::core::option::Option<::prost::alloc::string::String>,
8067        #[prost(uint64, optional, tag = "2")]
8068        pub uid: ::core::option::Option<u64>,
8069        #[prost(bool, optional, tag = "3")]
8070        pub debuggable: ::core::option::Option<bool>,
8071        #[prost(bool, optional, tag = "4")]
8072        pub profileable_from_shell: ::core::option::Option<bool>,
8073        #[prost(int64, optional, tag = "5")]
8074        pub version_code: ::core::option::Option<i64>,
8075        #[prost(bool, optional, tag = "6")]
8076        pub profileable: ::core::option::Option<bool>,
8077    }
8078}
8079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8080pub struct PixelModemEvents {
8081    /// Pigweed-format dehydrated events.
8082    #[prost(bytes = "vec", repeated, tag = "1")]
8083    pub events: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
8084    /// Timestamps of the events, converted to CLOCK_BOOTTIME. The first
8085    /// timestamp is the absolute timestamp of the first event. Subsequent
8086    /// timestamps are deltas from the previous timestamp.
8087    /// The nth entry from `events` gets the nth entry here.
8088    #[prost(uint64, repeated, packed = "false", tag = "2")]
8089    pub event_time_nanos: ::prost::alloc::vec::Vec<u64>,
8090}
8091/// NB: this is not emitted in the trace but can be prepended later.
8092#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8093pub struct PixelModemTokenDatabase {
8094    /// Pigweed-format database to allow event rehydration.
8095    #[prost(bytes = "vec", optional, tag = "1")]
8096    pub database: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8097}
8098/// Injected into TracePacket by perfetto post-reboot recovery to record
8099/// recovered trace metadata.
8100#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8101pub struct RecoveredTraceInfo {
8102    #[prost(enumeration = "recovered_trace_info::Reason", optional, tag = "1")]
8103    pub reason: ::core::option::Option<i32>,
8104    /// Raw trace file size (in bytes) on disk prior to post-reboot recovery.
8105    #[prost(uint64, optional, tag = "2")]
8106    pub original_file_size_bytes: ::core::option::Option<u64>,
8107    /// Amount of trailing corrupted/incomplete bytes truncated during recovery.
8108    #[prost(uint64, optional, tag = "3")]
8109    pub bytes_truncated: ::core::option::Option<u64>,
8110}
8111/// Nested message and enum types in `RecoveredTraceInfo`.
8112pub mod recovered_trace_info {
8113    #[derive(
8114        Clone,
8115        Copy,
8116        Debug,
8117        PartialEq,
8118        Eq,
8119        Hash,
8120        PartialOrd,
8121        Ord,
8122        ::prost::Enumeration
8123    )]
8124    #[repr(i32)]
8125    pub enum Reason {
8126        Unspecified = 0,
8127        UnexpectedReboot = 1,
8128    }
8129    impl Reason {
8130        /// String value of the enum field names used in the ProtoBuf definition.
8131        ///
8132        /// The values are not transformed in any way and thus are considered stable
8133        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8134        pub fn as_str_name(&self) -> &'static str {
8135            match self {
8136                Self::Unspecified => "REASON_UNSPECIFIED",
8137                Self::UnexpectedReboot => "REASON_UNEXPECTED_REBOOT",
8138            }
8139        }
8140        /// Creates an enum from field names used in the ProtoBuf definition.
8141        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8142            match value {
8143                "REASON_UNSPECIFIED" => Some(Self::Unspecified),
8144                "REASON_UNEXPECTED_REBOOT" => Some(Self::UnexpectedReboot),
8145                _ => None,
8146            }
8147        }
8148    }
8149}
8150#[derive(Clone, PartialEq, ::prost::Message)]
8151pub struct AndroidUserList {
8152    #[prost(message, repeated, tag = "1")]
8153    pub users: ::prost::alloc::vec::Vec<android_user_list::UserInfo>,
8154    /// Error number
8155    #[prost(int32, optional, tag = "2")]
8156    pub error: ::core::option::Option<i32>,
8157}
8158/// Nested message and enum types in `AndroidUserList`.
8159pub mod android_user_list {
8160    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8161    pub struct UserInfo {
8162        /// eg. android.os.usertype.full.SYSTEM, android.os.usertype.full.SECONDARY
8163        #[prost(string, optional, tag = "1")]
8164        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
8165        #[prost(int32, optional, tag = "2")]
8166        pub uid: ::core::option::Option<i32>,
8167    }
8168}
8169/// This message is not intended to be written by the chrome on the device.
8170/// It's emitted on the host by the telemetry benchmark infrastructure (it's a
8171/// part of the trace that's written by the telemetry tracing agent).
8172#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8173pub struct ChromeBenchmarkMetadata {
8174    /// Time when the benchmark execution started (host unixtime in microseconds).
8175    #[prost(int64, optional, tag = "1")]
8176    pub benchmark_start_time_us: ::core::option::Option<i64>,
8177    /// Time when this particular story was run (host unixtime in microseconds).
8178    #[prost(int64, optional, tag = "2")]
8179    pub story_run_time_us: ::core::option::Option<i64>,
8180    /// Name of benchmark.
8181    #[prost(string, optional, tag = "3")]
8182    pub benchmark_name: ::core::option::Option<::prost::alloc::string::String>,
8183    /// Description of benchmark.
8184    #[prost(string, optional, tag = "4")]
8185    pub benchmark_description: ::core::option::Option<::prost::alloc::string::String>,
8186    /// Optional label.
8187    #[prost(string, optional, tag = "5")]
8188    pub label: ::core::option::Option<::prost::alloc::string::String>,
8189    /// Name of story.
8190    #[prost(string, optional, tag = "6")]
8191    pub story_name: ::core::option::Option<::prost::alloc::string::String>,
8192    /// List of story tags.
8193    #[prost(string, repeated, tag = "7")]
8194    pub story_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8195    /// Index of the story run (>0 if the same story was run several times).
8196    #[prost(int32, optional, tag = "8")]
8197    pub story_run_index: ::core::option::Option<i32>,
8198    /// Whether this run failed.
8199    #[prost(bool, optional, tag = "9")]
8200    pub had_failures: ::core::option::Option<bool>,
8201}
8202/// Metadata for chrome traces.
8203#[derive(Clone, PartialEq, ::prost::Message)]
8204pub struct ChromeMetadataPacket {
8205    #[prost(message, optional, tag = "1")]
8206    pub background_tracing_metadata: ::core::option::Option<BackgroundTracingMetadata>,
8207    /// Version code of Chrome used by Android's Play Store. This field is only set
8208    /// on Android.
8209    #[prost(int32, optional, tag = "2")]
8210    pub chrome_version_code: ::core::option::Option<i32>,
8211    /// Comma separated list of enabled categories for tracing. The list of
8212    /// possible category strings are listed in code
8213    /// base/trace_event/builtin_categories.h.
8214    #[prost(string, optional, tag = "3")]
8215    pub enabled_categories: ::core::option::Option<::prost::alloc::string::String>,
8216    /// List of Finch study/groups that apply to this trace.
8217    #[prost(message, repeated, tag = "4")]
8218    pub field_trial_hashes: ::prost::alloc::vec::Vec<chrome_metadata_packet::FinchHash>,
8219    /// The package name of the app which is being traced. This field is only set
8220    /// on Android.
8221    #[prost(string, optional, tag = "5")]
8222    pub app_package_name: ::core::option::Option<::prost::alloc::string::String>,
8223    /// A version number string for Chrome. This matches
8224    /// SystemProfileProto::app_version.
8225    #[prost(string, optional, tag = "6")]
8226    pub app_version: ::core::option::Option<::prost::alloc::string::String>,
8227    /// This matches SystemProfileProto::channel.
8228    #[prost(uint32, optional, tag = "7")]
8229    pub channel: ::core::option::Option<u32>,
8230    /// The user's operating system. This matches SystemProfileProto::OS::name.
8231    #[prost(string, optional, tag = "8")]
8232    pub os_name: ::core::option::Option<::prost::alloc::string::String>,
8233}
8234/// Nested message and enum types in `ChromeMetadataPacket`.
8235pub mod chrome_metadata_packet {
8236    /// Finch name and group based on the ActiveGroupId.
8237    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8238    pub struct FinchHash {
8239        #[prost(uint32, optional, tag = "1")]
8240        pub name: ::core::option::Option<u32>,
8241        #[prost(uint32, optional, tag = "2")]
8242        pub group: ::core::option::Option<u32>,
8243    }
8244}
8245/// Metadata related to background tracing scenarios, states and triggers.
8246#[derive(Clone, PartialEq, ::prost::Message)]
8247pub struct BackgroundTracingMetadata {
8248    /// Specifies the rule that caused the trace to be uploaded.
8249    #[prost(message, optional, tag = "1")]
8250    pub triggered_rule: ::core::option::Option<background_tracing_metadata::TriggerRule>,
8251    /// List of all active triggers in current session, when trace was triggered.
8252    #[prost(message, repeated, tag = "2")]
8253    pub active_rules: ::prost::alloc::vec::Vec<background_tracing_metadata::TriggerRule>,
8254    /// Hash of the scenario name.
8255    #[prost(fixed32, optional, tag = "3")]
8256    pub scenario_name_hash: ::core::option::Option<u32>,
8257}
8258/// Nested message and enum types in `BackgroundTracingMetadata`.
8259pub mod background_tracing_metadata {
8260    /// Information about a trigger rule defined in the experiment config.
8261    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8262    pub struct TriggerRule {
8263        #[prost(enumeration = "trigger_rule::TriggerType", optional, tag = "1")]
8264        pub trigger_type: ::core::option::Option<i32>,
8265        #[prost(message, optional, tag = "2")]
8266        pub histogram_rule: ::core::option::Option<trigger_rule::HistogramRule>,
8267        #[prost(message, optional, tag = "3")]
8268        pub named_rule: ::core::option::Option<trigger_rule::NamedRule>,
8269        /// Hash of the rule name.
8270        #[prost(fixed32, optional, tag = "4")]
8271        pub name_hash: ::core::option::Option<u32>,
8272    }
8273    /// Nested message and enum types in `TriggerRule`.
8274    pub mod trigger_rule {
8275        /// Configuration of histogram trigger.
8276        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8277        pub struct HistogramRule {
8278            /// UMA histogram name hash, same as HistogramEventProto.name_hash.
8279            #[prost(fixed64, optional, tag = "1")]
8280            pub histogram_name_hash: ::core::option::Option<u64>,
8281            /// Range of values of the histogram that activates trigger.
8282            #[prost(int64, optional, tag = "2")]
8283            pub histogram_min_trigger: ::core::option::Option<i64>,
8284            #[prost(int64, optional, tag = "3")]
8285            pub histogram_max_trigger: ::core::option::Option<i64>,
8286        }
8287        /// Configuration of named trigger.
8288        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8289        pub struct NamedRule {
8290            #[prost(enumeration = "named_rule::EventType", optional, tag = "1")]
8291            pub event_type: ::core::option::Option<i32>,
8292            /// If |event_type| is CONTENT_TRIGGER, then this stores the hash of the
8293            /// content-trigger that actually fired.
8294            #[prost(fixed64, optional, tag = "2")]
8295            pub content_trigger_name_hash: ::core::option::Option<u64>,
8296        }
8297        /// Nested message and enum types in `NamedRule`.
8298        pub mod named_rule {
8299            #[derive(
8300                Clone,
8301                Copy,
8302                Debug,
8303                PartialEq,
8304                Eq,
8305                Hash,
8306                PartialOrd,
8307                Ord,
8308                ::prost::Enumeration
8309            )]
8310            #[repr(i32)]
8311            pub enum EventType {
8312                Unspecified = 0,
8313                SessionRestore = 1,
8314                Navigation = 2,
8315                Startup = 3,
8316                ReachedCode = 4,
8317                ContentTrigger = 5,
8318                TestRule = 1000,
8319            }
8320            impl EventType {
8321                /// String value of the enum field names used in the ProtoBuf definition.
8322                ///
8323                /// The values are not transformed in any way and thus are considered stable
8324                /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8325                pub fn as_str_name(&self) -> &'static str {
8326                    match self {
8327                        Self::Unspecified => "UNSPECIFIED",
8328                        Self::SessionRestore => "SESSION_RESTORE",
8329                        Self::Navigation => "NAVIGATION",
8330                        Self::Startup => "STARTUP",
8331                        Self::ReachedCode => "REACHED_CODE",
8332                        Self::ContentTrigger => "CONTENT_TRIGGER",
8333                        Self::TestRule => "TEST_RULE",
8334                    }
8335                }
8336                /// Creates an enum from field names used in the ProtoBuf definition.
8337                pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8338                    match value {
8339                        "UNSPECIFIED" => Some(Self::Unspecified),
8340                        "SESSION_RESTORE" => Some(Self::SessionRestore),
8341                        "NAVIGATION" => Some(Self::Navigation),
8342                        "STARTUP" => Some(Self::Startup),
8343                        "REACHED_CODE" => Some(Self::ReachedCode),
8344                        "CONTENT_TRIGGER" => Some(Self::ContentTrigger),
8345                        "TEST_RULE" => Some(Self::TestRule),
8346                        _ => None,
8347                    }
8348                }
8349            }
8350        }
8351        #[derive(
8352            Clone,
8353            Copy,
8354            Debug,
8355            PartialEq,
8356            Eq,
8357            Hash,
8358            PartialOrd,
8359            Ord,
8360            ::prost::Enumeration
8361        )]
8362        #[repr(i32)]
8363        pub enum TriggerType {
8364            TriggerUnspecified = 0,
8365            /// Traces are triggered by specific range of values of an UMA histogram.
8366            MonitorAndDumpWhenSpecificHistogramAndValue = 1,
8367            /// Traces are triggered by specific named events in chromium codebase,
8368            /// like "second-update-failure".
8369            MonitorAndDumpWhenTriggerNamed = 2,
8370        }
8371        impl TriggerType {
8372            /// String value of the enum field names used in the ProtoBuf definition.
8373            ///
8374            /// The values are not transformed in any way and thus are considered stable
8375            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8376            pub fn as_str_name(&self) -> &'static str {
8377                match self {
8378                    Self::TriggerUnspecified => "TRIGGER_UNSPECIFIED",
8379                    Self::MonitorAndDumpWhenSpecificHistogramAndValue => {
8380                        "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE"
8381                    }
8382                    Self::MonitorAndDumpWhenTriggerNamed => {
8383                        "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED"
8384                    }
8385                }
8386            }
8387            /// Creates an enum from field names used in the ProtoBuf definition.
8388            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8389                match value {
8390                    "TRIGGER_UNSPECIFIED" => Some(Self::TriggerUnspecified),
8391                    "MONITOR_AND_DUMP_WHEN_SPECIFIC_HISTOGRAM_AND_VALUE" => {
8392                        Some(Self::MonitorAndDumpWhenSpecificHistogramAndValue)
8393                    }
8394                    "MONITOR_AND_DUMP_WHEN_TRIGGER_NAMED" => {
8395                        Some(Self::MonitorAndDumpWhenTriggerNamed)
8396                    }
8397                    _ => None,
8398                }
8399            }
8400        }
8401    }
8402}
8403#[derive(Clone, PartialEq, ::prost::Message)]
8404pub struct ChromeTracedValue {
8405    #[prost(enumeration = "chrome_traced_value::NestedType", optional, tag = "1")]
8406    pub nested_type: ::core::option::Option<i32>,
8407    #[prost(string, repeated, tag = "2")]
8408    pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8409    #[prost(message, repeated, tag = "3")]
8410    pub dict_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
8411    #[prost(message, repeated, tag = "4")]
8412    pub array_values: ::prost::alloc::vec::Vec<ChromeTracedValue>,
8413    #[prost(int32, optional, tag = "5")]
8414    pub int_value: ::core::option::Option<i32>,
8415    #[prost(double, optional, tag = "6")]
8416    pub double_value: ::core::option::Option<f64>,
8417    #[prost(bool, optional, tag = "7")]
8418    pub bool_value: ::core::option::Option<bool>,
8419    #[prost(string, optional, tag = "8")]
8420    pub string_value: ::core::option::Option<::prost::alloc::string::String>,
8421}
8422/// Nested message and enum types in `ChromeTracedValue`.
8423pub mod chrome_traced_value {
8424    #[derive(
8425        Clone,
8426        Copy,
8427        Debug,
8428        PartialEq,
8429        Eq,
8430        Hash,
8431        PartialOrd,
8432        Ord,
8433        ::prost::Enumeration
8434    )]
8435    #[repr(i32)]
8436    pub enum NestedType {
8437        Dict = 0,
8438        Array = 1,
8439    }
8440    impl NestedType {
8441        /// String value of the enum field names used in the ProtoBuf definition.
8442        ///
8443        /// The values are not transformed in any way and thus are considered stable
8444        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8445        pub fn as_str_name(&self) -> &'static str {
8446            match self {
8447                Self::Dict => "DICT",
8448                Self::Array => "ARRAY",
8449            }
8450        }
8451        /// Creates an enum from field names used in the ProtoBuf definition.
8452        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8453            match value {
8454                "DICT" => Some(Self::Dict),
8455                "ARRAY" => Some(Self::Array),
8456                _ => None,
8457            }
8458        }
8459    }
8460}
8461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8462pub struct ChromeStringTableEntry {
8463    #[prost(string, optional, tag = "1")]
8464    pub value: ::core::option::Option<::prost::alloc::string::String>,
8465    #[prost(int32, optional, tag = "2")]
8466    pub index: ::core::option::Option<i32>,
8467}
8468/// Deprecated, use TrackEvent protos instead.
8469#[derive(Clone, PartialEq, ::prost::Message)]
8470pub struct ChromeTraceEvent {
8471    #[prost(string, optional, tag = "1")]
8472    pub name: ::core::option::Option<::prost::alloc::string::String>,
8473    #[prost(int64, optional, tag = "2")]
8474    pub timestamp: ::core::option::Option<i64>,
8475    #[prost(int32, optional, tag = "3")]
8476    pub phase: ::core::option::Option<i32>,
8477    #[prost(int32, optional, tag = "4")]
8478    pub thread_id: ::core::option::Option<i32>,
8479    #[prost(int64, optional, tag = "5")]
8480    pub duration: ::core::option::Option<i64>,
8481    #[prost(int64, optional, tag = "6")]
8482    pub thread_duration: ::core::option::Option<i64>,
8483    #[prost(string, optional, tag = "7")]
8484    pub scope: ::core::option::Option<::prost::alloc::string::String>,
8485    #[prost(uint64, optional, tag = "8")]
8486    pub id: ::core::option::Option<u64>,
8487    #[prost(uint32, optional, tag = "9")]
8488    pub flags: ::core::option::Option<u32>,
8489    #[prost(string, optional, tag = "10")]
8490    pub category_group_name: ::core::option::Option<::prost::alloc::string::String>,
8491    #[prost(int32, optional, tag = "11")]
8492    pub process_id: ::core::option::Option<i32>,
8493    #[prost(int64, optional, tag = "12")]
8494    pub thread_timestamp: ::core::option::Option<i64>,
8495    #[prost(uint64, optional, tag = "13")]
8496    pub bind_id: ::core::option::Option<u64>,
8497    #[prost(message, repeated, tag = "14")]
8498    pub args: ::prost::alloc::vec::Vec<chrome_trace_event::Arg>,
8499    /// Takes precedence over respectively |name| and
8500    /// |category_group_name_index| if set,
8501    /// and are indices into |string_table|.
8502    #[prost(uint32, optional, tag = "15")]
8503    pub name_index: ::core::option::Option<u32>,
8504    #[prost(uint32, optional, tag = "16")]
8505    pub category_group_name_index: ::core::option::Option<u32>,
8506}
8507/// Nested message and enum types in `ChromeTraceEvent`.
8508pub mod chrome_trace_event {
8509    #[derive(Clone, PartialEq, ::prost::Message)]
8510    pub struct Arg {
8511        #[prost(string, optional, tag = "1")]
8512        pub name: ::core::option::Option<::prost::alloc::string::String>,
8513        /// Takes precedence over |name| if set,
8514        /// and is an index into |string_table|.
8515        #[prost(uint32, optional, tag = "9")]
8516        pub name_index: ::core::option::Option<u32>,
8517        #[prost(oneof = "arg::Value", tags = "2, 3, 4, 5, 6, 7, 8, 10")]
8518        pub value: ::core::option::Option<arg::Value>,
8519    }
8520    /// Nested message and enum types in `Arg`.
8521    pub mod arg {
8522        #[derive(Clone, PartialEq, ::prost::Oneof)]
8523        pub enum Value {
8524            #[prost(bool, tag = "2")]
8525            BoolValue(bool),
8526            #[prost(uint64, tag = "3")]
8527            UintValue(u64),
8528            #[prost(int64, tag = "4")]
8529            IntValue(i64),
8530            #[prost(double, tag = "5")]
8531            DoubleValue(f64),
8532            #[prost(string, tag = "6")]
8533            StringValue(::prost::alloc::string::String),
8534            /// Pointers are stored in a separate type as the JSON output treats them
8535            /// differently from other uint64 values.
8536            #[prost(uint64, tag = "7")]
8537            PointerValue(u64),
8538            #[prost(string, tag = "8")]
8539            JsonValue(::prost::alloc::string::String),
8540            #[prost(message, tag = "10")]
8541            TracedValue(super::super::ChromeTracedValue),
8542        }
8543    }
8544}
8545#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8546pub struct ChromeMetadata {
8547    #[prost(string, optional, tag = "1")]
8548    pub name: ::core::option::Option<::prost::alloc::string::String>,
8549    #[prost(oneof = "chrome_metadata::Value", tags = "2, 3, 4, 5")]
8550    pub value: ::core::option::Option<chrome_metadata::Value>,
8551}
8552/// Nested message and enum types in `ChromeMetadata`.
8553pub mod chrome_metadata {
8554    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8555    pub enum Value {
8556        #[prost(string, tag = "2")]
8557        StringValue(::prost::alloc::string::String),
8558        #[prost(bool, tag = "3")]
8559        BoolValue(bool),
8560        #[prost(int64, tag = "4")]
8561        IntValue(i64),
8562        #[prost(string, tag = "5")]
8563        JsonValue(::prost::alloc::string::String),
8564    }
8565}
8566/// Subtraces produced in legacy json format by Chrome tracing agents not yet
8567/// updated to support the new binary format, e.g. ETW and CrOS ARC.
8568/// TODO(eseckler): Update these agents to become perfetto producers.
8569#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8570pub struct ChromeLegacyJsonTrace {
8571    #[prost(enumeration = "chrome_legacy_json_trace::TraceType", optional, tag = "1")]
8572    pub r#type: ::core::option::Option<i32>,
8573    #[prost(string, optional, tag = "2")]
8574    pub data: ::core::option::Option<::prost::alloc::string::String>,
8575}
8576/// Nested message and enum types in `ChromeLegacyJsonTrace`.
8577pub mod chrome_legacy_json_trace {
8578    #[derive(
8579        Clone,
8580        Copy,
8581        Debug,
8582        PartialEq,
8583        Eq,
8584        Hash,
8585        PartialOrd,
8586        Ord,
8587        ::prost::Enumeration
8588    )]
8589    #[repr(i32)]
8590    pub enum TraceType {
8591        UserTrace = 0,
8592        /// Deprecated.
8593        SystemTrace = 1,
8594    }
8595    impl TraceType {
8596        /// String value of the enum field names used in the ProtoBuf definition.
8597        ///
8598        /// The values are not transformed in any way and thus are considered stable
8599        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8600        pub fn as_str_name(&self) -> &'static str {
8601            match self {
8602                Self::UserTrace => "USER_TRACE",
8603                Self::SystemTrace => "SYSTEM_TRACE",
8604            }
8605        }
8606        /// Creates an enum from field names used in the ProtoBuf definition.
8607        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8608            match value {
8609                "USER_TRACE" => Some(Self::UserTrace),
8610                "SYSTEM_TRACE" => Some(Self::SystemTrace),
8611                _ => None,
8612            }
8613        }
8614    }
8615}
8616#[derive(Clone, PartialEq, ::prost::Message)]
8617pub struct ChromeEventBundle {
8618    /// Deprecated, use TrackEvent protos instead.
8619    #[deprecated]
8620    #[prost(message, repeated, tag = "1")]
8621    pub trace_events: ::prost::alloc::vec::Vec<ChromeTraceEvent>,
8622    /// TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
8623    /// which contains typed fields.
8624    #[prost(message, repeated, tag = "2")]
8625    pub metadata: ::prost::alloc::vec::Vec<ChromeMetadata>,
8626    /// ftrace output from CrOS and Cast system tracing agents.
8627    /// TODO(eseckler): Replace system traces with native perfetto service.
8628    #[prost(string, repeated, tag = "4")]
8629    pub legacy_ftrace_output: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
8630    #[prost(message, repeated, tag = "5")]
8631    pub legacy_json_trace: ::prost::alloc::vec::Vec<ChromeLegacyJsonTrace>,
8632    /// Contents of a string table that's valid for
8633    /// the whole ChromeEventBundle entry.
8634    #[deprecated]
8635    #[prost(message, repeated, tag = "3")]
8636    pub string_table: ::prost::alloc::vec::Vec<ChromeStringTableEntry>,
8637}
8638/// Information about a specific trigger during a background tracing scenario
8639/// Associated packet timestamps are useful to delimitate a scenario range in a
8640/// trace. Triggers are also useful for filtering traces.
8641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8642pub struct ChromeTrigger {
8643    /// Name of the trigger which was received.
8644    #[prost(string, optional, tag = "1")]
8645    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
8646    /// SHA1 hash of the trigger name.
8647    #[prost(fixed32, optional, tag = "2")]
8648    pub trigger_name_hash: ::core::option::Option<u32>,
8649    /// Flow id which should terminate on this trigger.
8650    #[prost(fixed64, optional, tag = "3")]
8651    pub flow_id: ::core::option::Option<u64>,
8652}
8653/// These are the protos for the V8 data source.
8654///
8655/// All events are associated to a V8 isolate instance. There can be multiple
8656/// instances associated to a given thread, although this is rare.
8657///
8658/// Generated code in V8 is allocated in the V8 heap (in a special executeable
8659/// section), this means that code can be garbage collected (when no longer used)
8660/// or can be moved around (e.g. during heap compactation). This means that a
8661/// given callsite might correspond to function `A` at one point in time and to
8662/// function `B` later on.
8663/// In addition V8 code has various levels of optimization, so a function might
8664/// have multiple associated code snippets.
8665///
8666/// V8 does not track code deletion, so we have to indirectly infer it by
8667/// detecting code overlaps, if a newer code creation event overlaps with older
8668/// code we need to asume that the old code was deleted. Code moves are logged,
8669/// and there is an event to track those.
8670///
8671/// Strings used by V8 can have different encodings, instead of coverting to a
8672/// common encoding (e.g. UTF-8) on device is expensive. Instead we send the
8673/// "raw" string and do the convestion at trace ingestion time.
8674///
8675/// ATTENTION: There is some overhead in using a message (as opossed to having
8676/// the `oneof encoded_string`` direcly embedded in the message), so use this
8677/// message in places were these extra bytes don't matter that much.
8678/// Next id: 5
8679#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8680pub struct V8String {
8681    #[prost(oneof = "v8_string::EncodedString", tags = "1, 2, 3")]
8682    pub encoded_string: ::core::option::Option<v8_string::EncodedString>,
8683}
8684/// Nested message and enum types in `V8String`.
8685pub mod v8_string {
8686    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8687    pub enum EncodedString {
8688        /// ISO/IEC 8859-1:1998 encoding aka latin1
8689        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8690        #[prost(bytes, tag = "1")]
8691        Latin1(::prost::alloc::vec::Vec<u8>),
8692        /// UTF-16 Little Endian Encoding
8693        #[prost(bytes, tag = "2")]
8694        Utf16Le(::prost::alloc::vec::Vec<u8>),
8695        /// UTF-16 Big Endian Encoding
8696        #[prost(bytes, tag = "3")]
8697        Utf16Be(::prost::alloc::vec::Vec<u8>),
8698    }
8699}
8700/// Interned version of V8String
8701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8702pub struct InternedV8String {
8703    #[prost(uint64, optional, tag = "1")]
8704    pub iid: ::core::option::Option<u64>,
8705    /// We inline the fields in V8String here to save some bytes in the serialized
8706    /// proto format. Interning is about saving bytes so this makes sense here.
8707    #[prost(oneof = "interned_v8_string::EncodedString", tags = "2, 3, 4")]
8708    pub encoded_string: ::core::option::Option<interned_v8_string::EncodedString>,
8709}
8710/// Nested message and enum types in `InternedV8String`.
8711pub mod interned_v8_string {
8712    /// We inline the fields in V8String here to save some bytes in the serialized
8713    /// proto format. Interning is about saving bytes so this makes sense here.
8714    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
8715    pub enum EncodedString {
8716        /// ISO/IEC 8859-1:1998 encoding aka latin1
8717        /// <https://en.wikipedia.org/wiki/ISO/IEC_8859-1>
8718        #[prost(bytes, tag = "2")]
8719        Latin1(::prost::alloc::vec::Vec<u8>),
8720        /// UTF-16 Little Endian Encoding
8721        #[prost(bytes, tag = "3")]
8722        Utf16Le(::prost::alloc::vec::Vec<u8>),
8723        /// UTF-16 Big Endian Encoding
8724        #[prost(bytes, tag = "4")]
8725        Utf16Be(::prost::alloc::vec::Vec<u8>),
8726    }
8727}
8728/// Represents a script that was compiled to generate code. Some V8 code is
8729/// generated out of scripts and will reference a V8Script other types of code
8730/// will not (e.g. builtins).
8731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8732pub struct InternedV8JsScript {
8733    #[prost(uint64, optional, tag = "1")]
8734    pub iid: ::core::option::Option<u64>,
8735    /// Unique in a given isolate
8736    #[prost(int32, optional, tag = "2")]
8737    pub script_id: ::core::option::Option<i32>,
8738    #[prost(enumeration = "interned_v8_js_script::Type", optional, tag = "3")]
8739    pub r#type: ::core::option::Option<i32>,
8740    #[prost(message, optional, tag = "4")]
8741    pub name: ::core::option::Option<V8String>,
8742    /// Actual source of the script
8743    #[prost(message, optional, tag = "5")]
8744    pub source: ::core::option::Option<V8String>,
8745}
8746/// Nested message and enum types in `InternedV8JsScript`.
8747pub mod interned_v8_js_script {
8748    #[derive(
8749        Clone,
8750        Copy,
8751        Debug,
8752        PartialEq,
8753        Eq,
8754        Hash,
8755        PartialOrd,
8756        Ord,
8757        ::prost::Enumeration
8758    )]
8759    #[repr(i32)]
8760    pub enum Type {
8761        Unknown = 0,
8762        Normal = 1,
8763        Eval = 2,
8764        Module = 3,
8765        Native = 4,
8766        Extension = 5,
8767        Inspector = 6,
8768    }
8769    impl Type {
8770        /// String value of the enum field names used in the ProtoBuf definition.
8771        ///
8772        /// The values are not transformed in any way and thus are considered stable
8773        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8774        pub fn as_str_name(&self) -> &'static str {
8775            match self {
8776                Self::Unknown => "TYPE_UNKNOWN",
8777                Self::Normal => "TYPE_NORMAL",
8778                Self::Eval => "TYPE_EVAL",
8779                Self::Module => "TYPE_MODULE",
8780                Self::Native => "TYPE_NATIVE",
8781                Self::Extension => "TYPE_EXTENSION",
8782                Self::Inspector => "TYPE_INSPECTOR",
8783            }
8784        }
8785        /// Creates an enum from field names used in the ProtoBuf definition.
8786        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8787            match value {
8788                "TYPE_UNKNOWN" => Some(Self::Unknown),
8789                "TYPE_NORMAL" => Some(Self::Normal),
8790                "TYPE_EVAL" => Some(Self::Eval),
8791                "TYPE_MODULE" => Some(Self::Module),
8792                "TYPE_NATIVE" => Some(Self::Native),
8793                "TYPE_EXTENSION" => Some(Self::Extension),
8794                "TYPE_INSPECTOR" => Some(Self::Inspector),
8795                _ => None,
8796            }
8797        }
8798    }
8799}
8800#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8801pub struct InternedV8WasmScript {
8802    #[prost(uint64, optional, tag = "1")]
8803    pub iid: ::core::option::Option<u64>,
8804    /// Unique in a given isolate
8805    #[prost(int32, optional, tag = "2")]
8806    pub script_id: ::core::option::Option<i32>,
8807    #[prost(string, optional, tag = "3")]
8808    pub url: ::core::option::Option<::prost::alloc::string::String>,
8809    /// Raw transferred wasm native module wire bytes.
8810    #[prost(bytes = "vec", optional, tag = "4")]
8811    pub wire_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8812}
8813#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8814pub struct InternedV8JsFunction {
8815    #[prost(uint64, optional, tag = "1")]
8816    pub iid: ::core::option::Option<u64>,
8817    #[prost(uint64, optional, tag = "2")]
8818    pub v8_js_function_name_iid: ::core::option::Option<u64>,
8819    #[prost(uint64, optional, tag = "3")]
8820    pub v8_js_script_iid: ::core::option::Option<u64>,
8821    #[prost(bool, optional, tag = "4")]
8822    pub is_toplevel: ::core::option::Option<bool>,
8823    #[prost(enumeration = "interned_v8_js_function::Kind", optional, tag = "5")]
8824    pub kind: ::core::option::Option<i32>,
8825    /// Where in the script source this function is defined. This is counted in
8826    /// bytes not characters.
8827    #[prost(uint32, optional, tag = "6")]
8828    pub byte_offset: ::core::option::Option<u32>,
8829    #[prost(uint32, optional, tag = "7")]
8830    pub line: ::core::option::Option<u32>,
8831    #[prost(uint32, optional, tag = "8")]
8832    pub column: ::core::option::Option<u32>,
8833}
8834/// Nested message and enum types in `InternedV8JsFunction`.
8835pub mod interned_v8_js_function {
8836    #[derive(
8837        Clone,
8838        Copy,
8839        Debug,
8840        PartialEq,
8841        Eq,
8842        Hash,
8843        PartialOrd,
8844        Ord,
8845        ::prost::Enumeration
8846    )]
8847    #[repr(i32)]
8848    pub enum Kind {
8849        Unknown = 0,
8850        NormalFunction = 1,
8851        Module = 2,
8852        AsyncModule = 3,
8853        BaseConstructor = 4,
8854        DefaultBaseConstructor = 5,
8855        DefaultDerivedConstructor = 6,
8856        DerivedConstructor = 7,
8857        GetterFunction = 8,
8858        StaticGetterFunction = 9,
8859        SetterFunction = 10,
8860        StaticSetterFunction = 11,
8861        ArrowFunction = 12,
8862        AsyncArrowFunction = 13,
8863        AsyncFunction = 14,
8864        AsyncConciseMethod = 15,
8865        StaticAsyncConciseMethod = 16,
8866        AsyncConciseGeneratorMethod = 17,
8867        StaticAsyncConciseGeneratorMethod = 18,
8868        AsyncGeneratorFunction = 19,
8869        GeneratorFunction = 20,
8870        ConciseGeneratorMethod = 21,
8871        StaticConciseGeneratorMethod = 22,
8872        ConciseMethod = 23,
8873        StaticConciseMethod = 24,
8874        ClassMembersInitializerFunction = 25,
8875        ClassStaticInitializerFunction = 26,
8876        Invalid = 27,
8877    }
8878    impl Kind {
8879        /// String value of the enum field names used in the ProtoBuf definition.
8880        ///
8881        /// The values are not transformed in any way and thus are considered stable
8882        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8883        pub fn as_str_name(&self) -> &'static str {
8884            match self {
8885                Self::Unknown => "KIND_UNKNOWN",
8886                Self::NormalFunction => "KIND_NORMAL_FUNCTION",
8887                Self::Module => "KIND_MODULE",
8888                Self::AsyncModule => "KIND_ASYNC_MODULE",
8889                Self::BaseConstructor => "KIND_BASE_CONSTRUCTOR",
8890                Self::DefaultBaseConstructor => "KIND_DEFAULT_BASE_CONSTRUCTOR",
8891                Self::DefaultDerivedConstructor => "KIND_DEFAULT_DERIVED_CONSTRUCTOR",
8892                Self::DerivedConstructor => "KIND_DERIVED_CONSTRUCTOR",
8893                Self::GetterFunction => "KIND_GETTER_FUNCTION",
8894                Self::StaticGetterFunction => "KIND_STATIC_GETTER_FUNCTION",
8895                Self::SetterFunction => "KIND_SETTER_FUNCTION",
8896                Self::StaticSetterFunction => "KIND_STATIC_SETTER_FUNCTION",
8897                Self::ArrowFunction => "KIND_ARROW_FUNCTION",
8898                Self::AsyncArrowFunction => "KIND_ASYNC_ARROW_FUNCTION",
8899                Self::AsyncFunction => "KIND_ASYNC_FUNCTION",
8900                Self::AsyncConciseMethod => "KIND_ASYNC_CONCISE_METHOD",
8901                Self::StaticAsyncConciseMethod => "KIND_STATIC_ASYNC_CONCISE_METHOD",
8902                Self::AsyncConciseGeneratorMethod => {
8903                    "KIND_ASYNC_CONCISE_GENERATOR_METHOD"
8904                }
8905                Self::StaticAsyncConciseGeneratorMethod => {
8906                    "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD"
8907                }
8908                Self::AsyncGeneratorFunction => "KIND_ASYNC_GENERATOR_FUNCTION",
8909                Self::GeneratorFunction => "KIND_GENERATOR_FUNCTION",
8910                Self::ConciseGeneratorMethod => "KIND_CONCISE_GENERATOR_METHOD",
8911                Self::StaticConciseGeneratorMethod => {
8912                    "KIND_STATIC_CONCISE_GENERATOR_METHOD"
8913                }
8914                Self::ConciseMethod => "KIND_CONCISE_METHOD",
8915                Self::StaticConciseMethod => "KIND_STATIC_CONCISE_METHOD",
8916                Self::ClassMembersInitializerFunction => {
8917                    "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION"
8918                }
8919                Self::ClassStaticInitializerFunction => {
8920                    "KIND_CLASS_STATIC_INITIALIZER_FUNCTION"
8921                }
8922                Self::Invalid => "KIND_INVALID",
8923            }
8924        }
8925        /// Creates an enum from field names used in the ProtoBuf definition.
8926        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8927            match value {
8928                "KIND_UNKNOWN" => Some(Self::Unknown),
8929                "KIND_NORMAL_FUNCTION" => Some(Self::NormalFunction),
8930                "KIND_MODULE" => Some(Self::Module),
8931                "KIND_ASYNC_MODULE" => Some(Self::AsyncModule),
8932                "KIND_BASE_CONSTRUCTOR" => Some(Self::BaseConstructor),
8933                "KIND_DEFAULT_BASE_CONSTRUCTOR" => Some(Self::DefaultBaseConstructor),
8934                "KIND_DEFAULT_DERIVED_CONSTRUCTOR" => {
8935                    Some(Self::DefaultDerivedConstructor)
8936                }
8937                "KIND_DERIVED_CONSTRUCTOR" => Some(Self::DerivedConstructor),
8938                "KIND_GETTER_FUNCTION" => Some(Self::GetterFunction),
8939                "KIND_STATIC_GETTER_FUNCTION" => Some(Self::StaticGetterFunction),
8940                "KIND_SETTER_FUNCTION" => Some(Self::SetterFunction),
8941                "KIND_STATIC_SETTER_FUNCTION" => Some(Self::StaticSetterFunction),
8942                "KIND_ARROW_FUNCTION" => Some(Self::ArrowFunction),
8943                "KIND_ASYNC_ARROW_FUNCTION" => Some(Self::AsyncArrowFunction),
8944                "KIND_ASYNC_FUNCTION" => Some(Self::AsyncFunction),
8945                "KIND_ASYNC_CONCISE_METHOD" => Some(Self::AsyncConciseMethod),
8946                "KIND_STATIC_ASYNC_CONCISE_METHOD" => {
8947                    Some(Self::StaticAsyncConciseMethod)
8948                }
8949                "KIND_ASYNC_CONCISE_GENERATOR_METHOD" => {
8950                    Some(Self::AsyncConciseGeneratorMethod)
8951                }
8952                "KIND_STATIC_ASYNC_CONCISE_GENERATOR_METHOD" => {
8953                    Some(Self::StaticAsyncConciseGeneratorMethod)
8954                }
8955                "KIND_ASYNC_GENERATOR_FUNCTION" => Some(Self::AsyncGeneratorFunction),
8956                "KIND_GENERATOR_FUNCTION" => Some(Self::GeneratorFunction),
8957                "KIND_CONCISE_GENERATOR_METHOD" => Some(Self::ConciseGeneratorMethod),
8958                "KIND_STATIC_CONCISE_GENERATOR_METHOD" => {
8959                    Some(Self::StaticConciseGeneratorMethod)
8960                }
8961                "KIND_CONCISE_METHOD" => Some(Self::ConciseMethod),
8962                "KIND_STATIC_CONCISE_METHOD" => Some(Self::StaticConciseMethod),
8963                "KIND_CLASS_MEMBERS_INITIALIZER_FUNCTION" => {
8964                    Some(Self::ClassMembersInitializerFunction)
8965                }
8966                "KIND_CLASS_STATIC_INITIALIZER_FUNCTION" => {
8967                    Some(Self::ClassStaticInitializerFunction)
8968                }
8969                "KIND_INVALID" => Some(Self::Invalid),
8970                _ => None,
8971            }
8972        }
8973    }
8974}
8975/// A V8 Isolate instance. A V8 Isolate represents an isolated instance of the V8
8976/// engine.
8977#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8978pub struct InternedV8Isolate {
8979    #[prost(uint64, optional, tag = "1")]
8980    pub iid: ::core::option::Option<u64>,
8981    #[prost(uint32, optional, tag = "2")]
8982    pub pid: ::core::option::Option<u32>,
8983    /// Process unique isolate id.
8984    #[prost(int32, optional, tag = "3")]
8985    pub isolate_id: ::core::option::Option<i32>,
8986    #[prost(message, optional, tag = "4")]
8987    pub code_range: ::core::option::Option<interned_v8_isolate::CodeRange>,
8988    /// The embedded blob holds code for built in functions that are precompiled in
8989    /// the V8 library.
8990    #[prost(uint64, optional, tag = "5")]
8991    pub embedded_blob_code_start_address: ::core::option::Option<u64>,
8992    #[prost(uint64, optional, tag = "6")]
8993    pub embedded_blob_code_size: ::core::option::Option<u64>,
8994}
8995/// Nested message and enum types in `InternedV8Isolate`.
8996pub mod interned_v8_isolate {
8997    /// A code range is a virtual memory cage that may contain executable code.
8998    /// Depending on the Isolate settings the Isolate might have one or not.
8999    /// See:
9000    /// <https://source.chromium.org/chromium/chromium/src/+/main:v8/src/heap/code-range.h>
9001    /// If the isolate defines code range this will be tracked here.
9002    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9003    pub struct CodeRange {
9004        #[prost(uint64, optional, tag = "1")]
9005        pub base_address: ::core::option::Option<u64>,
9006        #[prost(uint64, optional, tag = "2")]
9007        pub size: ::core::option::Option<u64>,
9008        /// Used when short builtin calls are enabled, where embedded builtins are
9009        /// copied into the CodeRange so calls can be nearer.
9010        #[prost(uint64, optional, tag = "3")]
9011        pub embedded_blob_code_copy_start_address: ::core::option::Option<u64>,
9012        /// Whether this code range is shared with other Isolates in the same process
9013        #[prost(bool, optional, tag = "4")]
9014        pub is_process_wide: ::core::option::Option<bool>,
9015    }
9016}
9017#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9018pub struct V8JsCode {
9019    #[prost(uint64, optional, tag = "1")]
9020    pub v8_isolate_iid: ::core::option::Option<u64>,
9021    #[prost(uint32, optional, tag = "2")]
9022    pub tid: ::core::option::Option<u32>,
9023    #[prost(uint64, optional, tag = "3")]
9024    pub v8_js_function_iid: ::core::option::Option<u64>,
9025    #[prost(enumeration = "v8_js_code::Tier", optional, tag = "4")]
9026    pub tier: ::core::option::Option<i32>,
9027    #[prost(uint64, optional, tag = "5")]
9028    pub instruction_start: ::core::option::Option<u64>,
9029    #[prost(uint64, optional, tag = "6")]
9030    pub instruction_size_bytes: ::core::option::Option<u64>,
9031    #[prost(oneof = "v8_js_code::Instructions", tags = "7, 8")]
9032    pub instructions: ::core::option::Option<v8_js_code::Instructions>,
9033    #[prost(oneof = "v8_js_code::SourceMap", tags = "9, 10, 11")]
9034    pub source_map: ::core::option::Option<v8_js_code::SourceMap>,
9035}
9036/// Nested message and enum types in `V8JsCode`.
9037pub mod v8_js_code {
9038    #[derive(
9039        Clone,
9040        Copy,
9041        Debug,
9042        PartialEq,
9043        Eq,
9044        Hash,
9045        PartialOrd,
9046        Ord,
9047        ::prost::Enumeration
9048    )]
9049    #[repr(i32)]
9050    pub enum Tier {
9051        Unknown = 0,
9052        Ignition = 1,
9053        Sparkplug = 2,
9054        Maglev = 3,
9055        Turboshaft = 4,
9056        Turbofan = 5,
9057    }
9058    impl Tier {
9059        /// String value of the enum field names used in the ProtoBuf definition.
9060        ///
9061        /// The values are not transformed in any way and thus are considered stable
9062        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9063        pub fn as_str_name(&self) -> &'static str {
9064            match self {
9065                Self::Unknown => "TIER_UNKNOWN",
9066                Self::Ignition => "TIER_IGNITION",
9067                Self::Sparkplug => "TIER_SPARKPLUG",
9068                Self::Maglev => "TIER_MAGLEV",
9069                Self::Turboshaft => "TIER_TURBOSHAFT",
9070                Self::Turbofan => "TIER_TURBOFAN",
9071            }
9072        }
9073        /// Creates an enum from field names used in the ProtoBuf definition.
9074        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9075            match value {
9076                "TIER_UNKNOWN" => Some(Self::Unknown),
9077                "TIER_IGNITION" => Some(Self::Ignition),
9078                "TIER_SPARKPLUG" => Some(Self::Sparkplug),
9079                "TIER_MAGLEV" => Some(Self::Maglev),
9080                "TIER_TURBOSHAFT" => Some(Self::Turboshaft),
9081                "TIER_TURBOFAN" => Some(Self::Turbofan),
9082                _ => None,
9083            }
9084        }
9085    }
9086    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9087    pub enum Instructions {
9088        #[prost(bytes, tag = "7")]
9089        MachineCode(::prost::alloc::vec::Vec<u8>),
9090        #[prost(bytes, tag = "8")]
9091        Bytecode(::prost::alloc::vec::Vec<u8>),
9092    }
9093    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9094    pub enum SourceMap {
9095        /// For Ignition / bytecode:
9096        ///   - Maps bytecode-ranges to byte offsets (for the same script as the
9097        ///     related js function)
9098        #[prost(bytes, tag = "9")]
9099        SourcePositions(::prost::alloc::vec::Vec<u8>),
9100        /// For Sparkplug code:
9101        ///   - Maps machine-code ranges to bytecode ranges in the corresponding
9102        ///     ignition code object for the same js-function.
9103        #[prost(bytes, tag = "10")]
9104        BytecodePositions(::prost::alloc::vec::Vec<u8>),
9105        /// For optimized code:
9106        /// - Maps machine-code-ranges to bytecode ranges in various
9107        ///    ignition code objects (inlining might happen from multiple functions)
9108        #[prost(bytes, tag = "11")]
9109        InlinedBytecodePositions(::prost::alloc::vec::Vec<u8>),
9110    }
9111}
9112#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9113pub struct V8InternalCode {
9114    #[prost(uint64, optional, tag = "1")]
9115    pub v8_isolate_iid: ::core::option::Option<u64>,
9116    #[prost(uint32, optional, tag = "2")]
9117    pub tid: ::core::option::Option<u32>,
9118    #[prost(string, optional, tag = "3")]
9119    pub name: ::core::option::Option<::prost::alloc::string::String>,
9120    #[prost(enumeration = "v8_internal_code::Type", optional, tag = "4")]
9121    pub r#type: ::core::option::Option<i32>,
9122    #[prost(int32, optional, tag = "5")]
9123    pub builtin_id: ::core::option::Option<i32>,
9124    #[prost(uint64, optional, tag = "6")]
9125    pub instruction_start: ::core::option::Option<u64>,
9126    #[prost(uint64, optional, tag = "7")]
9127    pub instruction_size_bytes: ::core::option::Option<u64>,
9128    #[prost(bytes = "vec", optional, tag = "8")]
9129    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9130}
9131/// Nested message and enum types in `V8InternalCode`.
9132pub mod v8_internal_code {
9133    #[derive(
9134        Clone,
9135        Copy,
9136        Debug,
9137        PartialEq,
9138        Eq,
9139        Hash,
9140        PartialOrd,
9141        Ord,
9142        ::prost::Enumeration
9143    )]
9144    #[repr(i32)]
9145    pub enum Type {
9146        Unknown = 0,
9147        BytecodeHandler = 1,
9148        ForTesting = 2,
9149        Builtin = 3,
9150        WasmFunction = 4,
9151        WasmToCapiFunction = 5,
9152        WasmToJsFunction = 6,
9153        JsToWasmFunction = 7,
9154        JsToJsFunction = 8,
9155        CWasmEntry = 9,
9156    }
9157    impl Type {
9158        /// String value of the enum field names used in the ProtoBuf definition.
9159        ///
9160        /// The values are not transformed in any way and thus are considered stable
9161        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9162        pub fn as_str_name(&self) -> &'static str {
9163            match self {
9164                Self::Unknown => "TYPE_UNKNOWN",
9165                Self::BytecodeHandler => "TYPE_BYTECODE_HANDLER",
9166                Self::ForTesting => "TYPE_FOR_TESTING",
9167                Self::Builtin => "TYPE_BUILTIN",
9168                Self::WasmFunction => "TYPE_WASM_FUNCTION",
9169                Self::WasmToCapiFunction => "TYPE_WASM_TO_CAPI_FUNCTION",
9170                Self::WasmToJsFunction => "TYPE_WASM_TO_JS_FUNCTION",
9171                Self::JsToWasmFunction => "TYPE_JS_TO_WASM_FUNCTION",
9172                Self::JsToJsFunction => "TYPE_JS_TO_JS_FUNCTION",
9173                Self::CWasmEntry => "TYPE_C_WASM_ENTRY",
9174            }
9175        }
9176        /// Creates an enum from field names used in the ProtoBuf definition.
9177        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9178            match value {
9179                "TYPE_UNKNOWN" => Some(Self::Unknown),
9180                "TYPE_BYTECODE_HANDLER" => Some(Self::BytecodeHandler),
9181                "TYPE_FOR_TESTING" => Some(Self::ForTesting),
9182                "TYPE_BUILTIN" => Some(Self::Builtin),
9183                "TYPE_WASM_FUNCTION" => Some(Self::WasmFunction),
9184                "TYPE_WASM_TO_CAPI_FUNCTION" => Some(Self::WasmToCapiFunction),
9185                "TYPE_WASM_TO_JS_FUNCTION" => Some(Self::WasmToJsFunction),
9186                "TYPE_JS_TO_WASM_FUNCTION" => Some(Self::JsToWasmFunction),
9187                "TYPE_JS_TO_JS_FUNCTION" => Some(Self::JsToJsFunction),
9188                "TYPE_C_WASM_ENTRY" => Some(Self::CWasmEntry),
9189                _ => None,
9190            }
9191        }
9192    }
9193}
9194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9195pub struct V8WasmCode {
9196    #[prost(uint64, optional, tag = "1")]
9197    pub v8_isolate_iid: ::core::option::Option<u64>,
9198    #[prost(uint32, optional, tag = "2")]
9199    pub tid: ::core::option::Option<u32>,
9200    #[prost(uint64, optional, tag = "3")]
9201    pub v8_wasm_script_iid: ::core::option::Option<u64>,
9202    #[prost(string, optional, tag = "4")]
9203    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
9204    #[prost(enumeration = "v8_wasm_code::Tier", optional, tag = "5")]
9205    pub tier: ::core::option::Option<i32>,
9206    #[prost(int32, optional, tag = "6")]
9207    pub code_offset_in_module: ::core::option::Option<i32>,
9208    #[prost(uint64, optional, tag = "7")]
9209    pub instruction_start: ::core::option::Option<u64>,
9210    #[prost(uint64, optional, tag = "8")]
9211    pub instruction_size_bytes: ::core::option::Option<u64>,
9212    #[prost(bytes = "vec", optional, tag = "9")]
9213    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9214}
9215/// Nested message and enum types in `V8WasmCode`.
9216pub mod v8_wasm_code {
9217    #[derive(
9218        Clone,
9219        Copy,
9220        Debug,
9221        PartialEq,
9222        Eq,
9223        Hash,
9224        PartialOrd,
9225        Ord,
9226        ::prost::Enumeration
9227    )]
9228    #[repr(i32)]
9229    pub enum Tier {
9230        Unknown = 0,
9231        Liftoff = 1,
9232        Turbofan = 2,
9233    }
9234    impl Tier {
9235        /// String value of the enum field names used in the ProtoBuf definition.
9236        ///
9237        /// The values are not transformed in any way and thus are considered stable
9238        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9239        pub fn as_str_name(&self) -> &'static str {
9240            match self {
9241                Self::Unknown => "TIER_UNKNOWN",
9242                Self::Liftoff => "TIER_LIFTOFF",
9243                Self::Turbofan => "TIER_TURBOFAN",
9244            }
9245        }
9246        /// Creates an enum from field names used in the ProtoBuf definition.
9247        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9248            match value {
9249                "TIER_UNKNOWN" => Some(Self::Unknown),
9250                "TIER_LIFTOFF" => Some(Self::Liftoff),
9251                "TIER_TURBOFAN" => Some(Self::Turbofan),
9252                _ => None,
9253            }
9254        }
9255    }
9256}
9257#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9258pub struct V8RegExpCode {
9259    #[prost(uint64, optional, tag = "1")]
9260    pub v8_isolate_iid: ::core::option::Option<u64>,
9261    #[prost(uint32, optional, tag = "2")]
9262    pub tid: ::core::option::Option<u32>,
9263    #[prost(message, optional, tag = "3")]
9264    pub pattern: ::core::option::Option<V8String>,
9265    #[prost(uint64, optional, tag = "4")]
9266    pub instruction_start: ::core::option::Option<u64>,
9267    #[prost(uint64, optional, tag = "5")]
9268    pub instruction_size_bytes: ::core::option::Option<u64>,
9269    #[prost(bytes = "vec", optional, tag = "6")]
9270    pub machine_code: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
9271}
9272/// Move event for V8 code (JS / Wasm / Internal / Regexp) that was relocated in
9273/// memory by V8's GC.
9274#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9275pub struct V8CodeMove {
9276    #[prost(uint64, optional, tag = "1")]
9277    pub isolate_iid: ::core::option::Option<u64>,
9278    #[prost(uint32, optional, tag = "2")]
9279    pub tid: ::core::option::Option<u32>,
9280    #[prost(uint64, optional, tag = "3")]
9281    pub from_instruction_start_address: ::core::option::Option<u64>,
9282    #[prost(uint64, optional, tag = "4")]
9283    pub to_instruction_start_address: ::core::option::Option<u64>,
9284    #[prost(uint64, optional, tag = "5")]
9285    pub instruction_size_bytes: ::core::option::Option<u64>,
9286    #[prost(oneof = "v8_code_move::ToInstructions", tags = "6, 7")]
9287    pub to_instructions: ::core::option::Option<v8_code_move::ToInstructions>,
9288}
9289/// Nested message and enum types in `V8CodeMove`.
9290pub mod v8_code_move {
9291    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
9292    pub enum ToInstructions {
9293        #[prost(bytes, tag = "6")]
9294        ToMachineCode(::prost::alloc::vec::Vec<u8>),
9295        #[prost(bytes, tag = "7")]
9296        ToBytecode(::prost::alloc::vec::Vec<u8>),
9297    }
9298}
9299#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9300pub struct V8CodeDefaults {
9301    #[prost(uint32, optional, tag = "1")]
9302    pub tid: ::core::option::Option<u32>,
9303}
9304/// A snapshot of clock readings to allow for trace alignment.
9305#[derive(Clone, PartialEq, ::prost::Message)]
9306pub struct ClockSnapshot {
9307    #[prost(message, repeated, tag = "1")]
9308    pub clocks: ::prost::alloc::vec::Vec<clock_snapshot::Clock>,
9309    /// The authoritative clock domain for the trace. When set, this definitively
9310    /// overrides the trace time clock. If not set, the trace time clock remains
9311    /// at its default (BUILTIN_CLOCK_TRACE_FILE), unless a format-specific
9312    /// fallback applies (e.g. BOOTTIME for legacy proto traces without clock
9313    /// snapshots). Trace processor will attempt to translate packet/event
9314    /// timestamps from various data sources (and their chosen clock domains) to
9315    /// this domain during import.
9316    #[prost(enumeration = "BuiltinClock", optional, tag = "2")]
9317    pub primary_trace_clock: ::core::option::Option<i32>,
9318}
9319/// Nested message and enum types in `ClockSnapshot`.
9320pub mod clock_snapshot {
9321    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9322    pub struct Clock {
9323        /// Clock IDs have the following semantic:
9324        /// \[1, 63\]:    Builtin types, see BuiltinClock from
9325        ///              ../common/builtin_clock.proto.
9326        /// \[64, 127\]:  User-defined clocks. These clocks are sequence-scoped. They
9327        ///              are only valid within the same |trusted_packet_sequence_id|
9328        ///              (i.e. only for TracePacket(s) emitted by the same TraceWriter
9329        ///              that emitted the clock snapshot).
9330        /// \[128, MAX\]: Reserved for future use. The idea is to allow global clock
9331        ///              IDs and setting this ID to hash(full_clock_name) & ~127.
9332        #[prost(uint32, optional, tag = "1")]
9333        pub clock_id: ::core::option::Option<u32>,
9334        /// Absolute timestamp. Unit is ns unless specified otherwise by the
9335        /// unit_multiplier_ns field below.
9336        #[prost(uint64, optional, tag = "2")]
9337        pub timestamp: ::core::option::Option<u64>,
9338        /// When true each TracePacket's timestamp should be interpreted as a delta
9339        /// from the last TracePacket's timestamp (referencing this clock) emitted by
9340        /// the same packet_sequence_id. Should only be used for user-defined
9341        /// sequence-local clocks. The first packet timestamp after each
9342        /// ClockSnapshot that contains this clock is relative to the |timestamp| in
9343        /// the ClockSnapshot.
9344        #[prost(bool, optional, tag = "3")]
9345        pub is_incremental: ::core::option::Option<bool>,
9346        /// Allows to specify a custom unit different than the default (ns) for this
9347        /// clock domain.
9348        ///
9349        /// * A multiplier of 1000 means that a timestamp = 3 should be interpreted
9350        ///    as 3000 ns = 3 us.
9351        /// * All snapshots for the same clock within a trace need to use the same
9352        ///    unit.
9353        /// * `unit_multiplier_ns` is *not* supported for the `primary_trace_clock`.
9354        #[prost(uint64, optional, tag = "4")]
9355        pub unit_multiplier_ns: ::core::option::Option<u64>,
9356    }
9357    /// Nested message and enum types in `Clock`.
9358    pub mod clock {
9359        /// DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
9360        #[derive(
9361            Clone,
9362            Copy,
9363            Debug,
9364            PartialEq,
9365            Eq,
9366            Hash,
9367            PartialOrd,
9368            Ord,
9369            ::prost::Enumeration
9370        )]
9371        #[repr(i32)]
9372        pub enum BuiltinClocks {
9373            Unknown = 0,
9374            Realtime = 1,
9375            RealtimeCoarse = 2,
9376            Monotonic = 3,
9377            MonotonicCoarse = 4,
9378            MonotonicRaw = 5,
9379            Boottime = 6,
9380            BuiltinClockMaxId = 63,
9381        }
9382        impl BuiltinClocks {
9383            /// String value of the enum field names used in the ProtoBuf definition.
9384            ///
9385            /// The values are not transformed in any way and thus are considered stable
9386            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9387            pub fn as_str_name(&self) -> &'static str {
9388                match self {
9389                    Self::Unknown => "UNKNOWN",
9390                    Self::Realtime => "REALTIME",
9391                    Self::RealtimeCoarse => "REALTIME_COARSE",
9392                    Self::Monotonic => "MONOTONIC",
9393                    Self::MonotonicCoarse => "MONOTONIC_COARSE",
9394                    Self::MonotonicRaw => "MONOTONIC_RAW",
9395                    Self::Boottime => "BOOTTIME",
9396                    Self::BuiltinClockMaxId => "BUILTIN_CLOCK_MAX_ID",
9397                }
9398            }
9399            /// Creates an enum from field names used in the ProtoBuf definition.
9400            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9401                match value {
9402                    "UNKNOWN" => Some(Self::Unknown),
9403                    "REALTIME" => Some(Self::Realtime),
9404                    "REALTIME_COARSE" => Some(Self::RealtimeCoarse),
9405                    "MONOTONIC" => Some(Self::Monotonic),
9406                    "MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
9407                    "MONOTONIC_RAW" => Some(Self::MonotonicRaw),
9408                    "BOOTTIME" => Some(Self::Boottime),
9409                    "BUILTIN_CLOCK_MAX_ID" => Some(Self::BuiltinClockMaxId),
9410                    _ => None,
9411                }
9412            }
9413        }
9414    }
9415}
9416/// Proto definition based on the Thread_v2 CSwitch class definition
9417/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/cswitch>
9418#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9419pub struct CSwitchEtwEvent {
9420    /// New thread ID after the switch.
9421    #[prost(uint32, optional, tag = "1")]
9422    pub new_thread_id: ::core::option::Option<u32>,
9423    /// Previous thread ID.
9424    #[prost(uint32, optional, tag = "2")]
9425    pub old_thread_id: ::core::option::Option<u32>,
9426    /// Thread priority of the new thread.
9427    #[prost(sint32, optional, tag = "3")]
9428    pub new_thread_priority: ::core::option::Option<i32>,
9429    /// Thread priority of the previous thread.
9430    #[prost(sint32, optional, tag = "4")]
9431    pub old_thread_priority: ::core::option::Option<i32>,
9432    /// The index of the C-state that was last used by the processor. A value of 0
9433    /// represents the lightest idle state with higher values representing deeper
9434    /// C-states.
9435    #[prost(uint32, optional, tag = "5")]
9436    pub previous_c_state: ::core::option::Option<u32>,
9437    /// Ideal wait time of the previous thread.
9438    #[prost(sint32, optional, tag = "9")]
9439    pub old_thread_wait_ideal_processor: ::core::option::Option<i32>,
9440    /// Wait time for the new thread.
9441    #[prost(uint32, optional, tag = "10")]
9442    pub new_thread_wait_time: ::core::option::Option<u32>,
9443    #[prost(oneof = "c_switch_etw_event::OldThreadWaitReasonEnumOrInt", tags = "6, 11")]
9444    pub old_thread_wait_reason_enum_or_int: ::core::option::Option<
9445        c_switch_etw_event::OldThreadWaitReasonEnumOrInt,
9446    >,
9447    #[prost(oneof = "c_switch_etw_event::OldThreadWaitModeEnumOrInt", tags = "7, 12")]
9448    pub old_thread_wait_mode_enum_or_int: ::core::option::Option<
9449        c_switch_etw_event::OldThreadWaitModeEnumOrInt,
9450    >,
9451    #[prost(oneof = "c_switch_etw_event::OldThreadStateEnumOrInt", tags = "8, 13")]
9452    pub old_thread_state_enum_or_int: ::core::option::Option<
9453        c_switch_etw_event::OldThreadStateEnumOrInt,
9454    >,
9455}
9456/// Nested message and enum types in `CSwitchEtwEvent`.
9457pub mod c_switch_etw_event {
9458    /// Wait reason for the previous thread. The ordering is important as based on
9459    /// the OldThreadWaitReason definition from the link above. The following are
9460    /// the possible values:
9461    #[derive(
9462        Clone,
9463        Copy,
9464        Debug,
9465        PartialEq,
9466        Eq,
9467        Hash,
9468        PartialOrd,
9469        Ord,
9470        ::prost::Enumeration
9471    )]
9472    #[repr(i32)]
9473    pub enum OldThreadWaitReason {
9474        Executive = 0,
9475        FreePage = 1,
9476        PageIn = 2,
9477        PoolAllocation = 3,
9478        DelayExecution = 4,
9479        Suspend = 5,
9480        UserRequest = 6,
9481        WrExecutive = 7,
9482        WrFreePage = 8,
9483        WrPageIn = 9,
9484        WrPoolAllocation = 10,
9485        WrDelayExecution = 11,
9486        WrSuspended = 12,
9487        WrUserRequest = 13,
9488        WrEventPair = 14,
9489        WrQueue = 15,
9490        WrLpcReceiver = 16,
9491        WrLpcReply = 17,
9492        WrVirtualMemory = 18,
9493        WrPageOut = 19,
9494        WrRendezVous = 20,
9495        WrKeyedEvent = 21,
9496        WrTerminated = 22,
9497        WrProcessInSwap = 23,
9498        WrCpuRateControl = 24,
9499        WrCalloutStack = 25,
9500        WrKernel = 26,
9501        WrResource = 27,
9502        WrPushLock = 28,
9503        WrMutex = 29,
9504        WrQuantumEnd = 30,
9505        WrDispatchInt = 31,
9506        WrPreempted = 32,
9507        WrYieldExecution = 33,
9508        WrFastMutex = 34,
9509        WrGuardMutex = 35,
9510        WrRundown = 36,
9511        MaximumWaitReason = 37,
9512    }
9513    impl OldThreadWaitReason {
9514        /// String value of the enum field names used in the ProtoBuf definition.
9515        ///
9516        /// The values are not transformed in any way and thus are considered stable
9517        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9518        pub fn as_str_name(&self) -> &'static str {
9519            match self {
9520                Self::Executive => "EXECUTIVE",
9521                Self::FreePage => "FREE_PAGE",
9522                Self::PageIn => "PAGE_IN",
9523                Self::PoolAllocation => "POOL_ALLOCATION",
9524                Self::DelayExecution => "DELAY_EXECUTION",
9525                Self::Suspend => "SUSPEND",
9526                Self::UserRequest => "USER_REQUEST",
9527                Self::WrExecutive => "WR_EXECUTIVE",
9528                Self::WrFreePage => "WR_FREE_PAGE",
9529                Self::WrPageIn => "WR_PAGE_IN",
9530                Self::WrPoolAllocation => "WR_POOL_ALLOCATION",
9531                Self::WrDelayExecution => "WR_DELAY_EXECUTION",
9532                Self::WrSuspended => "WR_SUSPENDED",
9533                Self::WrUserRequest => "WR_USER_REQUEST",
9534                Self::WrEventPair => "WR_EVENT_PAIR",
9535                Self::WrQueue => "WR_QUEUE",
9536                Self::WrLpcReceiver => "WR_LPC_RECEIVER",
9537                Self::WrLpcReply => "WR_LPC_REPLY",
9538                Self::WrVirtualMemory => "WR_VIRTUAL_MEMORY",
9539                Self::WrPageOut => "WR_PAGE_OUT",
9540                Self::WrRendezVous => "WR_RENDEZ_VOUS",
9541                Self::WrKeyedEvent => "WR_KEYED_EVENT",
9542                Self::WrTerminated => "WR_TERMINATED",
9543                Self::WrProcessInSwap => "WR_PROCESS_IN_SWAP",
9544                Self::WrCpuRateControl => "WR_CPU_RATE_CONTROL",
9545                Self::WrCalloutStack => "WR_CALLOUT_STACK",
9546                Self::WrKernel => "WR_KERNEL",
9547                Self::WrResource => "WR_RESOURCE",
9548                Self::WrPushLock => "WR_PUSH_LOCK",
9549                Self::WrMutex => "WR_MUTEX",
9550                Self::WrQuantumEnd => "WR_QUANTUM_END",
9551                Self::WrDispatchInt => "WR_DISPATCH_INT",
9552                Self::WrPreempted => "WR_PREEMPTED",
9553                Self::WrYieldExecution => "WR_YIELD_EXECUTION",
9554                Self::WrFastMutex => "WR_FAST_MUTEX",
9555                Self::WrGuardMutex => "WR_GUARD_MUTEX",
9556                Self::WrRundown => "WR_RUNDOWN",
9557                Self::MaximumWaitReason => "MAXIMUM_WAIT_REASON",
9558            }
9559        }
9560        /// Creates an enum from field names used in the ProtoBuf definition.
9561        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9562            match value {
9563                "EXECUTIVE" => Some(Self::Executive),
9564                "FREE_PAGE" => Some(Self::FreePage),
9565                "PAGE_IN" => Some(Self::PageIn),
9566                "POOL_ALLOCATION" => Some(Self::PoolAllocation),
9567                "DELAY_EXECUTION" => Some(Self::DelayExecution),
9568                "SUSPEND" => Some(Self::Suspend),
9569                "USER_REQUEST" => Some(Self::UserRequest),
9570                "WR_EXECUTIVE" => Some(Self::WrExecutive),
9571                "WR_FREE_PAGE" => Some(Self::WrFreePage),
9572                "WR_PAGE_IN" => Some(Self::WrPageIn),
9573                "WR_POOL_ALLOCATION" => Some(Self::WrPoolAllocation),
9574                "WR_DELAY_EXECUTION" => Some(Self::WrDelayExecution),
9575                "WR_SUSPENDED" => Some(Self::WrSuspended),
9576                "WR_USER_REQUEST" => Some(Self::WrUserRequest),
9577                "WR_EVENT_PAIR" => Some(Self::WrEventPair),
9578                "WR_QUEUE" => Some(Self::WrQueue),
9579                "WR_LPC_RECEIVER" => Some(Self::WrLpcReceiver),
9580                "WR_LPC_REPLY" => Some(Self::WrLpcReply),
9581                "WR_VIRTUAL_MEMORY" => Some(Self::WrVirtualMemory),
9582                "WR_PAGE_OUT" => Some(Self::WrPageOut),
9583                "WR_RENDEZ_VOUS" => Some(Self::WrRendezVous),
9584                "WR_KEYED_EVENT" => Some(Self::WrKeyedEvent),
9585                "WR_TERMINATED" => Some(Self::WrTerminated),
9586                "WR_PROCESS_IN_SWAP" => Some(Self::WrProcessInSwap),
9587                "WR_CPU_RATE_CONTROL" => Some(Self::WrCpuRateControl),
9588                "WR_CALLOUT_STACK" => Some(Self::WrCalloutStack),
9589                "WR_KERNEL" => Some(Self::WrKernel),
9590                "WR_RESOURCE" => Some(Self::WrResource),
9591                "WR_PUSH_LOCK" => Some(Self::WrPushLock),
9592                "WR_MUTEX" => Some(Self::WrMutex),
9593                "WR_QUANTUM_END" => Some(Self::WrQuantumEnd),
9594                "WR_DISPATCH_INT" => Some(Self::WrDispatchInt),
9595                "WR_PREEMPTED" => Some(Self::WrPreempted),
9596                "WR_YIELD_EXECUTION" => Some(Self::WrYieldExecution),
9597                "WR_FAST_MUTEX" => Some(Self::WrFastMutex),
9598                "WR_GUARD_MUTEX" => Some(Self::WrGuardMutex),
9599                "WR_RUNDOWN" => Some(Self::WrRundown),
9600                "MAXIMUM_WAIT_REASON" => Some(Self::MaximumWaitReason),
9601                _ => None,
9602            }
9603        }
9604    }
9605    /// Wait mode for the previous thread. The ordering is important as based on
9606    /// the OldThreadWaitMode definition from the link above. The following are the
9607    /// possible values:
9608    #[derive(
9609        Clone,
9610        Copy,
9611        Debug,
9612        PartialEq,
9613        Eq,
9614        Hash,
9615        PartialOrd,
9616        Ord,
9617        ::prost::Enumeration
9618    )]
9619    #[repr(i32)]
9620    pub enum OldThreadWaitMode {
9621        KernelMode = 0,
9622        UserMode = 1,
9623    }
9624    impl OldThreadWaitMode {
9625        /// String value of the enum field names used in the ProtoBuf definition.
9626        ///
9627        /// The values are not transformed in any way and thus are considered stable
9628        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9629        pub fn as_str_name(&self) -> &'static str {
9630            match self {
9631                Self::KernelMode => "KERNEL_MODE",
9632                Self::UserMode => "USER_MODE",
9633            }
9634        }
9635        /// Creates an enum from field names used in the ProtoBuf definition.
9636        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9637            match value {
9638                "KERNEL_MODE" => Some(Self::KernelMode),
9639                "USER_MODE" => Some(Self::UserMode),
9640                _ => None,
9641            }
9642        }
9643    }
9644    /// State of the previous thread. The ordering is important as based on the
9645    /// OldThreadState definition from the link above. The following are the
9646    /// possible state values:
9647    #[derive(
9648        Clone,
9649        Copy,
9650        Debug,
9651        PartialEq,
9652        Eq,
9653        Hash,
9654        PartialOrd,
9655        Ord,
9656        ::prost::Enumeration
9657    )]
9658    #[repr(i32)]
9659    pub enum OldThreadState {
9660        Initialized = 0,
9661        Ready = 1,
9662        Running = 2,
9663        Standby = 3,
9664        Terminated = 4,
9665        Waiting = 5,
9666        Transition = 6,
9667        DeferredReady = 7,
9668    }
9669    impl OldThreadState {
9670        /// String value of the enum field names used in the ProtoBuf definition.
9671        ///
9672        /// The values are not transformed in any way and thus are considered stable
9673        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9674        pub fn as_str_name(&self) -> &'static str {
9675            match self {
9676                Self::Initialized => "INITIALIZED",
9677                Self::Ready => "READY",
9678                Self::Running => "RUNNING",
9679                Self::Standby => "STANDBY",
9680                Self::Terminated => "TERMINATED",
9681                Self::Waiting => "WAITING",
9682                Self::Transition => "TRANSITION",
9683                Self::DeferredReady => "DEFERRED_READY",
9684            }
9685        }
9686        /// Creates an enum from field names used in the ProtoBuf definition.
9687        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9688            match value {
9689                "INITIALIZED" => Some(Self::Initialized),
9690                "READY" => Some(Self::Ready),
9691                "RUNNING" => Some(Self::Running),
9692                "STANDBY" => Some(Self::Standby),
9693                "TERMINATED" => Some(Self::Terminated),
9694                "WAITING" => Some(Self::Waiting),
9695                "TRANSITION" => Some(Self::Transition),
9696                "DEFERRED_READY" => Some(Self::DeferredReady),
9697                _ => None,
9698            }
9699        }
9700    }
9701    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9702    pub enum OldThreadWaitReasonEnumOrInt {
9703        #[prost(enumeration = "OldThreadWaitReason", tag = "6")]
9704        OldThreadWaitReason(i32),
9705        #[prost(int32, tag = "11")]
9706        OldThreadWaitReasonInt(i32),
9707    }
9708    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9709    pub enum OldThreadWaitModeEnumOrInt {
9710        #[prost(enumeration = "OldThreadWaitMode", tag = "7")]
9711        OldThreadWaitMode(i32),
9712        #[prost(int32, tag = "12")]
9713        OldThreadWaitModeInt(i32),
9714    }
9715    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9716    pub enum OldThreadStateEnumOrInt {
9717        #[prost(enumeration = "OldThreadState", tag = "8")]
9718        OldThreadState(i32),
9719        #[prost(sint32, tag = "13")]
9720        OldThreadStateInt(i32),
9721    }
9722}
9723/// Proto definition based on the Thread_v2 CSwitch class definition
9724/// See: <https://learn.microsoft.com/en-us/windows/win32/etw/readythread>
9725#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9726pub struct ReadyThreadEtwEvent {
9727    /// The thread identifier of the thread being readied for execution.
9728    #[prost(uint32, optional, tag = "1")]
9729    pub t_thread_id: ::core::option::Option<u32>,
9730    ///   The value by which the priority is being adjusted.
9731    #[prost(sint32, optional, tag = "3")]
9732    pub adjust_increment: ::core::option::Option<i32>,
9733    #[prost(oneof = "ready_thread_etw_event::AdjustReasonEnumOrInt", tags = "2, 5")]
9734    pub adjust_reason_enum_or_int: ::core::option::Option<
9735        ready_thread_etw_event::AdjustReasonEnumOrInt,
9736    >,
9737    #[prost(oneof = "ready_thread_etw_event::FlagEnumOrInt", tags = "4, 6")]
9738    pub flag_enum_or_int: ::core::option::Option<ready_thread_etw_event::FlagEnumOrInt>,
9739}
9740/// Nested message and enum types in `ReadyThreadEtwEvent`.
9741pub mod ready_thread_etw_event {
9742    /// The reason for the priority boost. The ordering is important as based on
9743    /// the AdjustReason definition from the link above.
9744    #[derive(
9745        Clone,
9746        Copy,
9747        Debug,
9748        PartialEq,
9749        Eq,
9750        Hash,
9751        PartialOrd,
9752        Ord,
9753        ::prost::Enumeration
9754    )]
9755    #[repr(i32)]
9756    pub enum AdjustReason {
9757        IgnoreTheIncrement = 0,
9758        /// Apply the increment, which will decay incrementally at the end of each
9759        /// quantum.
9760        ApplyIncrement = 1,
9761        /// Apply the increment as a boost that will decay in its entirety at quantum
9762        /// (typically for priority donation).
9763        ApplyIncrementBoost = 2,
9764    }
9765    impl AdjustReason {
9766        /// String value of the enum field names used in the ProtoBuf definition.
9767        ///
9768        /// The values are not transformed in any way and thus are considered stable
9769        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9770        pub fn as_str_name(&self) -> &'static str {
9771            match self {
9772                Self::IgnoreTheIncrement => "IGNORE_THE_INCREMENT",
9773                Self::ApplyIncrement => "APPLY_INCREMENT",
9774                Self::ApplyIncrementBoost => "APPLY_INCREMENT_BOOST",
9775            }
9776        }
9777        /// Creates an enum from field names used in the ProtoBuf definition.
9778        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9779            match value {
9780                "IGNORE_THE_INCREMENT" => Some(Self::IgnoreTheIncrement),
9781                "APPLY_INCREMENT" => Some(Self::ApplyIncrement),
9782                "APPLY_INCREMENT_BOOST" => Some(Self::ApplyIncrementBoost),
9783                _ => None,
9784            }
9785        }
9786    }
9787    #[derive(
9788        Clone,
9789        Copy,
9790        Debug,
9791        PartialEq,
9792        Eq,
9793        Hash,
9794        PartialOrd,
9795        Ord,
9796        ::prost::Enumeration
9797    )]
9798    #[repr(i32)]
9799    pub enum TraceFlag {
9800        Unspecified = 0,
9801        /// The thread has been readied from DPC (deferred procedure call).
9802        ThreadReadied = 1,
9803        /// The kernel stack is currently swapped out.
9804        KernelStackSwappedOut = 2,
9805        /// The process address space is swapped out.
9806        ProcessAddressSwappedOut = 4,
9807    }
9808    impl TraceFlag {
9809        /// String value of the enum field names used in the ProtoBuf definition.
9810        ///
9811        /// The values are not transformed in any way and thus are considered stable
9812        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9813        pub fn as_str_name(&self) -> &'static str {
9814            match self {
9815                Self::Unspecified => "TRACE_FLAG_UNSPECIFIED",
9816                Self::ThreadReadied => "THREAD_READIED",
9817                Self::KernelStackSwappedOut => "KERNEL_STACK_SWAPPED_OUT",
9818                Self::ProcessAddressSwappedOut => "PROCESS_ADDRESS_SWAPPED_OUT",
9819            }
9820        }
9821        /// Creates an enum from field names used in the ProtoBuf definition.
9822        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9823            match value {
9824                "TRACE_FLAG_UNSPECIFIED" => Some(Self::Unspecified),
9825                "THREAD_READIED" => Some(Self::ThreadReadied),
9826                "KERNEL_STACK_SWAPPED_OUT" => Some(Self::KernelStackSwappedOut),
9827                "PROCESS_ADDRESS_SWAPPED_OUT" => Some(Self::ProcessAddressSwappedOut),
9828                _ => None,
9829            }
9830        }
9831    }
9832    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9833    pub enum AdjustReasonEnumOrInt {
9834        #[prost(enumeration = "AdjustReason", tag = "2")]
9835        AdjustReason(i32),
9836        #[prost(int32, tag = "5")]
9837        AdjustReasonInt(i32),
9838    }
9839    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
9840    pub enum FlagEnumOrInt {
9841        #[prost(enumeration = "TraceFlag", tag = "4")]
9842        Flag(i32),
9843        #[prost(int32, tag = "6")]
9844        FlagInt(i32),
9845    }
9846}
9847/// Proto definition based on the type of MemInfoArgs_V1, found here and observed
9848/// on local traces using tracerpt:
9849/// <https://github.com/repnz/etw-providers-docs/blob/master/Manifests-Win10-17134/Microsoft-Windows-Kernel-Memory.xml>
9850#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9851pub struct MemInfoEtwEvent {
9852    /// Number of memory priorities on the system.
9853    #[prost(uint32, optional, tag = "1")]
9854    pub priority_levels: ::core::option::Option<u32>,
9855    /// Number of pages in the zero list.
9856    #[prost(uint64, optional, tag = "2")]
9857    pub zero_page_count: ::core::option::Option<u64>,
9858    /// Number of pages in the free list.
9859    #[prost(uint64, optional, tag = "3")]
9860    pub free_page_count: ::core::option::Option<u64>,
9861    /// Number of pages in the modified list.
9862    #[prost(uint64, optional, tag = "4")]
9863    pub modified_page_count: ::core::option::Option<u64>,
9864    /// Number of modified non-paged pool pages.
9865    #[prost(uint64, optional, tag = "5")]
9866    pub modified_no_write_page_count: ::core::option::Option<u64>,
9867    /// Number of bad pages.
9868    #[prost(uint64, optional, tag = "6")]
9869    pub bad_page_count: ::core::option::Option<u64>,
9870    /// Number of standby pages by memory priority.
9871    #[prost(uint64, repeated, packed = "false", tag = "7")]
9872    pub standby_page_counts: ::prost::alloc::vec::Vec<u64>,
9873    /// Number of repurposed pages by memory priority.
9874    #[prost(uint64, repeated, packed = "false", tag = "8")]
9875    pub repurposed_page_counts: ::prost::alloc::vec::Vec<u64>,
9876    /// Modified paged pages.
9877    #[prost(uint64, optional, tag = "9")]
9878    pub modified_page_count_page_file: ::core::option::Option<u64>,
9879    /// Pool page counts.
9880    #[prost(uint64, optional, tag = "10")]
9881    pub paged_pool_page_count: ::core::option::Option<u64>,
9882    #[prost(uint64, optional, tag = "11")]
9883    pub non_paged_pool_page_count: ::core::option::Option<u64>,
9884    /// Memory Descriptor List page count.
9885    #[prost(uint64, optional, tag = "12")]
9886    pub mdl_page_count: ::core::option::Option<u64>,
9887    /// Commit weight.
9888    #[prost(uint64, optional, tag = "13")]
9889    pub commit_page_count: ::core::option::Option<u64>,
9890}
9891/// Proto definition based on the `FileIo_Create` class definition.
9892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9893pub struct FileIoCreateEtwEvent {
9894    #[prost(uint64, optional, tag = "1")]
9895    pub irp_ptr: ::core::option::Option<u64>,
9896    #[prost(uint64, optional, tag = "2")]
9897    pub file_object: ::core::option::Option<u64>,
9898    #[prost(uint32, optional, tag = "3")]
9899    pub ttid: ::core::option::Option<u32>,
9900    #[prost(uint32, optional, tag = "4")]
9901    pub create_options: ::core::option::Option<u32>,
9902    #[prost(uint32, optional, tag = "5")]
9903    pub file_attributes: ::core::option::Option<u32>,
9904    #[prost(uint32, optional, tag = "6")]
9905    pub share_access: ::core::option::Option<u32>,
9906    #[prost(string, optional, tag = "7")]
9907    pub open_path: ::core::option::Option<::prost::alloc::string::String>,
9908}
9909/// Proto definition based on the `FileIo_DirEnum` class definition.
9910#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9911pub struct FileIoDirEnumEtwEvent {
9912    #[prost(uint64, optional, tag = "1")]
9913    pub irp_ptr: ::core::option::Option<u64>,
9914    #[prost(uint64, optional, tag = "2")]
9915    pub file_object: ::core::option::Option<u64>,
9916    #[prost(uint64, optional, tag = "3")]
9917    pub file_key: ::core::option::Option<u64>,
9918    #[prost(uint32, optional, tag = "4")]
9919    pub ttid: ::core::option::Option<u32>,
9920    #[prost(uint32, optional, tag = "5")]
9921    pub length: ::core::option::Option<u32>,
9922    #[prost(uint32, optional, tag = "6")]
9923    pub info_class: ::core::option::Option<u32>,
9924    #[prost(uint32, optional, tag = "7")]
9925    pub file_index: ::core::option::Option<u32>,
9926    #[prost(string, optional, tag = "8")]
9927    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
9928    #[prost(uint32, optional, tag = "9")]
9929    pub opcode: ::core::option::Option<u32>,
9930}
9931/// Proto definition based on the `FileIo_Info` class definition.
9932#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9933pub struct FileIoInfoEtwEvent {
9934    #[prost(uint64, optional, tag = "1")]
9935    pub irp_ptr: ::core::option::Option<u64>,
9936    #[prost(uint64, optional, tag = "2")]
9937    pub file_object: ::core::option::Option<u64>,
9938    #[prost(uint64, optional, tag = "3")]
9939    pub file_key: ::core::option::Option<u64>,
9940    #[prost(uint64, optional, tag = "4")]
9941    pub extra_info: ::core::option::Option<u64>,
9942    #[prost(uint32, optional, tag = "5")]
9943    pub ttid: ::core::option::Option<u32>,
9944    #[prost(uint32, optional, tag = "6")]
9945    pub info_class: ::core::option::Option<u32>,
9946    #[prost(uint32, optional, tag = "7")]
9947    pub opcode: ::core::option::Option<u32>,
9948}
9949/// Proto definition based on the `FileIo_ReadWrite` class definition.
9950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9951pub struct FileIoReadWriteEtwEvent {
9952    #[prost(uint64, optional, tag = "1")]
9953    pub offset: ::core::option::Option<u64>,
9954    #[prost(uint64, optional, tag = "2")]
9955    pub irp_ptr: ::core::option::Option<u64>,
9956    #[prost(uint64, optional, tag = "3")]
9957    pub file_object: ::core::option::Option<u64>,
9958    #[prost(uint64, optional, tag = "4")]
9959    pub file_key: ::core::option::Option<u64>,
9960    #[prost(uint32, optional, tag = "5")]
9961    pub ttid: ::core::option::Option<u32>,
9962    #[prost(uint32, optional, tag = "6")]
9963    pub io_size: ::core::option::Option<u32>,
9964    #[prost(uint32, optional, tag = "7")]
9965    pub io_flags: ::core::option::Option<u32>,
9966    #[prost(uint32, optional, tag = "8")]
9967    pub opcode: ::core::option::Option<u32>,
9968}
9969/// Proto definition based on the `FileIo_SimpleOp` class definition.
9970#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9971pub struct FileIoSimpleOpEtwEvent {
9972    #[prost(uint64, optional, tag = "1")]
9973    pub irp_ptr: ::core::option::Option<u64>,
9974    #[prost(uint64, optional, tag = "2")]
9975    pub file_object: ::core::option::Option<u64>,
9976    #[prost(uint64, optional, tag = "3")]
9977    pub file_key: ::core::option::Option<u64>,
9978    #[prost(uint32, optional, tag = "4")]
9979    pub ttid: ::core::option::Option<u32>,
9980    #[prost(uint32, optional, tag = "5")]
9981    pub opcode: ::core::option::Option<u32>,
9982}
9983/// Proto definition based on the `FileIo_OpEnd` class definition.
9984#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9985pub struct FileIoOpEndEtwEvent {
9986    #[prost(uint64, optional, tag = "1")]
9987    pub irp_ptr: ::core::option::Option<u64>,
9988    #[prost(uint64, optional, tag = "2")]
9989    pub extra_info: ::core::option::Option<u64>,
9990    #[prost(uint32, optional, tag = "3")]
9991    pub nt_status: ::core::option::Option<u32>,
9992}
9993/// Proto definition based on the `FileIo_PathOperation` class definition.
9994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9995pub struct FileIoPathOperationEtwEvent {
9996    #[prost(uint64, optional, tag = "1")]
9997    pub irp_ptr: ::core::option::Option<u64>,
9998    #[prost(uint64, optional, tag = "2")]
9999    pub file_object: ::core::option::Option<u64>,
10000    #[prost(uint64, optional, tag = "3")]
10001    pub file_key: ::core::option::Option<u64>,
10002    #[prost(uint64, optional, tag = "4")]
10003    pub extra_info: ::core::option::Option<u64>,
10004    #[prost(uint32, optional, tag = "5")]
10005    pub ttid: ::core::option::Option<u32>,
10006    #[prost(uint32, optional, tag = "6")]
10007    pub info_class: ::core::option::Option<u32>,
10008    #[prost(string, optional, tag = "7")]
10009    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
10010    #[prost(uint32, optional, tag = "8")]
10011    pub opcode: ::core::option::Option<u32>,
10012}
10013/// Proto definition based on the `StackWalk_Event` class definition. See
10014/// `Callstack` in `perfetto/protos/perfetto/trace/track_event/track_event.proto`
10015/// for context on what is contained in it.
10016#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10017pub struct StackWalkEtwEvent {
10018    #[prost(string, optional, tag = "1")]
10019    pub trigger: ::core::option::Option<::prost::alloc::string::String>,
10020    #[prost(uint64, optional, tag = "2")]
10021    pub callstack_iid: ::core::option::Option<u64>,
10022}
10023/// Proto definition based on the `DiskIo_TypeGroup1/2/3` class definitions.
10024#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10025pub struct DiskIoEtwEvent {
10026    #[prost(uint32, optional, tag = "1")]
10027    pub disk_number: ::core::option::Option<u32>,
10028    #[prost(uint32, optional, tag = "2")]
10029    pub irp_flags: ::core::option::Option<u32>,
10030    #[prost(uint32, optional, tag = "3")]
10031    pub transfer_size: ::core::option::Option<u32>,
10032    #[prost(int64, optional, tag = "4")]
10033    pub byte_offset: ::core::option::Option<i64>,
10034    #[prost(uint64, optional, tag = "5")]
10035    pub file_object: ::core::option::Option<u64>,
10036    #[prost(uint64, optional, tag = "6")]
10037    pub irp_ptr: ::core::option::Option<u64>,
10038    #[prost(int64, optional, tag = "7")]
10039    pub response_time: ::core::option::Option<i64>,
10040    #[prost(uint32, optional, tag = "8")]
10041    pub issuing_thread_id: ::core::option::Option<u32>,
10042    #[prost(uint32, optional, tag = "9")]
10043    pub opcode: ::core::option::Option<u32>,
10044}
10045#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10046pub struct EtwTraceEvent {
10047    #[prost(uint64, optional, tag = "1")]
10048    pub timestamp: ::core::option::Option<u64>,
10049    #[prost(uint32, optional, tag = "4")]
10050    pub cpu: ::core::option::Option<u32>,
10051    #[prost(uint32, optional, tag = "5")]
10052    pub thread_id: ::core::option::Option<u32>,
10053    #[prost(
10054        oneof = "etw_trace_event::Event",
10055        tags = "2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15"
10056    )]
10057    pub event: ::core::option::Option<etw_trace_event::Event>,
10058}
10059/// Nested message and enum types in `EtwTraceEvent`.
10060pub mod etw_trace_event {
10061    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
10062    pub enum Event {
10063        #[prost(message, tag = "2")]
10064        CSwitch(super::CSwitchEtwEvent),
10065        #[prost(message, tag = "3")]
10066        ReadyThread(super::ReadyThreadEtwEvent),
10067        #[prost(message, tag = "6")]
10068        MemInfo(super::MemInfoEtwEvent),
10069        #[prost(message, tag = "7")]
10070        FileIoCreate(super::FileIoCreateEtwEvent),
10071        #[prost(message, tag = "8")]
10072        FileIoDirEnum(super::FileIoDirEnumEtwEvent),
10073        #[prost(message, tag = "9")]
10074        FileIoInfo(super::FileIoInfoEtwEvent),
10075        #[prost(message, tag = "10")]
10076        FileIoReadWrite(super::FileIoReadWriteEtwEvent),
10077        #[prost(message, tag = "11")]
10078        FileIoSimpleOp(super::FileIoSimpleOpEtwEvent),
10079        #[prost(message, tag = "12")]
10080        FileIoOpEnd(super::FileIoOpEndEtwEvent),
10081        #[prost(message, tag = "13")]
10082        StackWalk(super::StackWalkEtwEvent),
10083        #[prost(message, tag = "14")]
10084        FileIoPathOperation(super::FileIoPathOperationEtwEvent),
10085        #[prost(message, tag = "15")]
10086        DiskIo(super::DiskIoEtwEvent),
10087    }
10088}
10089/// The result of tracing one or more etw event uses per-processor buffers where
10090/// an in-use buffer is assigned to each processor at all times. Therefore,
10091/// collecting multiple events they should already be synchronized.
10092#[derive(Clone, PartialEq, ::prost::Message)]
10093pub struct EtwTraceEventBundle {
10094    #[prost(uint32, optional, tag = "1")]
10095    pub cpu: ::core::option::Option<u32>,
10096    #[prost(message, repeated, tag = "2")]
10097    pub event: ::prost::alloc::vec::Vec<EtwTraceEvent>,
10098}
10099/// The protocol compiler can output a FileDescriptorSet containing the .proto
10100/// files it parses.
10101#[derive(Clone, PartialEq, ::prost::Message)]
10102pub struct FileDescriptorSet {
10103    #[prost(message, repeated, tag = "1")]
10104    pub file: ::prost::alloc::vec::Vec<FileDescriptorProto>,
10105}
10106/// Describes a complete .proto file.
10107#[derive(Clone, PartialEq, ::prost::Message)]
10108pub struct FileDescriptorProto {
10109    /// file name, relative to root of source tree
10110    #[prost(string, optional, tag = "1")]
10111    pub name: ::core::option::Option<::prost::alloc::string::String>,
10112    /// e.g. "foo", "foo.bar", etc.
10113    #[prost(string, optional, tag = "2")]
10114    pub package: ::core::option::Option<::prost::alloc::string::String>,
10115    /// Names of files imported by this file.
10116    #[prost(string, repeated, tag = "3")]
10117    pub dependency: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10118    /// Indexes of the public imported files in the dependency list above.
10119    #[prost(int32, repeated, packed = "false", tag = "10")]
10120    pub public_dependency: ::prost::alloc::vec::Vec<i32>,
10121    /// Indexes of the weak imported files in the dependency list.
10122    /// For Google-internal migration only. Do not use.
10123    #[prost(int32, repeated, packed = "false", tag = "11")]
10124    pub weak_dependency: ::prost::alloc::vec::Vec<i32>,
10125    /// All top-level definitions in this file.
10126    #[prost(message, repeated, tag = "4")]
10127    pub message_type: ::prost::alloc::vec::Vec<DescriptorProto>,
10128    #[prost(message, repeated, tag = "5")]
10129    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
10130    #[prost(message, repeated, tag = "7")]
10131    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
10132}
10133/// Describes a message type.
10134#[derive(Clone, PartialEq, ::prost::Message)]
10135pub struct DescriptorProto {
10136    #[prost(string, optional, tag = "1")]
10137    pub name: ::core::option::Option<::prost::alloc::string::String>,
10138    #[prost(message, repeated, tag = "2")]
10139    pub field: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
10140    #[prost(message, repeated, tag = "6")]
10141    pub extension: ::prost::alloc::vec::Vec<FieldDescriptorProto>,
10142    #[prost(message, repeated, tag = "3")]
10143    pub nested_type: ::prost::alloc::vec::Vec<DescriptorProto>,
10144    #[prost(message, repeated, tag = "4")]
10145    pub enum_type: ::prost::alloc::vec::Vec<EnumDescriptorProto>,
10146    #[prost(message, repeated, tag = "8")]
10147    pub oneof_decl: ::prost::alloc::vec::Vec<OneofDescriptorProto>,
10148    #[prost(message, repeated, tag = "9")]
10149    pub reserved_range: ::prost::alloc::vec::Vec<descriptor_proto::ReservedRange>,
10150    /// Reserved field names, which may not be used by fields in the same message.
10151    /// A given name may only be reserved once.
10152    #[prost(string, repeated, tag = "10")]
10153    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10154}
10155/// Nested message and enum types in `DescriptorProto`.
10156pub mod descriptor_proto {
10157    /// Range of reserved tag numbers. Reserved tag numbers may not be used by
10158    /// fields or extension ranges in the same message. Reserved ranges may
10159    /// not overlap.
10160    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10161    pub struct ReservedRange {
10162        /// Inclusive.
10163        #[prost(int32, optional, tag = "1")]
10164        pub start: ::core::option::Option<i32>,
10165        /// Exclusive.
10166        #[prost(int32, optional, tag = "2")]
10167        pub end: ::core::option::Option<i32>,
10168    }
10169}
10170/// A message representing a option the parser does not recognize. This only
10171/// appears in options protos created by the compiler::Parser class.
10172/// DescriptorPool resolves these when building Descriptor objects. Therefore,
10173/// options protos in descriptor objects (e.g. returned by Descriptor::options(),
10174/// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
10175/// in them.
10176#[derive(Clone, PartialEq, ::prost::Message)]
10177pub struct UninterpretedOption {
10178    #[prost(message, repeated, tag = "2")]
10179    pub name: ::prost::alloc::vec::Vec<uninterpreted_option::NamePart>,
10180    /// The value of the uninterpreted option, in whatever type the tokenizer
10181    /// identified it as during parsing. Exactly one of these should be set.
10182    #[prost(string, optional, tag = "3")]
10183    pub identifier_value: ::core::option::Option<::prost::alloc::string::String>,
10184    #[prost(uint64, optional, tag = "4")]
10185    pub positive_int_value: ::core::option::Option<u64>,
10186    #[prost(int64, optional, tag = "5")]
10187    pub negative_int_value: ::core::option::Option<i64>,
10188    #[prost(double, optional, tag = "6")]
10189    pub double_value: ::core::option::Option<f64>,
10190    #[prost(bytes = "vec", optional, tag = "7")]
10191    pub string_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10192    #[prost(string, optional, tag = "8")]
10193    pub aggregate_value: ::core::option::Option<::prost::alloc::string::String>,
10194}
10195/// Nested message and enum types in `UninterpretedOption`.
10196pub mod uninterpreted_option {
10197    /// The name of the uninterpreted option.  Each string represents a segment in
10198    /// a dot-separated name.  is_extension is true iff a segment represents an
10199    /// extension (denoted with parentheses in options specs in .proto files).
10200    /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents
10201    /// "foo.(bar.baz).moo".
10202    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10203    pub struct NamePart {
10204        #[prost(string, optional, tag = "1")]
10205        pub name_part: ::core::option::Option<::prost::alloc::string::String>,
10206        #[prost(bool, optional, tag = "2")]
10207        pub is_extension: ::core::option::Option<bool>,
10208    }
10209}
10210#[derive(Clone, PartialEq, ::prost::Message)]
10211pub struct FieldOptions {
10212    /// The packed option can be enabled for repeated primitive fields to enable
10213    /// a more efficient representation on the wire. Rather than repeatedly
10214    /// writing the tag and type for each element, the entire array is encoded as
10215    /// a single length-delimited blob. In proto3, only explicit setting it to
10216    /// false will avoid using packed encoding.
10217    #[prost(bool, optional, tag = "2")]
10218    pub packed: ::core::option::Option<bool>,
10219    /// The parser stores options it doesn't recognize here. See above.
10220    #[prost(message, repeated, tag = "999")]
10221    pub uninterpreted_option: ::prost::alloc::vec::Vec<UninterpretedOption>,
10222}
10223/// Describes a field within a message.
10224#[derive(Clone, PartialEq, ::prost::Message)]
10225pub struct FieldDescriptorProto {
10226    #[prost(string, optional, tag = "1")]
10227    pub name: ::core::option::Option<::prost::alloc::string::String>,
10228    #[prost(int32, optional, tag = "3")]
10229    pub number: ::core::option::Option<i32>,
10230    #[prost(enumeration = "field_descriptor_proto::Label", optional, tag = "4")]
10231    pub label: ::core::option::Option<i32>,
10232    /// If type_name is set, this need not be set.  If both this and type_name
10233    /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
10234    #[prost(enumeration = "field_descriptor_proto::Type", optional, tag = "5")]
10235    pub r#type: ::core::option::Option<i32>,
10236    /// For message and enum types, this is the name of the type.  If the name
10237    /// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
10238    /// rules are used to find the type (i.e. first the nested types within this
10239    /// message are searched, then within the parent, on up to the root
10240    /// namespace).
10241    #[prost(string, optional, tag = "6")]
10242    pub type_name: ::core::option::Option<::prost::alloc::string::String>,
10243    /// For extensions, this is the name of the type being extended.  It is
10244    /// resolved in the same manner as type_name.
10245    #[prost(string, optional, tag = "2")]
10246    pub extendee: ::core::option::Option<::prost::alloc::string::String>,
10247    /// For numeric types, contains the original text representation of the value.
10248    /// For booleans, "true" or "false".
10249    /// For strings, contains the default text contents (not escaped in any way).
10250    /// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
10251    /// TODO(kenton):  Base-64 encode?
10252    #[prost(string, optional, tag = "7")]
10253    pub default_value: ::core::option::Option<::prost::alloc::string::String>,
10254    #[prost(message, optional, tag = "8")]
10255    pub options: ::core::option::Option<FieldOptions>,
10256    /// If set, gives the index of a oneof in the containing type's oneof_decl
10257    /// list.  This field is a member of that oneof.
10258    #[prost(int32, optional, tag = "9")]
10259    pub oneof_index: ::core::option::Option<i32>,
10260}
10261/// Nested message and enum types in `FieldDescriptorProto`.
10262pub mod field_descriptor_proto {
10263    #[derive(
10264        Clone,
10265        Copy,
10266        Debug,
10267        PartialEq,
10268        Eq,
10269        Hash,
10270        PartialOrd,
10271        Ord,
10272        ::prost::Enumeration
10273    )]
10274    #[repr(i32)]
10275    pub enum Type {
10276        /// 0 is reserved for errors.
10277        /// Order is weird for historical reasons.
10278        Double = 1,
10279        Float = 2,
10280        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
10281        /// negative values are likely.
10282        Int64 = 3,
10283        Uint64 = 4,
10284        /// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
10285        /// negative values are likely.
10286        Int32 = 5,
10287        Fixed64 = 6,
10288        Fixed32 = 7,
10289        Bool = 8,
10290        String = 9,
10291        /// Tag-delimited aggregate.
10292        /// Group type is deprecated and not supported in proto3. However, Proto3
10293        /// implementations should still be able to parse the group wire format and
10294        /// treat group fields as unknown fields.
10295        Group = 10,
10296        /// Length-delimited aggregate.
10297        Message = 11,
10298        /// New in version 2.
10299        Bytes = 12,
10300        Uint32 = 13,
10301        Enum = 14,
10302        Sfixed32 = 15,
10303        Sfixed64 = 16,
10304        /// Uses ZigZag encoding.
10305        Sint32 = 17,
10306        /// Uses ZigZag encoding.
10307        Sint64 = 18,
10308    }
10309    impl Type {
10310        /// String value of the enum field names used in the ProtoBuf definition.
10311        ///
10312        /// The values are not transformed in any way and thus are considered stable
10313        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10314        pub fn as_str_name(&self) -> &'static str {
10315            match self {
10316                Self::Double => "TYPE_DOUBLE",
10317                Self::Float => "TYPE_FLOAT",
10318                Self::Int64 => "TYPE_INT64",
10319                Self::Uint64 => "TYPE_UINT64",
10320                Self::Int32 => "TYPE_INT32",
10321                Self::Fixed64 => "TYPE_FIXED64",
10322                Self::Fixed32 => "TYPE_FIXED32",
10323                Self::Bool => "TYPE_BOOL",
10324                Self::String => "TYPE_STRING",
10325                Self::Group => "TYPE_GROUP",
10326                Self::Message => "TYPE_MESSAGE",
10327                Self::Bytes => "TYPE_BYTES",
10328                Self::Uint32 => "TYPE_UINT32",
10329                Self::Enum => "TYPE_ENUM",
10330                Self::Sfixed32 => "TYPE_SFIXED32",
10331                Self::Sfixed64 => "TYPE_SFIXED64",
10332                Self::Sint32 => "TYPE_SINT32",
10333                Self::Sint64 => "TYPE_SINT64",
10334            }
10335        }
10336        /// Creates an enum from field names used in the ProtoBuf definition.
10337        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10338            match value {
10339                "TYPE_DOUBLE" => Some(Self::Double),
10340                "TYPE_FLOAT" => Some(Self::Float),
10341                "TYPE_INT64" => Some(Self::Int64),
10342                "TYPE_UINT64" => Some(Self::Uint64),
10343                "TYPE_INT32" => Some(Self::Int32),
10344                "TYPE_FIXED64" => Some(Self::Fixed64),
10345                "TYPE_FIXED32" => Some(Self::Fixed32),
10346                "TYPE_BOOL" => Some(Self::Bool),
10347                "TYPE_STRING" => Some(Self::String),
10348                "TYPE_GROUP" => Some(Self::Group),
10349                "TYPE_MESSAGE" => Some(Self::Message),
10350                "TYPE_BYTES" => Some(Self::Bytes),
10351                "TYPE_UINT32" => Some(Self::Uint32),
10352                "TYPE_ENUM" => Some(Self::Enum),
10353                "TYPE_SFIXED32" => Some(Self::Sfixed32),
10354                "TYPE_SFIXED64" => Some(Self::Sfixed64),
10355                "TYPE_SINT32" => Some(Self::Sint32),
10356                "TYPE_SINT64" => Some(Self::Sint64),
10357                _ => None,
10358            }
10359        }
10360    }
10361    #[derive(
10362        Clone,
10363        Copy,
10364        Debug,
10365        PartialEq,
10366        Eq,
10367        Hash,
10368        PartialOrd,
10369        Ord,
10370        ::prost::Enumeration
10371    )]
10372    #[repr(i32)]
10373    pub enum Label {
10374        /// 0 is reserved for errors
10375        Optional = 1,
10376        Required = 2,
10377        Repeated = 3,
10378    }
10379    impl Label {
10380        /// String value of the enum field names used in the ProtoBuf definition.
10381        ///
10382        /// The values are not transformed in any way and thus are considered stable
10383        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10384        pub fn as_str_name(&self) -> &'static str {
10385            match self {
10386                Self::Optional => "LABEL_OPTIONAL",
10387                Self::Required => "LABEL_REQUIRED",
10388                Self::Repeated => "LABEL_REPEATED",
10389            }
10390        }
10391        /// Creates an enum from field names used in the ProtoBuf definition.
10392        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10393            match value {
10394                "LABEL_OPTIONAL" => Some(Self::Optional),
10395                "LABEL_REQUIRED" => Some(Self::Required),
10396                "LABEL_REPEATED" => Some(Self::Repeated),
10397                _ => None,
10398            }
10399        }
10400    }
10401}
10402/// Describes a oneof.
10403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10404pub struct OneofDescriptorProto {
10405    #[prost(string, optional, tag = "1")]
10406    pub name: ::core::option::Option<::prost::alloc::string::String>,
10407    #[prost(message, optional, tag = "2")]
10408    pub options: ::core::option::Option<OneofOptions>,
10409}
10410/// Describes an enum type.
10411#[derive(Clone, PartialEq, ::prost::Message)]
10412pub struct EnumDescriptorProto {
10413    #[prost(string, optional, tag = "1")]
10414    pub name: ::core::option::Option<::prost::alloc::string::String>,
10415    #[prost(message, repeated, tag = "2")]
10416    pub value: ::prost::alloc::vec::Vec<EnumValueDescriptorProto>,
10417    /// Reserved enum value names, which may not be reused. A given name may only
10418    /// be reserved once.
10419    #[prost(string, repeated, tag = "5")]
10420    pub reserved_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10421}
10422/// Describes a value within an enum.
10423#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10424pub struct EnumValueDescriptorProto {
10425    #[prost(string, optional, tag = "1")]
10426    pub name: ::core::option::Option<::prost::alloc::string::String>,
10427    #[prost(int32, optional, tag = "2")]
10428    pub number: ::core::option::Option<i32>,
10429}
10430#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10431pub struct OneofOptions {}
10432/// This message contains descriptors used to parse extension fields of
10433/// TrackEvent.
10434///
10435/// See docs/instrumentation/extensions.md for more details.
10436#[derive(Clone, PartialEq, ::prost::Message)]
10437pub struct ExtensionDescriptor {
10438    /// Optional, for debugging only. The file name or path of the descriptor
10439    /// source. Can be omitted without affecting functionality.
10440    #[prost(string, optional, tag = "3")]
10441    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
10442    #[prost(oneof = "extension_descriptor::Descriptor", tags = "1, 2")]
10443    pub descriptor: ::core::option::Option<extension_descriptor::Descriptor>,
10444}
10445/// Nested message and enum types in `ExtensionDescriptor`.
10446pub mod extension_descriptor {
10447    #[derive(Clone, PartialEq, ::prost::Oneof)]
10448    pub enum Descriptor {
10449        #[prost(message, tag = "1")]
10450        ExtensionSet(super::FileDescriptorSet),
10451        /// Same as extension_set, but gzip-compressed. This is used by the tracing
10452        /// service on Android to emit pre-compressed descriptor files from
10453        /// /etc/tracing_descriptors.gz without decompressing them first.
10454        #[prost(bytes, tag = "2")]
10455        ExtensionSetGzip(::prost::alloc::vec::Vec<u8>),
10456    }
10457}
10458/// Represents the mapping between inode numbers in a block device and their path
10459/// on the filesystem
10460#[derive(Clone, PartialEq, ::prost::Message)]
10461pub struct InodeFileMap {
10462    #[prost(uint64, optional, tag = "1")]
10463    pub block_device_id: ::core::option::Option<u64>,
10464    /// The mount points of the block device, e.g. \["system"\].
10465    #[prost(string, repeated, tag = "2")]
10466    pub mount_points: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10467    /// The list of all the entries from the block device
10468    #[prost(message, repeated, tag = "3")]
10469    pub entries: ::prost::alloc::vec::Vec<inode_file_map::Entry>,
10470}
10471/// Nested message and enum types in `InodeFileMap`.
10472pub mod inode_file_map {
10473    /// Representation of Entry
10474    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10475    pub struct Entry {
10476        #[prost(uint64, optional, tag = "1")]
10477        pub inode_number: ::core::option::Option<u64>,
10478        /// The path to the file, e.g. "etc/file.xml"
10479        /// List of strings for multiple hardlinks
10480        #[prost(string, repeated, tag = "2")]
10481        pub paths: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
10482        #[prost(enumeration = "entry::Type", optional, tag = "3")]
10483        pub r#type: ::core::option::Option<i32>,
10484    }
10485    /// Nested message and enum types in `Entry`.
10486    pub mod entry {
10487        /// The file type
10488        #[derive(
10489            Clone,
10490            Copy,
10491            Debug,
10492            PartialEq,
10493            Eq,
10494            Hash,
10495            PartialOrd,
10496            Ord,
10497            ::prost::Enumeration
10498        )]
10499        #[repr(i32)]
10500        pub enum Type {
10501            Unknown = 0,
10502            File = 1,
10503            Directory = 2,
10504        }
10505        impl Type {
10506            /// String value of the enum field names used in the ProtoBuf definition.
10507            ///
10508            /// The values are not transformed in any way and thus are considered stable
10509            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10510            pub fn as_str_name(&self) -> &'static str {
10511                match self {
10512                    Self::Unknown => "UNKNOWN",
10513                    Self::File => "FILE",
10514                    Self::Directory => "DIRECTORY",
10515                }
10516            }
10517            /// Creates an enum from field names used in the ProtoBuf definition.
10518            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10519                match value {
10520                    "UNKNOWN" => Some(Self::Unknown),
10521                    "FILE" => Some(Self::File),
10522                    "DIRECTORY" => Some(Self::Directory),
10523                    _ => None,
10524                }
10525            }
10526        }
10527    }
10528}
10529#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10530pub struct AndroidFsDatareadEndFtraceEvent {
10531    #[prost(int32, optional, tag = "1")]
10532    pub bytes: ::core::option::Option<i32>,
10533    #[prost(uint64, optional, tag = "2")]
10534    pub ino: ::core::option::Option<u64>,
10535    #[prost(int64, optional, tag = "3")]
10536    pub offset: ::core::option::Option<i64>,
10537}
10538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10539pub struct AndroidFsDatareadStartFtraceEvent {
10540    #[prost(int32, optional, tag = "1")]
10541    pub bytes: ::core::option::Option<i32>,
10542    #[prost(string, optional, tag = "2")]
10543    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10544    #[prost(int64, optional, tag = "3")]
10545    pub i_size: ::core::option::Option<i64>,
10546    #[prost(uint64, optional, tag = "4")]
10547    pub ino: ::core::option::Option<u64>,
10548    #[prost(int64, optional, tag = "5")]
10549    pub offset: ::core::option::Option<i64>,
10550    #[prost(string, optional, tag = "6")]
10551    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10552    #[prost(int32, optional, tag = "7")]
10553    pub pid: ::core::option::Option<i32>,
10554}
10555#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10556pub struct AndroidFsDatawriteEndFtraceEvent {
10557    #[prost(int32, optional, tag = "1")]
10558    pub bytes: ::core::option::Option<i32>,
10559    #[prost(uint64, optional, tag = "2")]
10560    pub ino: ::core::option::Option<u64>,
10561    #[prost(int64, optional, tag = "3")]
10562    pub offset: ::core::option::Option<i64>,
10563}
10564#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10565pub struct AndroidFsDatawriteStartFtraceEvent {
10566    #[prost(int32, optional, tag = "1")]
10567    pub bytes: ::core::option::Option<i32>,
10568    #[prost(string, optional, tag = "2")]
10569    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10570    #[prost(int64, optional, tag = "3")]
10571    pub i_size: ::core::option::Option<i64>,
10572    #[prost(uint64, optional, tag = "4")]
10573    pub ino: ::core::option::Option<u64>,
10574    #[prost(int64, optional, tag = "5")]
10575    pub offset: ::core::option::Option<i64>,
10576    #[prost(string, optional, tag = "6")]
10577    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10578    #[prost(int32, optional, tag = "7")]
10579    pub pid: ::core::option::Option<i32>,
10580}
10581#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10582pub struct AndroidFsFsyncEndFtraceEvent {
10583    #[prost(int32, optional, tag = "1")]
10584    pub bytes: ::core::option::Option<i32>,
10585    #[prost(uint64, optional, tag = "2")]
10586    pub ino: ::core::option::Option<u64>,
10587    #[prost(int64, optional, tag = "3")]
10588    pub offset: ::core::option::Option<i64>,
10589}
10590#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10591pub struct AndroidFsFsyncStartFtraceEvent {
10592    #[prost(string, optional, tag = "1")]
10593    pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
10594    #[prost(int64, optional, tag = "2")]
10595    pub i_size: ::core::option::Option<i64>,
10596    #[prost(uint64, optional, tag = "3")]
10597    pub ino: ::core::option::Option<u64>,
10598    #[prost(string, optional, tag = "4")]
10599    pub pathbuf: ::core::option::Option<::prost::alloc::string::String>,
10600    #[prost(int32, optional, tag = "5")]
10601    pub pid: ::core::option::Option<i32>,
10602}
10603#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10604pub struct BclIrqTriggerFtraceEvent {
10605    #[prost(int32, optional, tag = "1")]
10606    pub id: ::core::option::Option<i32>,
10607    #[prost(int32, optional, tag = "2")]
10608    pub throttle: ::core::option::Option<i32>,
10609    #[prost(int32, optional, tag = "3")]
10610    pub cpu0_limit: ::core::option::Option<i32>,
10611    #[prost(int32, optional, tag = "4")]
10612    pub cpu1_limit: ::core::option::Option<i32>,
10613    #[prost(int32, optional, tag = "5")]
10614    pub cpu2_limit: ::core::option::Option<i32>,
10615    #[prost(int32, optional, tag = "6")]
10616    pub tpu_limit: ::core::option::Option<i32>,
10617    #[prost(int32, optional, tag = "7")]
10618    pub gpu_limit: ::core::option::Option<i32>,
10619    #[prost(int32, optional, tag = "8")]
10620    pub voltage: ::core::option::Option<i32>,
10621    #[prost(int32, optional, tag = "9")]
10622    pub capacity: ::core::option::Option<i32>,
10623}
10624#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10625pub struct BinderTransactionFtraceEvent {
10626    #[prost(int32, optional, tag = "1")]
10627    pub debug_id: ::core::option::Option<i32>,
10628    #[prost(int32, optional, tag = "2")]
10629    pub target_node: ::core::option::Option<i32>,
10630    #[prost(int32, optional, tag = "3")]
10631    pub to_proc: ::core::option::Option<i32>,
10632    #[prost(int32, optional, tag = "4")]
10633    pub to_thread: ::core::option::Option<i32>,
10634    #[prost(int32, optional, tag = "5")]
10635    pub reply: ::core::option::Option<i32>,
10636    #[prost(uint32, optional, tag = "6")]
10637    pub code: ::core::option::Option<u32>,
10638    #[prost(uint32, optional, tag = "7")]
10639    pub flags: ::core::option::Option<u32>,
10640}
10641#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10642pub struct BinderTransactionReceivedFtraceEvent {
10643    #[prost(int32, optional, tag = "1")]
10644    pub debug_id: ::core::option::Option<i32>,
10645}
10646#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10647pub struct BinderSetPriorityFtraceEvent {
10648    #[prost(int32, optional, tag = "1")]
10649    pub proc: ::core::option::Option<i32>,
10650    #[prost(int32, optional, tag = "2")]
10651    pub thread: ::core::option::Option<i32>,
10652    #[prost(uint32, optional, tag = "3")]
10653    pub old_prio: ::core::option::Option<u32>,
10654    #[prost(uint32, optional, tag = "4")]
10655    pub new_prio: ::core::option::Option<u32>,
10656    #[prost(uint32, optional, tag = "5")]
10657    pub desired_prio: ::core::option::Option<u32>,
10658}
10659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10660pub struct BinderLockFtraceEvent {
10661    #[prost(string, optional, tag = "1")]
10662    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10663}
10664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10665pub struct BinderLockedFtraceEvent {
10666    #[prost(string, optional, tag = "1")]
10667    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10668}
10669#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10670pub struct BinderUnlockFtraceEvent {
10671    #[prost(string, optional, tag = "1")]
10672    pub tag: ::core::option::Option<::prost::alloc::string::String>,
10673}
10674#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10675pub struct BinderTransactionAllocBufFtraceEvent {
10676    #[prost(uint64, optional, tag = "1")]
10677    pub data_size: ::core::option::Option<u64>,
10678    #[prost(int32, optional, tag = "2")]
10679    pub debug_id: ::core::option::Option<i32>,
10680    #[prost(uint64, optional, tag = "3")]
10681    pub offsets_size: ::core::option::Option<u64>,
10682    #[prost(uint64, optional, tag = "4")]
10683    pub extra_buffers_size: ::core::option::Option<u64>,
10684}
10685#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10686pub struct BinderCommandFtraceEvent {
10687    #[prost(uint32, optional, tag = "1")]
10688    pub cmd: ::core::option::Option<u32>,
10689}
10690#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10691pub struct BinderReturnFtraceEvent {
10692    #[prost(uint32, optional, tag = "1")]
10693    pub cmd: ::core::option::Option<u32>,
10694}
10695#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10696pub struct BlockRqIssueFtraceEvent {
10697    #[prost(uint64, optional, tag = "1")]
10698    pub dev: ::core::option::Option<u64>,
10699    #[prost(uint64, optional, tag = "2")]
10700    pub sector: ::core::option::Option<u64>,
10701    #[prost(uint32, optional, tag = "3")]
10702    pub nr_sector: ::core::option::Option<u32>,
10703    #[prost(uint32, optional, tag = "4")]
10704    pub bytes: ::core::option::Option<u32>,
10705    #[prost(string, optional, tag = "5")]
10706    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10707    #[prost(string, optional, tag = "6")]
10708    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10709    #[prost(string, optional, tag = "7")]
10710    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10711}
10712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10713pub struct BlockBioBackmergeFtraceEvent {
10714    #[prost(uint64, optional, tag = "1")]
10715    pub dev: ::core::option::Option<u64>,
10716    #[prost(uint64, optional, tag = "2")]
10717    pub sector: ::core::option::Option<u64>,
10718    #[prost(uint32, optional, tag = "3")]
10719    pub nr_sector: ::core::option::Option<u32>,
10720    #[prost(string, optional, tag = "4")]
10721    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10722    #[prost(string, optional, tag = "5")]
10723    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10724}
10725#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10726pub struct BlockBioBounceFtraceEvent {
10727    #[prost(uint64, optional, tag = "1")]
10728    pub dev: ::core::option::Option<u64>,
10729    #[prost(uint64, optional, tag = "2")]
10730    pub sector: ::core::option::Option<u64>,
10731    #[prost(uint32, optional, tag = "3")]
10732    pub nr_sector: ::core::option::Option<u32>,
10733    #[prost(string, optional, tag = "4")]
10734    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10735    #[prost(string, optional, tag = "5")]
10736    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10737}
10738#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10739pub struct BlockBioCompleteFtraceEvent {
10740    #[prost(uint64, optional, tag = "1")]
10741    pub dev: ::core::option::Option<u64>,
10742    #[prost(uint64, optional, tag = "2")]
10743    pub sector: ::core::option::Option<u64>,
10744    #[prost(uint32, optional, tag = "3")]
10745    pub nr_sector: ::core::option::Option<u32>,
10746    #[prost(int32, optional, tag = "4")]
10747    pub error: ::core::option::Option<i32>,
10748    #[prost(string, optional, tag = "5")]
10749    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10750}
10751#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10752pub struct BlockBioFrontmergeFtraceEvent {
10753    #[prost(uint64, optional, tag = "1")]
10754    pub dev: ::core::option::Option<u64>,
10755    #[prost(uint64, optional, tag = "2")]
10756    pub sector: ::core::option::Option<u64>,
10757    #[prost(uint32, optional, tag = "3")]
10758    pub nr_sector: ::core::option::Option<u32>,
10759    #[prost(string, optional, tag = "4")]
10760    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10761    #[prost(string, optional, tag = "5")]
10762    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10763}
10764#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10765pub struct BlockBioQueueFtraceEvent {
10766    #[prost(uint64, optional, tag = "1")]
10767    pub dev: ::core::option::Option<u64>,
10768    #[prost(uint64, optional, tag = "2")]
10769    pub sector: ::core::option::Option<u64>,
10770    #[prost(uint32, optional, tag = "3")]
10771    pub nr_sector: ::core::option::Option<u32>,
10772    #[prost(string, optional, tag = "4")]
10773    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10774    #[prost(string, optional, tag = "5")]
10775    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10776}
10777#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10778pub struct BlockBioRemapFtraceEvent {
10779    #[prost(uint64, optional, tag = "1")]
10780    pub dev: ::core::option::Option<u64>,
10781    #[prost(uint64, optional, tag = "2")]
10782    pub sector: ::core::option::Option<u64>,
10783    #[prost(uint32, optional, tag = "3")]
10784    pub nr_sector: ::core::option::Option<u32>,
10785    #[prost(uint64, optional, tag = "4")]
10786    pub old_dev: ::core::option::Option<u64>,
10787    #[prost(uint64, optional, tag = "5")]
10788    pub old_sector: ::core::option::Option<u64>,
10789    #[prost(string, optional, tag = "6")]
10790    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10791}
10792#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10793pub struct BlockDirtyBufferFtraceEvent {
10794    #[prost(uint64, optional, tag = "1")]
10795    pub dev: ::core::option::Option<u64>,
10796    #[prost(uint64, optional, tag = "2")]
10797    pub sector: ::core::option::Option<u64>,
10798    #[prost(uint64, optional, tag = "3")]
10799    pub size: ::core::option::Option<u64>,
10800}
10801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10802pub struct BlockGetrqFtraceEvent {
10803    #[prost(uint64, optional, tag = "1")]
10804    pub dev: ::core::option::Option<u64>,
10805    #[prost(uint64, optional, tag = "2")]
10806    pub sector: ::core::option::Option<u64>,
10807    #[prost(uint32, optional, tag = "3")]
10808    pub nr_sector: ::core::option::Option<u32>,
10809    #[prost(string, optional, tag = "4")]
10810    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10811    #[prost(string, optional, tag = "5")]
10812    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10813}
10814#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10815pub struct BlockPlugFtraceEvent {
10816    #[prost(string, optional, tag = "1")]
10817    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10818}
10819#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10820pub struct BlockRqAbortFtraceEvent {
10821    #[prost(uint64, optional, tag = "1")]
10822    pub dev: ::core::option::Option<u64>,
10823    #[prost(uint64, optional, tag = "2")]
10824    pub sector: ::core::option::Option<u64>,
10825    #[prost(uint32, optional, tag = "3")]
10826    pub nr_sector: ::core::option::Option<u32>,
10827    #[prost(int32, optional, tag = "4")]
10828    pub errors: ::core::option::Option<i32>,
10829    #[prost(string, optional, tag = "5")]
10830    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10831    #[prost(string, optional, tag = "6")]
10832    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10833}
10834#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10835pub struct BlockRqCompleteFtraceEvent {
10836    #[prost(uint64, optional, tag = "1")]
10837    pub dev: ::core::option::Option<u64>,
10838    #[prost(uint64, optional, tag = "2")]
10839    pub sector: ::core::option::Option<u64>,
10840    #[prost(uint32, optional, tag = "3")]
10841    pub nr_sector: ::core::option::Option<u32>,
10842    #[prost(int32, optional, tag = "4")]
10843    pub errors: ::core::option::Option<i32>,
10844    #[prost(string, optional, tag = "5")]
10845    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10846    #[prost(string, optional, tag = "6")]
10847    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10848    #[prost(int32, optional, tag = "7")]
10849    pub error: ::core::option::Option<i32>,
10850}
10851#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10852pub struct BlockRqInsertFtraceEvent {
10853    #[prost(uint64, optional, tag = "1")]
10854    pub dev: ::core::option::Option<u64>,
10855    #[prost(uint64, optional, tag = "2")]
10856    pub sector: ::core::option::Option<u64>,
10857    #[prost(uint32, optional, tag = "3")]
10858    pub nr_sector: ::core::option::Option<u32>,
10859    #[prost(uint32, optional, tag = "4")]
10860    pub bytes: ::core::option::Option<u32>,
10861    #[prost(string, optional, tag = "5")]
10862    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10863    #[prost(string, optional, tag = "6")]
10864    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10865    #[prost(string, optional, tag = "7")]
10866    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10867}
10868#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10869pub struct BlockRqRemapFtraceEvent {
10870    #[prost(uint64, optional, tag = "1")]
10871    pub dev: ::core::option::Option<u64>,
10872    #[prost(uint64, optional, tag = "2")]
10873    pub sector: ::core::option::Option<u64>,
10874    #[prost(uint32, optional, tag = "3")]
10875    pub nr_sector: ::core::option::Option<u32>,
10876    #[prost(uint64, optional, tag = "4")]
10877    pub old_dev: ::core::option::Option<u64>,
10878    #[prost(uint64, optional, tag = "5")]
10879    pub old_sector: ::core::option::Option<u64>,
10880    #[prost(uint32, optional, tag = "6")]
10881    pub nr_bios: ::core::option::Option<u32>,
10882    #[prost(string, optional, tag = "7")]
10883    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10884}
10885#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10886pub struct BlockRqRequeueFtraceEvent {
10887    #[prost(uint64, optional, tag = "1")]
10888    pub dev: ::core::option::Option<u64>,
10889    #[prost(uint64, optional, tag = "2")]
10890    pub sector: ::core::option::Option<u64>,
10891    #[prost(uint32, optional, tag = "3")]
10892    pub nr_sector: ::core::option::Option<u32>,
10893    #[prost(int32, optional, tag = "4")]
10894    pub errors: ::core::option::Option<i32>,
10895    #[prost(string, optional, tag = "5")]
10896    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10897    #[prost(string, optional, tag = "6")]
10898    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10899}
10900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10901pub struct BlockSleeprqFtraceEvent {
10902    #[prost(uint64, optional, tag = "1")]
10903    pub dev: ::core::option::Option<u64>,
10904    #[prost(uint64, optional, tag = "2")]
10905    pub sector: ::core::option::Option<u64>,
10906    #[prost(uint32, optional, tag = "3")]
10907    pub nr_sector: ::core::option::Option<u32>,
10908    #[prost(string, optional, tag = "4")]
10909    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10910    #[prost(string, optional, tag = "5")]
10911    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10912}
10913#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10914pub struct BlockSplitFtraceEvent {
10915    #[prost(uint64, optional, tag = "1")]
10916    pub dev: ::core::option::Option<u64>,
10917    #[prost(uint64, optional, tag = "2")]
10918    pub sector: ::core::option::Option<u64>,
10919    #[prost(uint64, optional, tag = "3")]
10920    pub new_sector: ::core::option::Option<u64>,
10921    #[prost(string, optional, tag = "4")]
10922    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10923    #[prost(string, optional, tag = "5")]
10924    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10925}
10926#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10927pub struct BlockTouchBufferFtraceEvent {
10928    #[prost(uint64, optional, tag = "1")]
10929    pub dev: ::core::option::Option<u64>,
10930    #[prost(uint64, optional, tag = "2")]
10931    pub sector: ::core::option::Option<u64>,
10932    #[prost(uint64, optional, tag = "3")]
10933    pub size: ::core::option::Option<u64>,
10934}
10935#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10936pub struct BlockUnplugFtraceEvent {
10937    #[prost(int32, optional, tag = "1")]
10938    pub nr_rq: ::core::option::Option<i32>,
10939    #[prost(string, optional, tag = "2")]
10940    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10941}
10942#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10943pub struct BlockIoStartFtraceEvent {
10944    #[prost(uint64, optional, tag = "1")]
10945    pub dev: ::core::option::Option<u64>,
10946    #[prost(uint64, optional, tag = "2")]
10947    pub sector: ::core::option::Option<u64>,
10948    #[prost(uint32, optional, tag = "3")]
10949    pub nr_sector: ::core::option::Option<u32>,
10950    #[prost(uint32, optional, tag = "4")]
10951    pub bytes: ::core::option::Option<u32>,
10952    #[prost(uint32, optional, tag = "5")]
10953    pub ioprio: ::core::option::Option<u32>,
10954    #[prost(string, optional, tag = "6")]
10955    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10956    #[prost(string, optional, tag = "7")]
10957    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10958    #[prost(string, optional, tag = "8")]
10959    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10960}
10961#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10962pub struct BlockIoDoneFtraceEvent {
10963    #[prost(uint64, optional, tag = "1")]
10964    pub dev: ::core::option::Option<u64>,
10965    #[prost(uint64, optional, tag = "2")]
10966    pub sector: ::core::option::Option<u64>,
10967    #[prost(uint32, optional, tag = "3")]
10968    pub nr_sector: ::core::option::Option<u32>,
10969    #[prost(uint32, optional, tag = "4")]
10970    pub bytes: ::core::option::Option<u32>,
10971    #[prost(uint32, optional, tag = "5")]
10972    pub ioprio: ::core::option::Option<u32>,
10973    #[prost(string, optional, tag = "6")]
10974    pub rwbs: ::core::option::Option<::prost::alloc::string::String>,
10975    #[prost(string, optional, tag = "7")]
10976    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10977    #[prost(string, optional, tag = "8")]
10978    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
10979}
10980#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10981pub struct CgroupAttachTaskFtraceEvent {
10982    #[prost(int32, optional, tag = "1")]
10983    pub dst_root: ::core::option::Option<i32>,
10984    #[prost(int32, optional, tag = "2")]
10985    pub dst_id: ::core::option::Option<i32>,
10986    #[prost(int32, optional, tag = "3")]
10987    pub pid: ::core::option::Option<i32>,
10988    #[prost(string, optional, tag = "4")]
10989    pub comm: ::core::option::Option<::prost::alloc::string::String>,
10990    #[prost(string, optional, tag = "5")]
10991    pub cname: ::core::option::Option<::prost::alloc::string::String>,
10992    #[prost(int32, optional, tag = "6")]
10993    pub dst_level: ::core::option::Option<i32>,
10994    #[prost(string, optional, tag = "7")]
10995    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
10996}
10997#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10998pub struct CgroupMkdirFtraceEvent {
10999    #[prost(int32, optional, tag = "1")]
11000    pub root: ::core::option::Option<i32>,
11001    #[prost(int32, optional, tag = "2")]
11002    pub id: ::core::option::Option<i32>,
11003    #[prost(string, optional, tag = "3")]
11004    pub cname: ::core::option::Option<::prost::alloc::string::String>,
11005    #[prost(int32, optional, tag = "4")]
11006    pub level: ::core::option::Option<i32>,
11007    #[prost(string, optional, tag = "5")]
11008    pub path: ::core::option::Option<::prost::alloc::string::String>,
11009}
11010#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11011pub struct CgroupRemountFtraceEvent {
11012    #[prost(int32, optional, tag = "1")]
11013    pub root: ::core::option::Option<i32>,
11014    #[prost(uint32, optional, tag = "2")]
11015    pub ss_mask: ::core::option::Option<u32>,
11016    #[prost(string, optional, tag = "3")]
11017    pub name: ::core::option::Option<::prost::alloc::string::String>,
11018}
11019#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11020pub struct CgroupRmdirFtraceEvent {
11021    #[prost(int32, optional, tag = "1")]
11022    pub root: ::core::option::Option<i32>,
11023    #[prost(int32, optional, tag = "2")]
11024    pub id: ::core::option::Option<i32>,
11025    #[prost(string, optional, tag = "3")]
11026    pub cname: ::core::option::Option<::prost::alloc::string::String>,
11027    #[prost(int32, optional, tag = "4")]
11028    pub level: ::core::option::Option<i32>,
11029    #[prost(string, optional, tag = "5")]
11030    pub path: ::core::option::Option<::prost::alloc::string::String>,
11031}
11032#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11033pub struct CgroupTransferTasksFtraceEvent {
11034    #[prost(int32, optional, tag = "1")]
11035    pub dst_root: ::core::option::Option<i32>,
11036    #[prost(int32, optional, tag = "2")]
11037    pub dst_id: ::core::option::Option<i32>,
11038    #[prost(int32, optional, tag = "3")]
11039    pub pid: ::core::option::Option<i32>,
11040    #[prost(string, optional, tag = "4")]
11041    pub comm: ::core::option::Option<::prost::alloc::string::String>,
11042    #[prost(string, optional, tag = "5")]
11043    pub cname: ::core::option::Option<::prost::alloc::string::String>,
11044    #[prost(int32, optional, tag = "6")]
11045    pub dst_level: ::core::option::Option<i32>,
11046    #[prost(string, optional, tag = "7")]
11047    pub dst_path: ::core::option::Option<::prost::alloc::string::String>,
11048}
11049#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11050pub struct CgroupDestroyRootFtraceEvent {
11051    #[prost(int32, optional, tag = "1")]
11052    pub root: ::core::option::Option<i32>,
11053    #[prost(uint32, optional, tag = "2")]
11054    pub ss_mask: ::core::option::Option<u32>,
11055    #[prost(string, optional, tag = "3")]
11056    pub name: ::core::option::Option<::prost::alloc::string::String>,
11057}
11058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11059pub struct CgroupReleaseFtraceEvent {
11060    #[prost(int32, optional, tag = "1")]
11061    pub root: ::core::option::Option<i32>,
11062    #[prost(int32, optional, tag = "2")]
11063    pub id: ::core::option::Option<i32>,
11064    #[prost(string, optional, tag = "3")]
11065    pub cname: ::core::option::Option<::prost::alloc::string::String>,
11066    #[prost(int32, optional, tag = "4")]
11067    pub level: ::core::option::Option<i32>,
11068    #[prost(string, optional, tag = "5")]
11069    pub path: ::core::option::Option<::prost::alloc::string::String>,
11070}
11071#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11072pub struct CgroupRenameFtraceEvent {
11073    #[prost(int32, optional, tag = "1")]
11074    pub root: ::core::option::Option<i32>,
11075    #[prost(int32, optional, tag = "2")]
11076    pub id: ::core::option::Option<i32>,
11077    #[prost(string, optional, tag = "3")]
11078    pub cname: ::core::option::Option<::prost::alloc::string::String>,
11079    #[prost(int32, optional, tag = "4")]
11080    pub level: ::core::option::Option<i32>,
11081    #[prost(string, optional, tag = "5")]
11082    pub path: ::core::option::Option<::prost::alloc::string::String>,
11083}
11084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11085pub struct CgroupSetupRootFtraceEvent {
11086    #[prost(int32, optional, tag = "1")]
11087    pub root: ::core::option::Option<i32>,
11088    #[prost(uint32, optional, tag = "2")]
11089    pub ss_mask: ::core::option::Option<u32>,
11090    #[prost(string, optional, tag = "3")]
11091    pub name: ::core::option::Option<::prost::alloc::string::String>,
11092}
11093#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11094pub struct ClkEnableFtraceEvent {
11095    #[prost(string, optional, tag = "1")]
11096    pub name: ::core::option::Option<::prost::alloc::string::String>,
11097}
11098#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11099pub struct ClkDisableFtraceEvent {
11100    #[prost(string, optional, tag = "1")]
11101    pub name: ::core::option::Option<::prost::alloc::string::String>,
11102}
11103#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11104pub struct ClkSetRateFtraceEvent {
11105    #[prost(string, optional, tag = "1")]
11106    pub name: ::core::option::Option<::prost::alloc::string::String>,
11107    #[prost(uint64, optional, tag = "2")]
11108    pub rate: ::core::option::Option<u64>,
11109}
11110#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11111pub struct CmaAllocStartFtraceEvent {
11112    #[prost(uint32, optional, tag = "1")]
11113    pub align: ::core::option::Option<u32>,
11114    #[prost(uint32, optional, tag = "2")]
11115    pub count: ::core::option::Option<u32>,
11116    #[prost(string, optional, tag = "3")]
11117    pub name: ::core::option::Option<::prost::alloc::string::String>,
11118}
11119#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11120pub struct CmaAllocInfoFtraceEvent {
11121    #[prost(uint32, optional, tag = "1")]
11122    pub align: ::core::option::Option<u32>,
11123    #[prost(uint32, optional, tag = "2")]
11124    pub count: ::core::option::Option<u32>,
11125    #[prost(uint32, optional, tag = "3")]
11126    pub err_iso: ::core::option::Option<u32>,
11127    #[prost(uint32, optional, tag = "4")]
11128    pub err_mig: ::core::option::Option<u32>,
11129    #[prost(uint32, optional, tag = "5")]
11130    pub err_test: ::core::option::Option<u32>,
11131    #[prost(string, optional, tag = "6")]
11132    pub name: ::core::option::Option<::prost::alloc::string::String>,
11133    #[prost(uint64, optional, tag = "7")]
11134    pub nr_mapped: ::core::option::Option<u64>,
11135    #[prost(uint64, optional, tag = "8")]
11136    pub nr_migrated: ::core::option::Option<u64>,
11137    #[prost(uint64, optional, tag = "9")]
11138    pub nr_reclaimed: ::core::option::Option<u64>,
11139    #[prost(uint64, optional, tag = "10")]
11140    pub pfn: ::core::option::Option<u64>,
11141}
11142#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11143pub struct CmaAllocFinishFtraceEvent {
11144    #[prost(string, optional, tag = "1")]
11145    pub name: ::core::option::Option<::prost::alloc::string::String>,
11146    #[prost(uint64, optional, tag = "2")]
11147    pub pfn: ::core::option::Option<u64>,
11148    #[prost(uint64, optional, tag = "3")]
11149    pub page: ::core::option::Option<u64>,
11150    #[prost(uint64, optional, tag = "4")]
11151    pub count: ::core::option::Option<u64>,
11152    #[prost(uint32, optional, tag = "5")]
11153    pub align: ::core::option::Option<u32>,
11154    #[prost(int32, optional, tag = "6")]
11155    pub errorno: ::core::option::Option<i32>,
11156}
11157#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11158pub struct MmCompactionBeginFtraceEvent {
11159    #[prost(uint64, optional, tag = "1")]
11160    pub zone_start: ::core::option::Option<u64>,
11161    #[prost(uint64, optional, tag = "2")]
11162    pub migrate_pfn: ::core::option::Option<u64>,
11163    #[prost(uint64, optional, tag = "3")]
11164    pub free_pfn: ::core::option::Option<u64>,
11165    #[prost(uint64, optional, tag = "4")]
11166    pub zone_end: ::core::option::Option<u64>,
11167    #[prost(uint32, optional, tag = "5")]
11168    pub sync: ::core::option::Option<u32>,
11169}
11170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11171pub struct MmCompactionDeferCompactionFtraceEvent {
11172    #[prost(int32, optional, tag = "1")]
11173    pub nid: ::core::option::Option<i32>,
11174    #[prost(uint32, optional, tag = "2")]
11175    pub idx: ::core::option::Option<u32>,
11176    #[prost(int32, optional, tag = "3")]
11177    pub order: ::core::option::Option<i32>,
11178    #[prost(uint32, optional, tag = "4")]
11179    pub considered: ::core::option::Option<u32>,
11180    #[prost(uint32, optional, tag = "5")]
11181    pub defer_shift: ::core::option::Option<u32>,
11182    #[prost(int32, optional, tag = "6")]
11183    pub order_failed: ::core::option::Option<i32>,
11184}
11185#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11186pub struct MmCompactionDeferredFtraceEvent {
11187    #[prost(int32, optional, tag = "1")]
11188    pub nid: ::core::option::Option<i32>,
11189    #[prost(uint32, optional, tag = "2")]
11190    pub idx: ::core::option::Option<u32>,
11191    #[prost(int32, optional, tag = "3")]
11192    pub order: ::core::option::Option<i32>,
11193    #[prost(uint32, optional, tag = "4")]
11194    pub considered: ::core::option::Option<u32>,
11195    #[prost(uint32, optional, tag = "5")]
11196    pub defer_shift: ::core::option::Option<u32>,
11197    #[prost(int32, optional, tag = "6")]
11198    pub order_failed: ::core::option::Option<i32>,
11199}
11200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11201pub struct MmCompactionDeferResetFtraceEvent {
11202    #[prost(int32, optional, tag = "1")]
11203    pub nid: ::core::option::Option<i32>,
11204    #[prost(uint32, optional, tag = "2")]
11205    pub idx: ::core::option::Option<u32>,
11206    #[prost(int32, optional, tag = "3")]
11207    pub order: ::core::option::Option<i32>,
11208    #[prost(uint32, optional, tag = "4")]
11209    pub considered: ::core::option::Option<u32>,
11210    #[prost(uint32, optional, tag = "5")]
11211    pub defer_shift: ::core::option::Option<u32>,
11212    #[prost(int32, optional, tag = "6")]
11213    pub order_failed: ::core::option::Option<i32>,
11214}
11215#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11216pub struct MmCompactionEndFtraceEvent {
11217    #[prost(uint64, optional, tag = "1")]
11218    pub zone_start: ::core::option::Option<u64>,
11219    #[prost(uint64, optional, tag = "2")]
11220    pub migrate_pfn: ::core::option::Option<u64>,
11221    #[prost(uint64, optional, tag = "3")]
11222    pub free_pfn: ::core::option::Option<u64>,
11223    #[prost(uint64, optional, tag = "4")]
11224    pub zone_end: ::core::option::Option<u64>,
11225    #[prost(uint32, optional, tag = "5")]
11226    pub sync: ::core::option::Option<u32>,
11227    #[prost(int32, optional, tag = "6")]
11228    pub status: ::core::option::Option<i32>,
11229}
11230#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11231pub struct MmCompactionFinishedFtraceEvent {
11232    #[prost(int32, optional, tag = "1")]
11233    pub nid: ::core::option::Option<i32>,
11234    #[prost(uint32, optional, tag = "2")]
11235    pub idx: ::core::option::Option<u32>,
11236    #[prost(int32, optional, tag = "3")]
11237    pub order: ::core::option::Option<i32>,
11238    #[prost(int32, optional, tag = "4")]
11239    pub ret: ::core::option::Option<i32>,
11240}
11241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11242pub struct MmCompactionIsolateFreepagesFtraceEvent {
11243    #[prost(uint64, optional, tag = "1")]
11244    pub start_pfn: ::core::option::Option<u64>,
11245    #[prost(uint64, optional, tag = "2")]
11246    pub end_pfn: ::core::option::Option<u64>,
11247    #[prost(uint64, optional, tag = "3")]
11248    pub nr_scanned: ::core::option::Option<u64>,
11249    #[prost(uint64, optional, tag = "4")]
11250    pub nr_taken: ::core::option::Option<u64>,
11251}
11252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11253pub struct MmCompactionIsolateMigratepagesFtraceEvent {
11254    #[prost(uint64, optional, tag = "1")]
11255    pub start_pfn: ::core::option::Option<u64>,
11256    #[prost(uint64, optional, tag = "2")]
11257    pub end_pfn: ::core::option::Option<u64>,
11258    #[prost(uint64, optional, tag = "3")]
11259    pub nr_scanned: ::core::option::Option<u64>,
11260    #[prost(uint64, optional, tag = "4")]
11261    pub nr_taken: ::core::option::Option<u64>,
11262}
11263#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11264pub struct MmCompactionKcompactdSleepFtraceEvent {
11265    #[prost(int32, optional, tag = "1")]
11266    pub nid: ::core::option::Option<i32>,
11267}
11268#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11269pub struct MmCompactionKcompactdWakeFtraceEvent {
11270    #[prost(int32, optional, tag = "1")]
11271    pub nid: ::core::option::Option<i32>,
11272    #[prost(int32, optional, tag = "2")]
11273    pub order: ::core::option::Option<i32>,
11274    #[prost(uint32, optional, tag = "3")]
11275    pub classzone_idx: ::core::option::Option<u32>,
11276    #[prost(uint32, optional, tag = "4")]
11277    pub highest_zoneidx: ::core::option::Option<u32>,
11278}
11279#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11280pub struct MmCompactionMigratepagesFtraceEvent {
11281    #[prost(uint64, optional, tag = "1")]
11282    pub nr_migrated: ::core::option::Option<u64>,
11283    #[prost(uint64, optional, tag = "2")]
11284    pub nr_failed: ::core::option::Option<u64>,
11285}
11286#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11287pub struct MmCompactionSuitableFtraceEvent {
11288    #[prost(int32, optional, tag = "1")]
11289    pub nid: ::core::option::Option<i32>,
11290    #[prost(uint32, optional, tag = "2")]
11291    pub idx: ::core::option::Option<u32>,
11292    #[prost(int32, optional, tag = "3")]
11293    pub order: ::core::option::Option<i32>,
11294    #[prost(int32, optional, tag = "4")]
11295    pub ret: ::core::option::Option<i32>,
11296}
11297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11298pub struct MmCompactionTryToCompactPagesFtraceEvent {
11299    #[prost(int32, optional, tag = "1")]
11300    pub order: ::core::option::Option<i32>,
11301    #[prost(uint32, optional, tag = "2")]
11302    pub gfp_mask: ::core::option::Option<u32>,
11303    #[prost(uint32, optional, tag = "3")]
11304    pub mode: ::core::option::Option<u32>,
11305    #[prost(int32, optional, tag = "4")]
11306    pub prio: ::core::option::Option<i32>,
11307}
11308#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11309pub struct MmCompactionWakeupKcompactdFtraceEvent {
11310    #[prost(int32, optional, tag = "1")]
11311    pub nid: ::core::option::Option<i32>,
11312    #[prost(int32, optional, tag = "2")]
11313    pub order: ::core::option::Option<i32>,
11314    #[prost(uint32, optional, tag = "3")]
11315    pub classzone_idx: ::core::option::Option<u32>,
11316    #[prost(uint32, optional, tag = "4")]
11317    pub highest_zoneidx: ::core::option::Option<u32>,
11318}
11319#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11320pub struct ParamSetValueCpmFtraceEvent {
11321    #[prost(string, optional, tag = "1")]
11322    pub body: ::core::option::Option<::prost::alloc::string::String>,
11323    #[prost(uint32, optional, tag = "2")]
11324    pub value: ::core::option::Option<u32>,
11325    #[prost(int64, optional, tag = "3")]
11326    pub timestamp: ::core::option::Option<i64>,
11327}
11328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11329pub struct CpuhpExitFtraceEvent {
11330    #[prost(uint32, optional, tag = "1")]
11331    pub cpu: ::core::option::Option<u32>,
11332    #[prost(int32, optional, tag = "2")]
11333    pub idx: ::core::option::Option<i32>,
11334    #[prost(int32, optional, tag = "3")]
11335    pub ret: ::core::option::Option<i32>,
11336    #[prost(int32, optional, tag = "4")]
11337    pub state: ::core::option::Option<i32>,
11338}
11339#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11340pub struct CpuhpMultiEnterFtraceEvent {
11341    #[prost(uint32, optional, tag = "1")]
11342    pub cpu: ::core::option::Option<u32>,
11343    #[prost(uint64, optional, tag = "2")]
11344    pub fun: ::core::option::Option<u64>,
11345    #[prost(int32, optional, tag = "3")]
11346    pub idx: ::core::option::Option<i32>,
11347    #[prost(int32, optional, tag = "4")]
11348    pub target: ::core::option::Option<i32>,
11349}
11350#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11351pub struct CpuhpEnterFtraceEvent {
11352    #[prost(uint32, optional, tag = "1")]
11353    pub cpu: ::core::option::Option<u32>,
11354    #[prost(uint64, optional, tag = "2")]
11355    pub fun: ::core::option::Option<u64>,
11356    #[prost(int32, optional, tag = "3")]
11357    pub idx: ::core::option::Option<i32>,
11358    #[prost(int32, optional, tag = "4")]
11359    pub target: ::core::option::Option<i32>,
11360}
11361#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11362pub struct CpuhpLatencyFtraceEvent {
11363    #[prost(uint32, optional, tag = "1")]
11364    pub cpu: ::core::option::Option<u32>,
11365    #[prost(int32, optional, tag = "2")]
11366    pub ret: ::core::option::Option<i32>,
11367    #[prost(uint32, optional, tag = "3")]
11368    pub state: ::core::option::Option<u32>,
11369    #[prost(uint64, optional, tag = "4")]
11370    pub time: ::core::option::Option<u64>,
11371}
11372#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11373pub struct CpuhpPauseFtraceEvent {
11374    #[prost(uint32, optional, tag = "1")]
11375    pub active_cpus: ::core::option::Option<u32>,
11376    #[prost(uint32, optional, tag = "2")]
11377    pub cpus: ::core::option::Option<u32>,
11378    #[prost(uint32, optional, tag = "3")]
11379    pub pause: ::core::option::Option<u32>,
11380    #[prost(uint32, optional, tag = "4")]
11381    pub time: ::core::option::Option<u32>,
11382}
11383#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11384pub struct CrosEcSensorhubDataFtraceEvent {
11385    #[prost(int64, optional, tag = "1")]
11386    pub current_time: ::core::option::Option<i64>,
11387    #[prost(int64, optional, tag = "2")]
11388    pub current_timestamp: ::core::option::Option<i64>,
11389    #[prost(int64, optional, tag = "3")]
11390    pub delta: ::core::option::Option<i64>,
11391    #[prost(uint32, optional, tag = "4")]
11392    pub ec_fifo_timestamp: ::core::option::Option<u32>,
11393    #[prost(uint32, optional, tag = "5")]
11394    pub ec_sensor_num: ::core::option::Option<u32>,
11395    #[prost(int64, optional, tag = "6")]
11396    pub fifo_timestamp: ::core::option::Option<i64>,
11397}
11398#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11399pub struct DcvshFreqFtraceEvent {
11400    #[prost(uint64, optional, tag = "1")]
11401    pub cpu: ::core::option::Option<u64>,
11402    #[prost(uint64, optional, tag = "2")]
11403    pub freq: ::core::option::Option<u64>,
11404}
11405#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11406pub struct DevfreqFrequencyFtraceEvent {
11407    #[prost(string, optional, tag = "1")]
11408    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
11409    #[prost(uint64, optional, tag = "2")]
11410    pub freq: ::core::option::Option<u64>,
11411    #[prost(uint64, optional, tag = "3")]
11412    pub prev_freq: ::core::option::Option<u64>,
11413    #[prost(uint64, optional, tag = "4")]
11414    pub busy_time: ::core::option::Option<u64>,
11415    #[prost(uint64, optional, tag = "5")]
11416    pub total_time: ::core::option::Option<u64>,
11417}
11418#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11419pub struct DmaFenceInitFtraceEvent {
11420    #[prost(uint32, optional, tag = "1")]
11421    pub context: ::core::option::Option<u32>,
11422    #[prost(string, optional, tag = "2")]
11423    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11424    #[prost(uint32, optional, tag = "3")]
11425    pub seqno: ::core::option::Option<u32>,
11426    #[prost(string, optional, tag = "4")]
11427    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11428}
11429#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11430pub struct DmaFenceEmitFtraceEvent {
11431    #[prost(uint32, optional, tag = "1")]
11432    pub context: ::core::option::Option<u32>,
11433    #[prost(string, optional, tag = "2")]
11434    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11435    #[prost(uint32, optional, tag = "3")]
11436    pub seqno: ::core::option::Option<u32>,
11437    #[prost(string, optional, tag = "4")]
11438    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11439}
11440#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11441pub struct DmaFenceSignaledFtraceEvent {
11442    #[prost(uint32, optional, tag = "1")]
11443    pub context: ::core::option::Option<u32>,
11444    #[prost(string, optional, tag = "2")]
11445    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11446    #[prost(uint32, optional, tag = "3")]
11447    pub seqno: ::core::option::Option<u32>,
11448    #[prost(string, optional, tag = "4")]
11449    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11450}
11451#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11452pub struct DmaFenceWaitStartFtraceEvent {
11453    #[prost(uint32, optional, tag = "1")]
11454    pub context: ::core::option::Option<u32>,
11455    #[prost(string, optional, tag = "2")]
11456    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11457    #[prost(uint32, optional, tag = "3")]
11458    pub seqno: ::core::option::Option<u32>,
11459    #[prost(string, optional, tag = "4")]
11460    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11461}
11462#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11463pub struct DmaFenceWaitEndFtraceEvent {
11464    #[prost(uint32, optional, tag = "1")]
11465    pub context: ::core::option::Option<u32>,
11466    #[prost(string, optional, tag = "2")]
11467    pub driver: ::core::option::Option<::prost::alloc::string::String>,
11468    #[prost(uint32, optional, tag = "3")]
11469    pub seqno: ::core::option::Option<u32>,
11470    #[prost(string, optional, tag = "4")]
11471    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
11472}
11473#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11474pub struct DmaHeapStatFtraceEvent {
11475    #[prost(uint64, optional, tag = "1")]
11476    pub inode: ::core::option::Option<u64>,
11477    #[prost(int64, optional, tag = "2")]
11478    pub len: ::core::option::Option<i64>,
11479    #[prost(uint64, optional, tag = "3")]
11480    pub total_allocated: ::core::option::Option<u64>,
11481}
11482#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11483pub struct DpuTracingMarkWriteFtraceEvent {
11484    #[prost(int32, optional, tag = "1")]
11485    pub pid: ::core::option::Option<i32>,
11486    #[prost(string, optional, tag = "2")]
11487    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
11488    #[prost(uint32, optional, tag = "3")]
11489    pub trace_begin: ::core::option::Option<u32>,
11490    #[prost(string, optional, tag = "4")]
11491    pub name: ::core::option::Option<::prost::alloc::string::String>,
11492    #[prost(uint32, optional, tag = "5")]
11493    pub r#type: ::core::option::Option<u32>,
11494    #[prost(int32, optional, tag = "6")]
11495    pub value: ::core::option::Option<i32>,
11496}
11497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11498pub struct DpuDsiCmdFifoStatusFtraceEvent {
11499    #[prost(uint32, optional, tag = "1")]
11500    pub header: ::core::option::Option<u32>,
11501    #[prost(uint32, optional, tag = "2")]
11502    pub payload: ::core::option::Option<u32>,
11503}
11504#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11505pub struct DpuDsiRxFtraceEvent {
11506    #[prost(uint32, optional, tag = "1")]
11507    pub cmd: ::core::option::Option<u32>,
11508    #[prost(bytes = "vec", optional, tag = "3")]
11509    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11510}
11511#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11512pub struct DpuDsiTxFtraceEvent {
11513    #[prost(uint32, optional, tag = "1")]
11514    pub r#type: ::core::option::Option<u32>,
11515    #[prost(uint32, optional, tag = "3")]
11516    pub last: ::core::option::Option<u32>,
11517    #[prost(uint32, optional, tag = "4")]
11518    pub delay_ms: ::core::option::Option<u32>,
11519    #[prost(bytes = "vec", optional, tag = "5")]
11520    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11521}
11522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11523pub struct DpuDispDpuUnderrunFtraceEvent {
11524    #[prost(int32, optional, tag = "1")]
11525    pub id: ::core::option::Option<i32>,
11526    #[prost(int32, optional, tag = "2")]
11527    pub frames_pending: ::core::option::Option<i32>,
11528    #[prost(int32, optional, tag = "3")]
11529    pub vsync_count: ::core::option::Option<i32>,
11530}
11531#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11532pub struct DpuDispVblankIrqEnableFtraceEvent {
11533    #[prost(int32, optional, tag = "1")]
11534    pub id: ::core::option::Option<i32>,
11535    #[prost(int32, optional, tag = "2")]
11536    pub output_id: ::core::option::Option<i32>,
11537    #[prost(int32, optional, tag = "3")]
11538    pub enable: ::core::option::Option<i32>,
11539}
11540#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11541pub struct DpuDispFrameDoneTimeoutFtraceEvent {
11542    #[prost(int32, optional, tag = "1")]
11543    pub display_id: ::core::option::Option<i32>,
11544    #[prost(uint32, optional, tag = "2")]
11545    pub output_id: ::core::option::Option<u32>,
11546    #[prost(int32, optional, tag = "3")]
11547    pub frames_pending: ::core::option::Option<i32>,
11548    #[prost(int32, optional, tag = "4")]
11549    pub te_count: ::core::option::Option<i32>,
11550    #[prost(uint32, optional, tag = "5")]
11551    pub during_disable: ::core::option::Option<u32>,
11552}
11553#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11554pub struct DpuDispFrameStartTimeoutFtraceEvent {
11555    #[prost(int32, optional, tag = "1")]
11556    pub display_id: ::core::option::Option<i32>,
11557    #[prost(uint32, optional, tag = "2")]
11558    pub output_id: ::core::option::Option<u32>,
11559    #[prost(int32, optional, tag = "3")]
11560    pub frames_pending: ::core::option::Option<i32>,
11561    #[prost(int32, optional, tag = "4")]
11562    pub te_count: ::core::option::Option<i32>,
11563}
11564#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11565pub struct DpuDispFrameDoneMissingFtraceEvent {
11566    #[prost(int32, optional, tag = "1")]
11567    pub display_id: ::core::option::Option<i32>,
11568    #[prost(uint32, optional, tag = "2")]
11569    pub output_id: ::core::option::Option<u32>,
11570    #[prost(int32, optional, tag = "3")]
11571    pub frames_pending: ::core::option::Option<i32>,
11572    #[prost(int32, optional, tag = "4")]
11573    pub te_count: ::core::option::Option<i32>,
11574}
11575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11576pub struct DpuDispFrameStartMissingFtraceEvent {
11577    #[prost(int32, optional, tag = "1")]
11578    pub display_id: ::core::option::Option<i32>,
11579    #[prost(uint32, optional, tag = "2")]
11580    pub output_id: ::core::option::Option<u32>,
11581    #[prost(int32, optional, tag = "3")]
11582    pub frames_pending: ::core::option::Option<i32>,
11583    #[prost(int32, optional, tag = "4")]
11584    pub te_count: ::core::option::Option<i32>,
11585}
11586#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11587pub struct DpuDispDpuLineUnderrunFtraceEvent {
11588    #[prost(int32, optional, tag = "1")]
11589    pub id: ::core::option::Option<i32>,
11590    #[prost(int32, optional, tag = "2")]
11591    pub frames_pending: ::core::option::Option<i32>,
11592    #[prost(int32, optional, tag = "3")]
11593    pub vsync_count: ::core::option::Option<i32>,
11594}
11595#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11596pub struct DrmVblankEventFtraceEvent {
11597    #[prost(int32, optional, tag = "1")]
11598    pub crtc: ::core::option::Option<i32>,
11599    #[prost(uint32, optional, tag = "2")]
11600    pub high_prec: ::core::option::Option<u32>,
11601    #[prost(uint32, optional, tag = "3")]
11602    pub seq: ::core::option::Option<u32>,
11603    #[prost(int64, optional, tag = "4")]
11604    pub time: ::core::option::Option<i64>,
11605}
11606#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11607pub struct DrmVblankEventDeliveredFtraceEvent {
11608    #[prost(int32, optional, tag = "1")]
11609    pub crtc: ::core::option::Option<i32>,
11610    #[prost(uint64, optional, tag = "2")]
11611    pub file: ::core::option::Option<u64>,
11612    #[prost(uint32, optional, tag = "3")]
11613    pub seq: ::core::option::Option<u32>,
11614}
11615#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11616pub struct Dwc3AllocRequestFtraceEvent {
11617    #[prost(string, optional, tag = "1")]
11618    pub name: ::core::option::Option<::prost::alloc::string::String>,
11619    #[prost(uint64, optional, tag = "2")]
11620    pub req: ::core::option::Option<u64>,
11621    #[prost(uint32, optional, tag = "3")]
11622    pub actual: ::core::option::Option<u32>,
11623    #[prost(uint32, optional, tag = "4")]
11624    pub length: ::core::option::Option<u32>,
11625    #[prost(int32, optional, tag = "5")]
11626    pub status: ::core::option::Option<i32>,
11627    #[prost(int32, optional, tag = "6")]
11628    pub zero: ::core::option::Option<i32>,
11629    #[prost(int32, optional, tag = "7")]
11630    pub short_not_ok: ::core::option::Option<i32>,
11631    #[prost(int32, optional, tag = "8")]
11632    pub no_interrupt: ::core::option::Option<i32>,
11633}
11634#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11635pub struct Dwc3CompleteTrbFtraceEvent {
11636    #[prost(string, optional, tag = "1")]
11637    pub name: ::core::option::Option<::prost::alloc::string::String>,
11638    #[prost(uint64, optional, tag = "2")]
11639    pub trb: ::core::option::Option<u64>,
11640    #[prost(uint32, optional, tag = "3")]
11641    pub allocated: ::core::option::Option<u32>,
11642    #[prost(uint32, optional, tag = "4")]
11643    pub queued: ::core::option::Option<u32>,
11644    #[prost(uint32, optional, tag = "5")]
11645    pub bpl: ::core::option::Option<u32>,
11646    #[prost(uint32, optional, tag = "6")]
11647    pub bph: ::core::option::Option<u32>,
11648    #[prost(uint32, optional, tag = "7")]
11649    pub size: ::core::option::Option<u32>,
11650    #[prost(uint32, optional, tag = "8")]
11651    pub ctrl: ::core::option::Option<u32>,
11652    #[prost(uint32, optional, tag = "9")]
11653    pub r#type: ::core::option::Option<u32>,
11654    #[prost(uint32, optional, tag = "10")]
11655    pub enqueue: ::core::option::Option<u32>,
11656    #[prost(uint32, optional, tag = "11")]
11657    pub dequeue: ::core::option::Option<u32>,
11658}
11659#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11660pub struct Dwc3CtrlReqFtraceEvent {
11661    #[prost(uint32, optional, tag = "1")]
11662    pub b_request_type: ::core::option::Option<u32>,
11663    #[prost(uint32, optional, tag = "2")]
11664    pub b_request: ::core::option::Option<u32>,
11665    #[prost(uint32, optional, tag = "3")]
11666    pub w_value: ::core::option::Option<u32>,
11667    #[prost(uint32, optional, tag = "4")]
11668    pub w_index: ::core::option::Option<u32>,
11669    #[prost(uint32, optional, tag = "5")]
11670    pub w_length: ::core::option::Option<u32>,
11671    #[prost(string, optional, tag = "6")]
11672    pub str: ::core::option::Option<::prost::alloc::string::String>,
11673}
11674#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11675pub struct Dwc3EpDequeueFtraceEvent {
11676    #[prost(string, optional, tag = "1")]
11677    pub name: ::core::option::Option<::prost::alloc::string::String>,
11678    #[prost(uint64, optional, tag = "2")]
11679    pub req: ::core::option::Option<u64>,
11680    #[prost(uint32, optional, tag = "3")]
11681    pub actual: ::core::option::Option<u32>,
11682    #[prost(uint32, optional, tag = "4")]
11683    pub length: ::core::option::Option<u32>,
11684    #[prost(int32, optional, tag = "5")]
11685    pub status: ::core::option::Option<i32>,
11686    #[prost(int32, optional, tag = "6")]
11687    pub zero: ::core::option::Option<i32>,
11688    #[prost(int32, optional, tag = "7")]
11689    pub short_not_ok: ::core::option::Option<i32>,
11690    #[prost(int32, optional, tag = "8")]
11691    pub no_interrupt: ::core::option::Option<i32>,
11692}
11693#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11694pub struct Dwc3EpQueueFtraceEvent {
11695    #[prost(string, optional, tag = "1")]
11696    pub name: ::core::option::Option<::prost::alloc::string::String>,
11697    #[prost(uint64, optional, tag = "2")]
11698    pub req: ::core::option::Option<u64>,
11699    #[prost(uint32, optional, tag = "3")]
11700    pub actual: ::core::option::Option<u32>,
11701    #[prost(uint32, optional, tag = "4")]
11702    pub length: ::core::option::Option<u32>,
11703    #[prost(int32, optional, tag = "5")]
11704    pub status: ::core::option::Option<i32>,
11705    #[prost(int32, optional, tag = "6")]
11706    pub zero: ::core::option::Option<i32>,
11707    #[prost(int32, optional, tag = "7")]
11708    pub short_not_ok: ::core::option::Option<i32>,
11709    #[prost(int32, optional, tag = "8")]
11710    pub no_interrupt: ::core::option::Option<i32>,
11711}
11712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11713pub struct Dwc3EventFtraceEvent {
11714    #[prost(uint32, optional, tag = "1")]
11715    pub event: ::core::option::Option<u32>,
11716    #[prost(uint32, optional, tag = "2")]
11717    pub ep0state: ::core::option::Option<u32>,
11718    #[prost(string, optional, tag = "3")]
11719    pub str: ::core::option::Option<::prost::alloc::string::String>,
11720}
11721#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11722pub struct Dwc3FreeRequestFtraceEvent {
11723    #[prost(string, optional, tag = "1")]
11724    pub name: ::core::option::Option<::prost::alloc::string::String>,
11725    #[prost(uint64, optional, tag = "2")]
11726    pub req: ::core::option::Option<u64>,
11727    #[prost(uint32, optional, tag = "3")]
11728    pub actual: ::core::option::Option<u32>,
11729    #[prost(uint32, optional, tag = "4")]
11730    pub length: ::core::option::Option<u32>,
11731    #[prost(int32, optional, tag = "5")]
11732    pub status: ::core::option::Option<i32>,
11733    #[prost(int32, optional, tag = "6")]
11734    pub zero: ::core::option::Option<i32>,
11735    #[prost(int32, optional, tag = "7")]
11736    pub short_not_ok: ::core::option::Option<i32>,
11737    #[prost(int32, optional, tag = "8")]
11738    pub no_interrupt: ::core::option::Option<i32>,
11739}
11740#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11741pub struct Dwc3GadgetEpCmdFtraceEvent {
11742    #[prost(string, optional, tag = "1")]
11743    pub name: ::core::option::Option<::prost::alloc::string::String>,
11744    #[prost(uint32, optional, tag = "2")]
11745    pub cmd: ::core::option::Option<u32>,
11746    #[prost(uint32, optional, tag = "3")]
11747    pub param0: ::core::option::Option<u32>,
11748    #[prost(uint32, optional, tag = "4")]
11749    pub param1: ::core::option::Option<u32>,
11750    #[prost(uint32, optional, tag = "5")]
11751    pub param2: ::core::option::Option<u32>,
11752    #[prost(int32, optional, tag = "6")]
11753    pub cmd_status: ::core::option::Option<i32>,
11754}
11755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11756pub struct Dwc3GadgetEpDisableFtraceEvent {
11757    #[prost(string, optional, tag = "1")]
11758    pub name: ::core::option::Option<::prost::alloc::string::String>,
11759    #[prost(uint32, optional, tag = "2")]
11760    pub maxpacket: ::core::option::Option<u32>,
11761    #[prost(uint32, optional, tag = "3")]
11762    pub maxpacket_limit: ::core::option::Option<u32>,
11763    #[prost(uint32, optional, tag = "4")]
11764    pub max_streams: ::core::option::Option<u32>,
11765    #[prost(uint32, optional, tag = "5")]
11766    pub maxburst: ::core::option::Option<u32>,
11767    #[prost(uint32, optional, tag = "6")]
11768    pub flags: ::core::option::Option<u32>,
11769    #[prost(uint32, optional, tag = "7")]
11770    pub direction: ::core::option::Option<u32>,
11771    #[prost(uint32, optional, tag = "8")]
11772    pub trb_enqueue: ::core::option::Option<u32>,
11773    #[prost(uint32, optional, tag = "9")]
11774    pub trb_dequeue: ::core::option::Option<u32>,
11775}
11776#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11777pub struct Dwc3GadgetEpEnableFtraceEvent {
11778    #[prost(string, optional, tag = "1")]
11779    pub name: ::core::option::Option<::prost::alloc::string::String>,
11780    #[prost(uint32, optional, tag = "2")]
11781    pub maxpacket: ::core::option::Option<u32>,
11782    #[prost(uint32, optional, tag = "3")]
11783    pub maxpacket_limit: ::core::option::Option<u32>,
11784    #[prost(uint32, optional, tag = "4")]
11785    pub max_streams: ::core::option::Option<u32>,
11786    #[prost(uint32, optional, tag = "5")]
11787    pub maxburst: ::core::option::Option<u32>,
11788    #[prost(uint32, optional, tag = "6")]
11789    pub flags: ::core::option::Option<u32>,
11790    #[prost(uint32, optional, tag = "7")]
11791    pub direction: ::core::option::Option<u32>,
11792    #[prost(uint32, optional, tag = "8")]
11793    pub trb_enqueue: ::core::option::Option<u32>,
11794    #[prost(uint32, optional, tag = "9")]
11795    pub trb_dequeue: ::core::option::Option<u32>,
11796}
11797#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11798pub struct Dwc3GadgetGenericCmdFtraceEvent {
11799    #[prost(uint32, optional, tag = "1")]
11800    pub cmd: ::core::option::Option<u32>,
11801    #[prost(uint32, optional, tag = "2")]
11802    pub param: ::core::option::Option<u32>,
11803    #[prost(int32, optional, tag = "3")]
11804    pub status: ::core::option::Option<i32>,
11805}
11806#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11807pub struct Dwc3GadgetGivebackFtraceEvent {
11808    #[prost(string, optional, tag = "1")]
11809    pub name: ::core::option::Option<::prost::alloc::string::String>,
11810    #[prost(uint64, optional, tag = "2")]
11811    pub req: ::core::option::Option<u64>,
11812    #[prost(uint32, optional, tag = "3")]
11813    pub actual: ::core::option::Option<u32>,
11814    #[prost(uint32, optional, tag = "4")]
11815    pub length: ::core::option::Option<u32>,
11816    #[prost(int32, optional, tag = "5")]
11817    pub status: ::core::option::Option<i32>,
11818    #[prost(int32, optional, tag = "6")]
11819    pub zero: ::core::option::Option<i32>,
11820    #[prost(int32, optional, tag = "7")]
11821    pub short_not_ok: ::core::option::Option<i32>,
11822    #[prost(int32, optional, tag = "8")]
11823    pub no_interrupt: ::core::option::Option<i32>,
11824}
11825#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11826pub struct Dwc3PrepareTrbFtraceEvent {
11827    #[prost(string, optional, tag = "1")]
11828    pub name: ::core::option::Option<::prost::alloc::string::String>,
11829    #[prost(uint64, optional, tag = "2")]
11830    pub trb: ::core::option::Option<u64>,
11831    #[prost(uint32, optional, tag = "3")]
11832    pub allocated: ::core::option::Option<u32>,
11833    #[prost(uint32, optional, tag = "4")]
11834    pub queued: ::core::option::Option<u32>,
11835    #[prost(uint32, optional, tag = "5")]
11836    pub bpl: ::core::option::Option<u32>,
11837    #[prost(uint32, optional, tag = "6")]
11838    pub bph: ::core::option::Option<u32>,
11839    #[prost(uint32, optional, tag = "7")]
11840    pub size: ::core::option::Option<u32>,
11841    #[prost(uint32, optional, tag = "8")]
11842    pub ctrl: ::core::option::Option<u32>,
11843    #[prost(uint32, optional, tag = "9")]
11844    pub r#type: ::core::option::Option<u32>,
11845    #[prost(uint32, optional, tag = "10")]
11846    pub enqueue: ::core::option::Option<u32>,
11847    #[prost(uint32, optional, tag = "11")]
11848    pub dequeue: ::core::option::Option<u32>,
11849}
11850#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11851pub struct Dwc3ReadlFtraceEvent {
11852    #[prost(uint64, optional, tag = "1")]
11853    pub base: ::core::option::Option<u64>,
11854    #[prost(uint32, optional, tag = "2")]
11855    pub offset: ::core::option::Option<u32>,
11856    #[prost(uint32, optional, tag = "3")]
11857    pub value: ::core::option::Option<u32>,
11858    #[prost(string, optional, tag = "4")]
11859    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11860}
11861#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11862pub struct Dwc3WritelFtraceEvent {
11863    #[prost(uint64, optional, tag = "1")]
11864    pub base: ::core::option::Option<u64>,
11865    #[prost(uint32, optional, tag = "2")]
11866    pub offset: ::core::option::Option<u32>,
11867    #[prost(uint32, optional, tag = "3")]
11868    pub value: ::core::option::Option<u32>,
11869    #[prost(string, optional, tag = "4")]
11870    pub msg: ::core::option::Option<::prost::alloc::string::String>,
11871}
11872#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11873pub struct Ext4DaWriteBeginFtraceEvent {
11874    #[prost(uint64, optional, tag = "1")]
11875    pub dev: ::core::option::Option<u64>,
11876    #[prost(uint64, optional, tag = "2")]
11877    pub ino: ::core::option::Option<u64>,
11878    #[prost(int64, optional, tag = "3")]
11879    pub pos: ::core::option::Option<i64>,
11880    #[prost(uint32, optional, tag = "4")]
11881    pub len: ::core::option::Option<u32>,
11882    #[prost(uint32, optional, tag = "5")]
11883    pub flags: ::core::option::Option<u32>,
11884}
11885#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11886pub struct Ext4DaWriteEndFtraceEvent {
11887    #[prost(uint64, optional, tag = "1")]
11888    pub dev: ::core::option::Option<u64>,
11889    #[prost(uint64, optional, tag = "2")]
11890    pub ino: ::core::option::Option<u64>,
11891    #[prost(int64, optional, tag = "3")]
11892    pub pos: ::core::option::Option<i64>,
11893    #[prost(uint32, optional, tag = "4")]
11894    pub len: ::core::option::Option<u32>,
11895    #[prost(uint32, optional, tag = "5")]
11896    pub copied: ::core::option::Option<u32>,
11897}
11898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11899pub struct Ext4SyncFileEnterFtraceEvent {
11900    #[prost(uint64, optional, tag = "1")]
11901    pub dev: ::core::option::Option<u64>,
11902    #[prost(uint64, optional, tag = "2")]
11903    pub ino: ::core::option::Option<u64>,
11904    #[prost(uint64, optional, tag = "3")]
11905    pub parent: ::core::option::Option<u64>,
11906    #[prost(int32, optional, tag = "4")]
11907    pub datasync: ::core::option::Option<i32>,
11908}
11909#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11910pub struct Ext4SyncFileExitFtraceEvent {
11911    #[prost(uint64, optional, tag = "1")]
11912    pub dev: ::core::option::Option<u64>,
11913    #[prost(uint64, optional, tag = "2")]
11914    pub ino: ::core::option::Option<u64>,
11915    #[prost(int32, optional, tag = "3")]
11916    pub ret: ::core::option::Option<i32>,
11917}
11918#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11919pub struct Ext4AllocDaBlocksFtraceEvent {
11920    #[prost(uint64, optional, tag = "1")]
11921    pub dev: ::core::option::Option<u64>,
11922    #[prost(uint64, optional, tag = "2")]
11923    pub ino: ::core::option::Option<u64>,
11924    #[prost(uint32, optional, tag = "3")]
11925    pub data_blocks: ::core::option::Option<u32>,
11926    #[prost(uint32, optional, tag = "4")]
11927    pub meta_blocks: ::core::option::Option<u32>,
11928}
11929#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11930pub struct Ext4AllocateBlocksFtraceEvent {
11931    #[prost(uint64, optional, tag = "1")]
11932    pub dev: ::core::option::Option<u64>,
11933    #[prost(uint64, optional, tag = "2")]
11934    pub ino: ::core::option::Option<u64>,
11935    #[prost(uint64, optional, tag = "3")]
11936    pub block: ::core::option::Option<u64>,
11937    #[prost(uint32, optional, tag = "4")]
11938    pub len: ::core::option::Option<u32>,
11939    #[prost(uint32, optional, tag = "5")]
11940    pub logical: ::core::option::Option<u32>,
11941    #[prost(uint32, optional, tag = "6")]
11942    pub lleft: ::core::option::Option<u32>,
11943    #[prost(uint32, optional, tag = "7")]
11944    pub lright: ::core::option::Option<u32>,
11945    #[prost(uint64, optional, tag = "8")]
11946    pub goal: ::core::option::Option<u64>,
11947    #[prost(uint64, optional, tag = "9")]
11948    pub pleft: ::core::option::Option<u64>,
11949    #[prost(uint64, optional, tag = "10")]
11950    pub pright: ::core::option::Option<u64>,
11951    #[prost(uint32, optional, tag = "11")]
11952    pub flags: ::core::option::Option<u32>,
11953}
11954#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11955pub struct Ext4AllocateInodeFtraceEvent {
11956    #[prost(uint64, optional, tag = "1")]
11957    pub dev: ::core::option::Option<u64>,
11958    #[prost(uint64, optional, tag = "2")]
11959    pub ino: ::core::option::Option<u64>,
11960    #[prost(uint64, optional, tag = "3")]
11961    pub dir: ::core::option::Option<u64>,
11962    #[prost(uint32, optional, tag = "4")]
11963    pub mode: ::core::option::Option<u32>,
11964}
11965#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11966pub struct Ext4BeginOrderedTruncateFtraceEvent {
11967    #[prost(uint64, optional, tag = "1")]
11968    pub dev: ::core::option::Option<u64>,
11969    #[prost(uint64, optional, tag = "2")]
11970    pub ino: ::core::option::Option<u64>,
11971    #[prost(int64, optional, tag = "3")]
11972    pub new_size: ::core::option::Option<i64>,
11973}
11974#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11975pub struct Ext4CollapseRangeFtraceEvent {
11976    #[prost(uint64, optional, tag = "1")]
11977    pub dev: ::core::option::Option<u64>,
11978    #[prost(uint64, optional, tag = "2")]
11979    pub ino: ::core::option::Option<u64>,
11980    #[prost(int64, optional, tag = "3")]
11981    pub offset: ::core::option::Option<i64>,
11982    #[prost(int64, optional, tag = "4")]
11983    pub len: ::core::option::Option<i64>,
11984}
11985#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11986pub struct Ext4DaReleaseSpaceFtraceEvent {
11987    #[prost(uint64, optional, tag = "1")]
11988    pub dev: ::core::option::Option<u64>,
11989    #[prost(uint64, optional, tag = "2")]
11990    pub ino: ::core::option::Option<u64>,
11991    #[prost(uint64, optional, tag = "3")]
11992    pub i_blocks: ::core::option::Option<u64>,
11993    #[prost(int32, optional, tag = "4")]
11994    pub freed_blocks: ::core::option::Option<i32>,
11995    #[prost(int32, optional, tag = "5")]
11996    pub reserved_data_blocks: ::core::option::Option<i32>,
11997    #[prost(int32, optional, tag = "6")]
11998    pub reserved_meta_blocks: ::core::option::Option<i32>,
11999    #[prost(int32, optional, tag = "7")]
12000    pub allocated_meta_blocks: ::core::option::Option<i32>,
12001    #[prost(uint32, optional, tag = "8")]
12002    pub mode: ::core::option::Option<u32>,
12003}
12004#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12005pub struct Ext4DaReserveSpaceFtraceEvent {
12006    #[prost(uint64, optional, tag = "1")]
12007    pub dev: ::core::option::Option<u64>,
12008    #[prost(uint64, optional, tag = "2")]
12009    pub ino: ::core::option::Option<u64>,
12010    #[prost(uint64, optional, tag = "3")]
12011    pub i_blocks: ::core::option::Option<u64>,
12012    #[prost(int32, optional, tag = "4")]
12013    pub reserved_data_blocks: ::core::option::Option<i32>,
12014    #[prost(int32, optional, tag = "5")]
12015    pub reserved_meta_blocks: ::core::option::Option<i32>,
12016    #[prost(uint32, optional, tag = "6")]
12017    pub mode: ::core::option::Option<u32>,
12018    #[prost(int32, optional, tag = "7")]
12019    pub md_needed: ::core::option::Option<i32>,
12020}
12021#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12022pub struct Ext4DaUpdateReserveSpaceFtraceEvent {
12023    #[prost(uint64, optional, tag = "1")]
12024    pub dev: ::core::option::Option<u64>,
12025    #[prost(uint64, optional, tag = "2")]
12026    pub ino: ::core::option::Option<u64>,
12027    #[prost(uint64, optional, tag = "3")]
12028    pub i_blocks: ::core::option::Option<u64>,
12029    #[prost(int32, optional, tag = "4")]
12030    pub used_blocks: ::core::option::Option<i32>,
12031    #[prost(int32, optional, tag = "5")]
12032    pub reserved_data_blocks: ::core::option::Option<i32>,
12033    #[prost(int32, optional, tag = "6")]
12034    pub reserved_meta_blocks: ::core::option::Option<i32>,
12035    #[prost(int32, optional, tag = "7")]
12036    pub allocated_meta_blocks: ::core::option::Option<i32>,
12037    #[prost(int32, optional, tag = "8")]
12038    pub quota_claim: ::core::option::Option<i32>,
12039    #[prost(uint32, optional, tag = "9")]
12040    pub mode: ::core::option::Option<u32>,
12041}
12042#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12043pub struct Ext4DaWritePagesFtraceEvent {
12044    #[prost(uint64, optional, tag = "1")]
12045    pub dev: ::core::option::Option<u64>,
12046    #[prost(uint64, optional, tag = "2")]
12047    pub ino: ::core::option::Option<u64>,
12048    #[prost(uint64, optional, tag = "3")]
12049    pub first_page: ::core::option::Option<u64>,
12050    #[prost(int64, optional, tag = "4")]
12051    pub nr_to_write: ::core::option::Option<i64>,
12052    #[prost(int32, optional, tag = "5")]
12053    pub sync_mode: ::core::option::Option<i32>,
12054    #[prost(uint64, optional, tag = "6")]
12055    pub b_blocknr: ::core::option::Option<u64>,
12056    #[prost(uint32, optional, tag = "7")]
12057    pub b_size: ::core::option::Option<u32>,
12058    #[prost(uint32, optional, tag = "8")]
12059    pub b_state: ::core::option::Option<u32>,
12060    #[prost(int32, optional, tag = "9")]
12061    pub io_done: ::core::option::Option<i32>,
12062    #[prost(int32, optional, tag = "10")]
12063    pub pages_written: ::core::option::Option<i32>,
12064}
12065#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12066pub struct Ext4DaWritePagesExtentFtraceEvent {
12067    #[prost(uint64, optional, tag = "1")]
12068    pub dev: ::core::option::Option<u64>,
12069    #[prost(uint64, optional, tag = "2")]
12070    pub ino: ::core::option::Option<u64>,
12071    #[prost(uint64, optional, tag = "3")]
12072    pub lblk: ::core::option::Option<u64>,
12073    #[prost(uint32, optional, tag = "4")]
12074    pub len: ::core::option::Option<u32>,
12075    #[prost(uint32, optional, tag = "5")]
12076    pub flags: ::core::option::Option<u32>,
12077}
12078#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12079pub struct Ext4DirectIoEnterFtraceEvent {
12080    #[prost(uint64, optional, tag = "1")]
12081    pub dev: ::core::option::Option<u64>,
12082    #[prost(uint64, optional, tag = "2")]
12083    pub ino: ::core::option::Option<u64>,
12084    #[prost(int64, optional, tag = "3")]
12085    pub pos: ::core::option::Option<i64>,
12086    #[prost(uint64, optional, tag = "4")]
12087    pub len: ::core::option::Option<u64>,
12088    #[prost(int32, optional, tag = "5")]
12089    pub rw: ::core::option::Option<i32>,
12090}
12091#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12092pub struct Ext4DirectIoExitFtraceEvent {
12093    #[prost(uint64, optional, tag = "1")]
12094    pub dev: ::core::option::Option<u64>,
12095    #[prost(uint64, optional, tag = "2")]
12096    pub ino: ::core::option::Option<u64>,
12097    #[prost(int64, optional, tag = "3")]
12098    pub pos: ::core::option::Option<i64>,
12099    #[prost(uint64, optional, tag = "4")]
12100    pub len: ::core::option::Option<u64>,
12101    #[prost(int32, optional, tag = "5")]
12102    pub rw: ::core::option::Option<i32>,
12103    #[prost(int32, optional, tag = "6")]
12104    pub ret: ::core::option::Option<i32>,
12105}
12106#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12107pub struct Ext4DiscardBlocksFtraceEvent {
12108    #[prost(uint64, optional, tag = "1")]
12109    pub dev: ::core::option::Option<u64>,
12110    #[prost(uint64, optional, tag = "2")]
12111    pub blk: ::core::option::Option<u64>,
12112    #[prost(uint64, optional, tag = "3")]
12113    pub count: ::core::option::Option<u64>,
12114}
12115#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12116pub struct Ext4DiscardPreallocationsFtraceEvent {
12117    #[prost(uint64, optional, tag = "1")]
12118    pub dev: ::core::option::Option<u64>,
12119    #[prost(uint64, optional, tag = "2")]
12120    pub ino: ::core::option::Option<u64>,
12121    #[prost(uint32, optional, tag = "3")]
12122    pub len: ::core::option::Option<u32>,
12123    #[prost(uint32, optional, tag = "4")]
12124    pub needed: ::core::option::Option<u32>,
12125}
12126#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12127pub struct Ext4DropInodeFtraceEvent {
12128    #[prost(uint64, optional, tag = "1")]
12129    pub dev: ::core::option::Option<u64>,
12130    #[prost(uint64, optional, tag = "2")]
12131    pub ino: ::core::option::Option<u64>,
12132    #[prost(int32, optional, tag = "3")]
12133    pub drop: ::core::option::Option<i32>,
12134}
12135#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12136pub struct Ext4EsCacheExtentFtraceEvent {
12137    #[prost(uint64, optional, tag = "1")]
12138    pub dev: ::core::option::Option<u64>,
12139    #[prost(uint64, optional, tag = "2")]
12140    pub ino: ::core::option::Option<u64>,
12141    #[prost(uint32, optional, tag = "3")]
12142    pub lblk: ::core::option::Option<u32>,
12143    #[prost(uint32, optional, tag = "4")]
12144    pub len: ::core::option::Option<u32>,
12145    #[prost(uint64, optional, tag = "5")]
12146    pub pblk: ::core::option::Option<u64>,
12147    #[prost(uint32, optional, tag = "6")]
12148    pub status: ::core::option::Option<u32>,
12149}
12150#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12151pub struct Ext4EsFindDelayedExtentRangeEnterFtraceEvent {
12152    #[prost(uint64, optional, tag = "1")]
12153    pub dev: ::core::option::Option<u64>,
12154    #[prost(uint64, optional, tag = "2")]
12155    pub ino: ::core::option::Option<u64>,
12156    #[prost(uint32, optional, tag = "3")]
12157    pub lblk: ::core::option::Option<u32>,
12158}
12159#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12160pub struct Ext4EsFindDelayedExtentRangeExitFtraceEvent {
12161    #[prost(uint64, optional, tag = "1")]
12162    pub dev: ::core::option::Option<u64>,
12163    #[prost(uint64, optional, tag = "2")]
12164    pub ino: ::core::option::Option<u64>,
12165    #[prost(uint32, optional, tag = "3")]
12166    pub lblk: ::core::option::Option<u32>,
12167    #[prost(uint32, optional, tag = "4")]
12168    pub len: ::core::option::Option<u32>,
12169    #[prost(uint64, optional, tag = "5")]
12170    pub pblk: ::core::option::Option<u64>,
12171    #[prost(uint64, optional, tag = "6")]
12172    pub status: ::core::option::Option<u64>,
12173}
12174#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12175pub struct Ext4EsInsertExtentFtraceEvent {
12176    #[prost(uint64, optional, tag = "1")]
12177    pub dev: ::core::option::Option<u64>,
12178    #[prost(uint64, optional, tag = "2")]
12179    pub ino: ::core::option::Option<u64>,
12180    #[prost(uint32, optional, tag = "3")]
12181    pub lblk: ::core::option::Option<u32>,
12182    #[prost(uint32, optional, tag = "4")]
12183    pub len: ::core::option::Option<u32>,
12184    #[prost(uint64, optional, tag = "5")]
12185    pub pblk: ::core::option::Option<u64>,
12186    #[prost(uint64, optional, tag = "6")]
12187    pub status: ::core::option::Option<u64>,
12188}
12189#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12190pub struct Ext4EsLookupExtentEnterFtraceEvent {
12191    #[prost(uint64, optional, tag = "1")]
12192    pub dev: ::core::option::Option<u64>,
12193    #[prost(uint64, optional, tag = "2")]
12194    pub ino: ::core::option::Option<u64>,
12195    #[prost(uint32, optional, tag = "3")]
12196    pub lblk: ::core::option::Option<u32>,
12197}
12198#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12199pub struct Ext4EsLookupExtentExitFtraceEvent {
12200    #[prost(uint64, optional, tag = "1")]
12201    pub dev: ::core::option::Option<u64>,
12202    #[prost(uint64, optional, tag = "2")]
12203    pub ino: ::core::option::Option<u64>,
12204    #[prost(uint32, optional, tag = "3")]
12205    pub lblk: ::core::option::Option<u32>,
12206    #[prost(uint32, optional, tag = "4")]
12207    pub len: ::core::option::Option<u32>,
12208    #[prost(uint64, optional, tag = "5")]
12209    pub pblk: ::core::option::Option<u64>,
12210    #[prost(uint64, optional, tag = "6")]
12211    pub status: ::core::option::Option<u64>,
12212    #[prost(int32, optional, tag = "7")]
12213    pub found: ::core::option::Option<i32>,
12214}
12215#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12216pub struct Ext4EsRemoveExtentFtraceEvent {
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(int64, optional, tag = "3")]
12222    pub lblk: ::core::option::Option<i64>,
12223    #[prost(int64, optional, tag = "4")]
12224    pub len: ::core::option::Option<i64>,
12225}
12226#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12227pub struct Ext4EsShrinkFtraceEvent {
12228    #[prost(uint64, optional, tag = "1")]
12229    pub dev: ::core::option::Option<u64>,
12230    #[prost(int32, optional, tag = "2")]
12231    pub nr_shrunk: ::core::option::Option<i32>,
12232    #[prost(uint64, optional, tag = "3")]
12233    pub scan_time: ::core::option::Option<u64>,
12234    #[prost(int32, optional, tag = "4")]
12235    pub nr_skipped: ::core::option::Option<i32>,
12236    #[prost(int32, optional, tag = "5")]
12237    pub retried: ::core::option::Option<i32>,
12238}
12239#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12240pub struct Ext4EsShrinkCountFtraceEvent {
12241    #[prost(uint64, optional, tag = "1")]
12242    pub dev: ::core::option::Option<u64>,
12243    #[prost(int32, optional, tag = "2")]
12244    pub nr_to_scan: ::core::option::Option<i32>,
12245    #[prost(int32, optional, tag = "3")]
12246    pub cache_cnt: ::core::option::Option<i32>,
12247}
12248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12249pub struct Ext4EsShrinkScanEnterFtraceEvent {
12250    #[prost(uint64, optional, tag = "1")]
12251    pub dev: ::core::option::Option<u64>,
12252    #[prost(int32, optional, tag = "2")]
12253    pub nr_to_scan: ::core::option::Option<i32>,
12254    #[prost(int32, optional, tag = "3")]
12255    pub cache_cnt: ::core::option::Option<i32>,
12256}
12257#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12258pub struct Ext4EsShrinkScanExitFtraceEvent {
12259    #[prost(uint64, optional, tag = "1")]
12260    pub dev: ::core::option::Option<u64>,
12261    #[prost(int32, optional, tag = "2")]
12262    pub nr_shrunk: ::core::option::Option<i32>,
12263    #[prost(int32, optional, tag = "3")]
12264    pub cache_cnt: ::core::option::Option<i32>,
12265}
12266#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12267pub struct Ext4EvictInodeFtraceEvent {
12268    #[prost(uint64, optional, tag = "1")]
12269    pub dev: ::core::option::Option<u64>,
12270    #[prost(uint64, optional, tag = "2")]
12271    pub ino: ::core::option::Option<u64>,
12272    #[prost(int32, optional, tag = "3")]
12273    pub nlink: ::core::option::Option<i32>,
12274}
12275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12276pub struct Ext4ExtConvertToInitializedEnterFtraceEvent {
12277    #[prost(uint64, optional, tag = "1")]
12278    pub dev: ::core::option::Option<u64>,
12279    #[prost(uint64, optional, tag = "2")]
12280    pub ino: ::core::option::Option<u64>,
12281    #[prost(uint32, optional, tag = "3")]
12282    pub m_lblk: ::core::option::Option<u32>,
12283    #[prost(uint32, optional, tag = "4")]
12284    pub m_len: ::core::option::Option<u32>,
12285    #[prost(uint32, optional, tag = "5")]
12286    pub u_lblk: ::core::option::Option<u32>,
12287    #[prost(uint32, optional, tag = "6")]
12288    pub u_len: ::core::option::Option<u32>,
12289    #[prost(uint64, optional, tag = "7")]
12290    pub u_pblk: ::core::option::Option<u64>,
12291}
12292#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12293pub struct Ext4ExtConvertToInitializedFastpathFtraceEvent {
12294    #[prost(uint64, optional, tag = "1")]
12295    pub dev: ::core::option::Option<u64>,
12296    #[prost(uint64, optional, tag = "2")]
12297    pub ino: ::core::option::Option<u64>,
12298    #[prost(uint32, optional, tag = "3")]
12299    pub m_lblk: ::core::option::Option<u32>,
12300    #[prost(uint32, optional, tag = "4")]
12301    pub m_len: ::core::option::Option<u32>,
12302    #[prost(uint32, optional, tag = "5")]
12303    pub u_lblk: ::core::option::Option<u32>,
12304    #[prost(uint32, optional, tag = "6")]
12305    pub u_len: ::core::option::Option<u32>,
12306    #[prost(uint64, optional, tag = "7")]
12307    pub u_pblk: ::core::option::Option<u64>,
12308    #[prost(uint32, optional, tag = "8")]
12309    pub i_lblk: ::core::option::Option<u32>,
12310    #[prost(uint32, optional, tag = "9")]
12311    pub i_len: ::core::option::Option<u32>,
12312    #[prost(uint64, optional, tag = "10")]
12313    pub i_pblk: ::core::option::Option<u64>,
12314}
12315#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12316pub struct Ext4ExtHandleUnwrittenExtentsFtraceEvent {
12317    #[prost(uint64, optional, tag = "1")]
12318    pub dev: ::core::option::Option<u64>,
12319    #[prost(uint64, optional, tag = "2")]
12320    pub ino: ::core::option::Option<u64>,
12321    #[prost(int32, optional, tag = "3")]
12322    pub flags: ::core::option::Option<i32>,
12323    #[prost(uint32, optional, tag = "4")]
12324    pub lblk: ::core::option::Option<u32>,
12325    #[prost(uint64, optional, tag = "5")]
12326    pub pblk: ::core::option::Option<u64>,
12327    #[prost(uint32, optional, tag = "6")]
12328    pub len: ::core::option::Option<u32>,
12329    #[prost(uint32, optional, tag = "7")]
12330    pub allocated: ::core::option::Option<u32>,
12331    #[prost(uint64, optional, tag = "8")]
12332    pub newblk: ::core::option::Option<u64>,
12333}
12334#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12335pub struct Ext4ExtInCacheFtraceEvent {
12336    #[prost(uint64, optional, tag = "1")]
12337    pub dev: ::core::option::Option<u64>,
12338    #[prost(uint64, optional, tag = "2")]
12339    pub ino: ::core::option::Option<u64>,
12340    #[prost(uint32, optional, tag = "3")]
12341    pub lblk: ::core::option::Option<u32>,
12342    #[prost(int32, optional, tag = "4")]
12343    pub ret: ::core::option::Option<i32>,
12344}
12345#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12346pub struct Ext4ExtLoadExtentFtraceEvent {
12347    #[prost(uint64, optional, tag = "1")]
12348    pub dev: ::core::option::Option<u64>,
12349    #[prost(uint64, optional, tag = "2")]
12350    pub ino: ::core::option::Option<u64>,
12351    #[prost(uint64, optional, tag = "3")]
12352    pub pblk: ::core::option::Option<u64>,
12353    #[prost(uint32, optional, tag = "4")]
12354    pub lblk: ::core::option::Option<u32>,
12355}
12356#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12357pub struct Ext4ExtMapBlocksEnterFtraceEvent {
12358    #[prost(uint64, optional, tag = "1")]
12359    pub dev: ::core::option::Option<u64>,
12360    #[prost(uint64, optional, tag = "2")]
12361    pub ino: ::core::option::Option<u64>,
12362    #[prost(uint32, optional, tag = "3")]
12363    pub lblk: ::core::option::Option<u32>,
12364    #[prost(uint32, optional, tag = "4")]
12365    pub len: ::core::option::Option<u32>,
12366    #[prost(uint32, optional, tag = "5")]
12367    pub flags: ::core::option::Option<u32>,
12368}
12369#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12370pub struct Ext4ExtMapBlocksExitFtraceEvent {
12371    #[prost(uint64, optional, tag = "1")]
12372    pub dev: ::core::option::Option<u64>,
12373    #[prost(uint64, optional, tag = "2")]
12374    pub ino: ::core::option::Option<u64>,
12375    #[prost(uint32, optional, tag = "3")]
12376    pub flags: ::core::option::Option<u32>,
12377    #[prost(uint64, optional, tag = "4")]
12378    pub pblk: ::core::option::Option<u64>,
12379    #[prost(uint32, optional, tag = "5")]
12380    pub lblk: ::core::option::Option<u32>,
12381    #[prost(uint32, optional, tag = "6")]
12382    pub len: ::core::option::Option<u32>,
12383    #[prost(uint32, optional, tag = "7")]
12384    pub mflags: ::core::option::Option<u32>,
12385    #[prost(int32, optional, tag = "8")]
12386    pub ret: ::core::option::Option<i32>,
12387}
12388#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12389pub struct Ext4ExtPutInCacheFtraceEvent {
12390    #[prost(uint64, optional, tag = "1")]
12391    pub dev: ::core::option::Option<u64>,
12392    #[prost(uint64, optional, tag = "2")]
12393    pub ino: ::core::option::Option<u64>,
12394    #[prost(uint32, optional, tag = "3")]
12395    pub lblk: ::core::option::Option<u32>,
12396    #[prost(uint32, optional, tag = "4")]
12397    pub len: ::core::option::Option<u32>,
12398    #[prost(uint64, optional, tag = "5")]
12399    pub start: ::core::option::Option<u64>,
12400}
12401#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12402pub struct Ext4ExtRemoveSpaceFtraceEvent {
12403    #[prost(uint64, optional, tag = "1")]
12404    pub dev: ::core::option::Option<u64>,
12405    #[prost(uint64, optional, tag = "2")]
12406    pub ino: ::core::option::Option<u64>,
12407    #[prost(uint32, optional, tag = "3")]
12408    pub start: ::core::option::Option<u32>,
12409    #[prost(uint32, optional, tag = "4")]
12410    pub end: ::core::option::Option<u32>,
12411    #[prost(int32, optional, tag = "5")]
12412    pub depth: ::core::option::Option<i32>,
12413}
12414#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12415pub struct Ext4ExtRemoveSpaceDoneFtraceEvent {
12416    #[prost(uint64, optional, tag = "1")]
12417    pub dev: ::core::option::Option<u64>,
12418    #[prost(uint64, optional, tag = "2")]
12419    pub ino: ::core::option::Option<u64>,
12420    #[prost(uint32, optional, tag = "3")]
12421    pub start: ::core::option::Option<u32>,
12422    #[prost(uint32, optional, tag = "4")]
12423    pub end: ::core::option::Option<u32>,
12424    #[prost(int32, optional, tag = "5")]
12425    pub depth: ::core::option::Option<i32>,
12426    #[prost(int64, optional, tag = "6")]
12427    pub partial: ::core::option::Option<i64>,
12428    #[prost(uint32, optional, tag = "7")]
12429    pub eh_entries: ::core::option::Option<u32>,
12430    #[prost(uint32, optional, tag = "8")]
12431    pub pc_lblk: ::core::option::Option<u32>,
12432    #[prost(uint64, optional, tag = "9")]
12433    pub pc_pclu: ::core::option::Option<u64>,
12434    #[prost(int32, optional, tag = "10")]
12435    pub pc_state: ::core::option::Option<i32>,
12436}
12437#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12438pub struct Ext4ExtRmIdxFtraceEvent {
12439    #[prost(uint64, optional, tag = "1")]
12440    pub dev: ::core::option::Option<u64>,
12441    #[prost(uint64, optional, tag = "2")]
12442    pub ino: ::core::option::Option<u64>,
12443    #[prost(uint64, optional, tag = "3")]
12444    pub pblk: ::core::option::Option<u64>,
12445}
12446#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12447pub struct Ext4ExtRmLeafFtraceEvent {
12448    #[prost(uint64, optional, tag = "1")]
12449    pub dev: ::core::option::Option<u64>,
12450    #[prost(uint64, optional, tag = "2")]
12451    pub ino: ::core::option::Option<u64>,
12452    #[prost(int64, optional, tag = "3")]
12453    pub partial: ::core::option::Option<i64>,
12454    #[prost(uint32, optional, tag = "4")]
12455    pub start: ::core::option::Option<u32>,
12456    #[prost(uint32, optional, tag = "5")]
12457    pub ee_lblk: ::core::option::Option<u32>,
12458    #[prost(uint64, optional, tag = "6")]
12459    pub ee_pblk: ::core::option::Option<u64>,
12460    #[prost(int32, optional, tag = "7")]
12461    pub ee_len: ::core::option::Option<i32>,
12462    #[prost(uint32, optional, tag = "8")]
12463    pub pc_lblk: ::core::option::Option<u32>,
12464    #[prost(uint64, optional, tag = "9")]
12465    pub pc_pclu: ::core::option::Option<u64>,
12466    #[prost(int32, optional, tag = "10")]
12467    pub pc_state: ::core::option::Option<i32>,
12468}
12469#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12470pub struct Ext4ExtShowExtentFtraceEvent {
12471    #[prost(uint64, optional, tag = "1")]
12472    pub dev: ::core::option::Option<u64>,
12473    #[prost(uint64, optional, tag = "2")]
12474    pub ino: ::core::option::Option<u64>,
12475    #[prost(uint64, optional, tag = "3")]
12476    pub pblk: ::core::option::Option<u64>,
12477    #[prost(uint32, optional, tag = "4")]
12478    pub lblk: ::core::option::Option<u32>,
12479    #[prost(uint32, optional, tag = "5")]
12480    pub len: ::core::option::Option<u32>,
12481}
12482#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12483pub struct Ext4FallocateEnterFtraceEvent {
12484    #[prost(uint64, optional, tag = "1")]
12485    pub dev: ::core::option::Option<u64>,
12486    #[prost(uint64, optional, tag = "2")]
12487    pub ino: ::core::option::Option<u64>,
12488    #[prost(int64, optional, tag = "3")]
12489    pub offset: ::core::option::Option<i64>,
12490    #[prost(int64, optional, tag = "4")]
12491    pub len: ::core::option::Option<i64>,
12492    #[prost(int32, optional, tag = "5")]
12493    pub mode: ::core::option::Option<i32>,
12494    #[prost(int64, optional, tag = "6")]
12495    pub pos: ::core::option::Option<i64>,
12496}
12497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12498pub struct Ext4FallocateExitFtraceEvent {
12499    #[prost(uint64, optional, tag = "1")]
12500    pub dev: ::core::option::Option<u64>,
12501    #[prost(uint64, optional, tag = "2")]
12502    pub ino: ::core::option::Option<u64>,
12503    #[prost(int64, optional, tag = "3")]
12504    pub pos: ::core::option::Option<i64>,
12505    #[prost(uint32, optional, tag = "4")]
12506    pub blocks: ::core::option::Option<u32>,
12507    #[prost(int32, optional, tag = "5")]
12508    pub ret: ::core::option::Option<i32>,
12509}
12510#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12511pub struct Ext4FindDelallocRangeFtraceEvent {
12512    #[prost(uint64, optional, tag = "1")]
12513    pub dev: ::core::option::Option<u64>,
12514    #[prost(uint64, optional, tag = "2")]
12515    pub ino: ::core::option::Option<u64>,
12516    #[prost(uint32, optional, tag = "3")]
12517    pub from: ::core::option::Option<u32>,
12518    #[prost(uint32, optional, tag = "4")]
12519    pub to: ::core::option::Option<u32>,
12520    #[prost(int32, optional, tag = "5")]
12521    pub reverse: ::core::option::Option<i32>,
12522    #[prost(int32, optional, tag = "6")]
12523    pub found: ::core::option::Option<i32>,
12524    #[prost(uint32, optional, tag = "7")]
12525    pub found_blk: ::core::option::Option<u32>,
12526}
12527#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12528pub struct Ext4ForgetFtraceEvent {
12529    #[prost(uint64, optional, tag = "1")]
12530    pub dev: ::core::option::Option<u64>,
12531    #[prost(uint64, optional, tag = "2")]
12532    pub ino: ::core::option::Option<u64>,
12533    #[prost(uint64, optional, tag = "3")]
12534    pub block: ::core::option::Option<u64>,
12535    #[prost(int32, optional, tag = "4")]
12536    pub is_metadata: ::core::option::Option<i32>,
12537    #[prost(uint32, optional, tag = "5")]
12538    pub mode: ::core::option::Option<u32>,
12539}
12540#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12541pub struct Ext4FreeBlocksFtraceEvent {
12542    #[prost(uint64, optional, tag = "1")]
12543    pub dev: ::core::option::Option<u64>,
12544    #[prost(uint64, optional, tag = "2")]
12545    pub ino: ::core::option::Option<u64>,
12546    #[prost(uint64, optional, tag = "3")]
12547    pub block: ::core::option::Option<u64>,
12548    #[prost(uint64, optional, tag = "4")]
12549    pub count: ::core::option::Option<u64>,
12550    #[prost(int32, optional, tag = "5")]
12551    pub flags: ::core::option::Option<i32>,
12552    #[prost(uint32, optional, tag = "6")]
12553    pub mode: ::core::option::Option<u32>,
12554}
12555#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12556pub struct Ext4FreeInodeFtraceEvent {
12557    #[prost(uint64, optional, tag = "1")]
12558    pub dev: ::core::option::Option<u64>,
12559    #[prost(uint64, optional, tag = "2")]
12560    pub ino: ::core::option::Option<u64>,
12561    #[prost(uint32, optional, tag = "3")]
12562    pub uid: ::core::option::Option<u32>,
12563    #[prost(uint32, optional, tag = "4")]
12564    pub gid: ::core::option::Option<u32>,
12565    #[prost(uint64, optional, tag = "5")]
12566    pub blocks: ::core::option::Option<u64>,
12567    #[prost(uint32, optional, tag = "6")]
12568    pub mode: ::core::option::Option<u32>,
12569}
12570#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12571pub struct Ext4GetImpliedClusterAllocExitFtraceEvent {
12572    #[prost(uint64, optional, tag = "1")]
12573    pub dev: ::core::option::Option<u64>,
12574    #[prost(uint32, optional, tag = "2")]
12575    pub flags: ::core::option::Option<u32>,
12576    #[prost(uint32, optional, tag = "3")]
12577    pub lblk: ::core::option::Option<u32>,
12578    #[prost(uint64, optional, tag = "4")]
12579    pub pblk: ::core::option::Option<u64>,
12580    #[prost(uint32, optional, tag = "5")]
12581    pub len: ::core::option::Option<u32>,
12582    #[prost(int32, optional, tag = "6")]
12583    pub ret: ::core::option::Option<i32>,
12584}
12585#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12586pub struct Ext4GetReservedClusterAllocFtraceEvent {
12587    #[prost(uint64, optional, tag = "1")]
12588    pub dev: ::core::option::Option<u64>,
12589    #[prost(uint64, optional, tag = "2")]
12590    pub ino: ::core::option::Option<u64>,
12591    #[prost(uint32, optional, tag = "3")]
12592    pub lblk: ::core::option::Option<u32>,
12593    #[prost(uint32, optional, tag = "4")]
12594    pub len: ::core::option::Option<u32>,
12595}
12596#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12597pub struct Ext4IndMapBlocksEnterFtraceEvent {
12598    #[prost(uint64, optional, tag = "1")]
12599    pub dev: ::core::option::Option<u64>,
12600    #[prost(uint64, optional, tag = "2")]
12601    pub ino: ::core::option::Option<u64>,
12602    #[prost(uint32, optional, tag = "3")]
12603    pub lblk: ::core::option::Option<u32>,
12604    #[prost(uint32, optional, tag = "4")]
12605    pub len: ::core::option::Option<u32>,
12606    #[prost(uint32, optional, tag = "5")]
12607    pub flags: ::core::option::Option<u32>,
12608}
12609#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12610pub struct Ext4IndMapBlocksExitFtraceEvent {
12611    #[prost(uint64, optional, tag = "1")]
12612    pub dev: ::core::option::Option<u64>,
12613    #[prost(uint64, optional, tag = "2")]
12614    pub ino: ::core::option::Option<u64>,
12615    #[prost(uint32, optional, tag = "3")]
12616    pub flags: ::core::option::Option<u32>,
12617    #[prost(uint64, optional, tag = "4")]
12618    pub pblk: ::core::option::Option<u64>,
12619    #[prost(uint32, optional, tag = "5")]
12620    pub lblk: ::core::option::Option<u32>,
12621    #[prost(uint32, optional, tag = "6")]
12622    pub len: ::core::option::Option<u32>,
12623    #[prost(uint32, optional, tag = "7")]
12624    pub mflags: ::core::option::Option<u32>,
12625    #[prost(int32, optional, tag = "8")]
12626    pub ret: ::core::option::Option<i32>,
12627}
12628#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12629pub struct Ext4InsertRangeFtraceEvent {
12630    #[prost(uint64, optional, tag = "1")]
12631    pub dev: ::core::option::Option<u64>,
12632    #[prost(uint64, optional, tag = "2")]
12633    pub ino: ::core::option::Option<u64>,
12634    #[prost(int64, optional, tag = "3")]
12635    pub offset: ::core::option::Option<i64>,
12636    #[prost(int64, optional, tag = "4")]
12637    pub len: ::core::option::Option<i64>,
12638}
12639#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12640pub struct Ext4InvalidatepageFtraceEvent {
12641    #[prost(uint64, optional, tag = "1")]
12642    pub dev: ::core::option::Option<u64>,
12643    #[prost(uint64, optional, tag = "2")]
12644    pub ino: ::core::option::Option<u64>,
12645    #[prost(uint64, optional, tag = "3")]
12646    pub index: ::core::option::Option<u64>,
12647    #[prost(uint64, optional, tag = "4")]
12648    pub offset: ::core::option::Option<u64>,
12649    #[prost(uint32, optional, tag = "5")]
12650    pub length: ::core::option::Option<u32>,
12651}
12652#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12653pub struct Ext4JournalStartFtraceEvent {
12654    #[prost(uint64, optional, tag = "1")]
12655    pub dev: ::core::option::Option<u64>,
12656    #[prost(uint64, optional, tag = "2")]
12657    pub ip: ::core::option::Option<u64>,
12658    #[prost(int32, optional, tag = "3")]
12659    pub blocks: ::core::option::Option<i32>,
12660    #[prost(int32, optional, tag = "4")]
12661    pub rsv_blocks: ::core::option::Option<i32>,
12662    #[prost(int32, optional, tag = "5")]
12663    pub nblocks: ::core::option::Option<i32>,
12664    #[prost(int32, optional, tag = "6")]
12665    pub revoke_creds: ::core::option::Option<i32>,
12666}
12667#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12668pub struct Ext4JournalStartReservedFtraceEvent {
12669    #[prost(uint64, optional, tag = "1")]
12670    pub dev: ::core::option::Option<u64>,
12671    #[prost(uint64, optional, tag = "2")]
12672    pub ip: ::core::option::Option<u64>,
12673    #[prost(int32, optional, tag = "3")]
12674    pub blocks: ::core::option::Option<i32>,
12675}
12676#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12677pub struct Ext4JournalledInvalidatepageFtraceEvent {
12678    #[prost(uint64, optional, tag = "1")]
12679    pub dev: ::core::option::Option<u64>,
12680    #[prost(uint64, optional, tag = "2")]
12681    pub ino: ::core::option::Option<u64>,
12682    #[prost(uint64, optional, tag = "3")]
12683    pub index: ::core::option::Option<u64>,
12684    #[prost(uint64, optional, tag = "4")]
12685    pub offset: ::core::option::Option<u64>,
12686    #[prost(uint32, optional, tag = "5")]
12687    pub length: ::core::option::Option<u32>,
12688}
12689#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12690pub struct Ext4JournalledWriteEndFtraceEvent {
12691    #[prost(uint64, optional, tag = "1")]
12692    pub dev: ::core::option::Option<u64>,
12693    #[prost(uint64, optional, tag = "2")]
12694    pub ino: ::core::option::Option<u64>,
12695    #[prost(int64, optional, tag = "3")]
12696    pub pos: ::core::option::Option<i64>,
12697    #[prost(uint32, optional, tag = "4")]
12698    pub len: ::core::option::Option<u32>,
12699    #[prost(uint32, optional, tag = "5")]
12700    pub copied: ::core::option::Option<u32>,
12701}
12702#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12703pub struct Ext4LoadInodeFtraceEvent {
12704    #[prost(uint64, optional, tag = "1")]
12705    pub dev: ::core::option::Option<u64>,
12706    #[prost(uint64, optional, tag = "2")]
12707    pub ino: ::core::option::Option<u64>,
12708}
12709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12710pub struct Ext4LoadInodeBitmapFtraceEvent {
12711    #[prost(uint64, optional, tag = "1")]
12712    pub dev: ::core::option::Option<u64>,
12713    #[prost(uint32, optional, tag = "2")]
12714    pub group: ::core::option::Option<u32>,
12715}
12716#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12717pub struct Ext4MarkInodeDirtyFtraceEvent {
12718    #[prost(uint64, optional, tag = "1")]
12719    pub dev: ::core::option::Option<u64>,
12720    #[prost(uint64, optional, tag = "2")]
12721    pub ino: ::core::option::Option<u64>,
12722    #[prost(uint64, optional, tag = "3")]
12723    pub ip: ::core::option::Option<u64>,
12724}
12725#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12726pub struct Ext4MbBitmapLoadFtraceEvent {
12727    #[prost(uint64, optional, tag = "1")]
12728    pub dev: ::core::option::Option<u64>,
12729    #[prost(uint32, optional, tag = "2")]
12730    pub group: ::core::option::Option<u32>,
12731}
12732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12733pub struct Ext4MbBuddyBitmapLoadFtraceEvent {
12734    #[prost(uint64, optional, tag = "1")]
12735    pub dev: ::core::option::Option<u64>,
12736    #[prost(uint32, optional, tag = "2")]
12737    pub group: ::core::option::Option<u32>,
12738}
12739#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12740pub struct Ext4MbDiscardPreallocationsFtraceEvent {
12741    #[prost(uint64, optional, tag = "1")]
12742    pub dev: ::core::option::Option<u64>,
12743    #[prost(int32, optional, tag = "2")]
12744    pub needed: ::core::option::Option<i32>,
12745}
12746#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12747pub struct Ext4MbNewGroupPaFtraceEvent {
12748    #[prost(uint64, optional, tag = "1")]
12749    pub dev: ::core::option::Option<u64>,
12750    #[prost(uint64, optional, tag = "2")]
12751    pub ino: ::core::option::Option<u64>,
12752    #[prost(uint64, optional, tag = "3")]
12753    pub pa_pstart: ::core::option::Option<u64>,
12754    #[prost(uint64, optional, tag = "4")]
12755    pub pa_lstart: ::core::option::Option<u64>,
12756    #[prost(uint32, optional, tag = "5")]
12757    pub pa_len: ::core::option::Option<u32>,
12758}
12759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12760pub struct Ext4MbNewInodePaFtraceEvent {
12761    #[prost(uint64, optional, tag = "1")]
12762    pub dev: ::core::option::Option<u64>,
12763    #[prost(uint64, optional, tag = "2")]
12764    pub ino: ::core::option::Option<u64>,
12765    #[prost(uint64, optional, tag = "3")]
12766    pub pa_pstart: ::core::option::Option<u64>,
12767    #[prost(uint64, optional, tag = "4")]
12768    pub pa_lstart: ::core::option::Option<u64>,
12769    #[prost(uint32, optional, tag = "5")]
12770    pub pa_len: ::core::option::Option<u32>,
12771}
12772#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12773pub struct Ext4MbReleaseGroupPaFtraceEvent {
12774    #[prost(uint64, optional, tag = "1")]
12775    pub dev: ::core::option::Option<u64>,
12776    #[prost(uint64, optional, tag = "2")]
12777    pub pa_pstart: ::core::option::Option<u64>,
12778    #[prost(uint32, optional, tag = "3")]
12779    pub pa_len: ::core::option::Option<u32>,
12780}
12781#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12782pub struct Ext4MbReleaseInodePaFtraceEvent {
12783    #[prost(uint64, optional, tag = "1")]
12784    pub dev: ::core::option::Option<u64>,
12785    #[prost(uint64, optional, tag = "2")]
12786    pub ino: ::core::option::Option<u64>,
12787    #[prost(uint64, optional, tag = "3")]
12788    pub block: ::core::option::Option<u64>,
12789    #[prost(uint32, optional, tag = "4")]
12790    pub count: ::core::option::Option<u32>,
12791}
12792#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12793pub struct Ext4MballocAllocFtraceEvent {
12794    #[prost(uint64, optional, tag = "1")]
12795    pub dev: ::core::option::Option<u64>,
12796    #[prost(uint64, optional, tag = "2")]
12797    pub ino: ::core::option::Option<u64>,
12798    #[prost(uint32, optional, tag = "3")]
12799    pub orig_logical: ::core::option::Option<u32>,
12800    #[prost(int32, optional, tag = "4")]
12801    pub orig_start: ::core::option::Option<i32>,
12802    #[prost(uint32, optional, tag = "5")]
12803    pub orig_group: ::core::option::Option<u32>,
12804    #[prost(int32, optional, tag = "6")]
12805    pub orig_len: ::core::option::Option<i32>,
12806    #[prost(uint32, optional, tag = "7")]
12807    pub goal_logical: ::core::option::Option<u32>,
12808    #[prost(int32, optional, tag = "8")]
12809    pub goal_start: ::core::option::Option<i32>,
12810    #[prost(uint32, optional, tag = "9")]
12811    pub goal_group: ::core::option::Option<u32>,
12812    #[prost(int32, optional, tag = "10")]
12813    pub goal_len: ::core::option::Option<i32>,
12814    #[prost(uint32, optional, tag = "11")]
12815    pub result_logical: ::core::option::Option<u32>,
12816    #[prost(int32, optional, tag = "12")]
12817    pub result_start: ::core::option::Option<i32>,
12818    #[prost(uint32, optional, tag = "13")]
12819    pub result_group: ::core::option::Option<u32>,
12820    #[prost(int32, optional, tag = "14")]
12821    pub result_len: ::core::option::Option<i32>,
12822    #[prost(uint32, optional, tag = "15")]
12823    pub found: ::core::option::Option<u32>,
12824    #[prost(uint32, optional, tag = "16")]
12825    pub groups: ::core::option::Option<u32>,
12826    #[prost(uint32, optional, tag = "17")]
12827    pub buddy: ::core::option::Option<u32>,
12828    #[prost(uint32, optional, tag = "18")]
12829    pub flags: ::core::option::Option<u32>,
12830    #[prost(uint32, optional, tag = "19")]
12831    pub tail: ::core::option::Option<u32>,
12832    #[prost(uint32, optional, tag = "20")]
12833    pub cr: ::core::option::Option<u32>,
12834}
12835#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12836pub struct Ext4MballocDiscardFtraceEvent {
12837    #[prost(uint64, optional, tag = "1")]
12838    pub dev: ::core::option::Option<u64>,
12839    #[prost(uint64, optional, tag = "2")]
12840    pub ino: ::core::option::Option<u64>,
12841    #[prost(int32, optional, tag = "3")]
12842    pub result_start: ::core::option::Option<i32>,
12843    #[prost(uint32, optional, tag = "4")]
12844    pub result_group: ::core::option::Option<u32>,
12845    #[prost(int32, optional, tag = "5")]
12846    pub result_len: ::core::option::Option<i32>,
12847}
12848#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12849pub struct Ext4MballocFreeFtraceEvent {
12850    #[prost(uint64, optional, tag = "1")]
12851    pub dev: ::core::option::Option<u64>,
12852    #[prost(uint64, optional, tag = "2")]
12853    pub ino: ::core::option::Option<u64>,
12854    #[prost(int32, optional, tag = "3")]
12855    pub result_start: ::core::option::Option<i32>,
12856    #[prost(uint32, optional, tag = "4")]
12857    pub result_group: ::core::option::Option<u32>,
12858    #[prost(int32, optional, tag = "5")]
12859    pub result_len: ::core::option::Option<i32>,
12860}
12861#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12862pub struct Ext4MballocPreallocFtraceEvent {
12863    #[prost(uint64, optional, tag = "1")]
12864    pub dev: ::core::option::Option<u64>,
12865    #[prost(uint64, optional, tag = "2")]
12866    pub ino: ::core::option::Option<u64>,
12867    #[prost(uint32, optional, tag = "3")]
12868    pub orig_logical: ::core::option::Option<u32>,
12869    #[prost(int32, optional, tag = "4")]
12870    pub orig_start: ::core::option::Option<i32>,
12871    #[prost(uint32, optional, tag = "5")]
12872    pub orig_group: ::core::option::Option<u32>,
12873    #[prost(int32, optional, tag = "6")]
12874    pub orig_len: ::core::option::Option<i32>,
12875    #[prost(uint32, optional, tag = "7")]
12876    pub result_logical: ::core::option::Option<u32>,
12877    #[prost(int32, optional, tag = "8")]
12878    pub result_start: ::core::option::Option<i32>,
12879    #[prost(uint32, optional, tag = "9")]
12880    pub result_group: ::core::option::Option<u32>,
12881    #[prost(int32, optional, tag = "10")]
12882    pub result_len: ::core::option::Option<i32>,
12883}
12884#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12885pub struct Ext4OtherInodeUpdateTimeFtraceEvent {
12886    #[prost(uint64, optional, tag = "1")]
12887    pub dev: ::core::option::Option<u64>,
12888    #[prost(uint64, optional, tag = "2")]
12889    pub ino: ::core::option::Option<u64>,
12890    #[prost(uint64, optional, tag = "3")]
12891    pub orig_ino: ::core::option::Option<u64>,
12892    #[prost(uint32, optional, tag = "4")]
12893    pub uid: ::core::option::Option<u32>,
12894    #[prost(uint32, optional, tag = "5")]
12895    pub gid: ::core::option::Option<u32>,
12896    #[prost(uint32, optional, tag = "6")]
12897    pub mode: ::core::option::Option<u32>,
12898}
12899#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12900pub struct Ext4PunchHoleFtraceEvent {
12901    #[prost(uint64, optional, tag = "1")]
12902    pub dev: ::core::option::Option<u64>,
12903    #[prost(uint64, optional, tag = "2")]
12904    pub ino: ::core::option::Option<u64>,
12905    #[prost(int64, optional, tag = "3")]
12906    pub offset: ::core::option::Option<i64>,
12907    #[prost(int64, optional, tag = "4")]
12908    pub len: ::core::option::Option<i64>,
12909    #[prost(int32, optional, tag = "5")]
12910    pub mode: ::core::option::Option<i32>,
12911}
12912#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12913pub struct Ext4ReadBlockBitmapLoadFtraceEvent {
12914    #[prost(uint64, optional, tag = "1")]
12915    pub dev: ::core::option::Option<u64>,
12916    #[prost(uint32, optional, tag = "2")]
12917    pub group: ::core::option::Option<u32>,
12918    #[prost(uint32, optional, tag = "3")]
12919    pub prefetch: ::core::option::Option<u32>,
12920}
12921#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12922pub struct Ext4ReadpageFtraceEvent {
12923    #[prost(uint64, optional, tag = "1")]
12924    pub dev: ::core::option::Option<u64>,
12925    #[prost(uint64, optional, tag = "2")]
12926    pub ino: ::core::option::Option<u64>,
12927    #[prost(uint64, optional, tag = "3")]
12928    pub index: ::core::option::Option<u64>,
12929}
12930#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12931pub struct Ext4ReleasepageFtraceEvent {
12932    #[prost(uint64, optional, tag = "1")]
12933    pub dev: ::core::option::Option<u64>,
12934    #[prost(uint64, optional, tag = "2")]
12935    pub ino: ::core::option::Option<u64>,
12936    #[prost(uint64, optional, tag = "3")]
12937    pub index: ::core::option::Option<u64>,
12938}
12939#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12940pub struct Ext4RemoveBlocksFtraceEvent {
12941    #[prost(uint64, optional, tag = "1")]
12942    pub dev: ::core::option::Option<u64>,
12943    #[prost(uint64, optional, tag = "2")]
12944    pub ino: ::core::option::Option<u64>,
12945    #[prost(uint32, optional, tag = "3")]
12946    pub from: ::core::option::Option<u32>,
12947    #[prost(uint32, optional, tag = "4")]
12948    pub to: ::core::option::Option<u32>,
12949    #[prost(int64, optional, tag = "5")]
12950    pub partial: ::core::option::Option<i64>,
12951    #[prost(uint64, optional, tag = "6")]
12952    pub ee_pblk: ::core::option::Option<u64>,
12953    #[prost(uint32, optional, tag = "7")]
12954    pub ee_lblk: ::core::option::Option<u32>,
12955    #[prost(uint32, optional, tag = "8")]
12956    pub ee_len: ::core::option::Option<u32>,
12957    #[prost(uint32, optional, tag = "9")]
12958    pub pc_lblk: ::core::option::Option<u32>,
12959    #[prost(uint64, optional, tag = "10")]
12960    pub pc_pclu: ::core::option::Option<u64>,
12961    #[prost(int32, optional, tag = "11")]
12962    pub pc_state: ::core::option::Option<i32>,
12963}
12964#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12965pub struct Ext4RequestBlocksFtraceEvent {
12966    #[prost(uint64, optional, tag = "1")]
12967    pub dev: ::core::option::Option<u64>,
12968    #[prost(uint64, optional, tag = "2")]
12969    pub ino: ::core::option::Option<u64>,
12970    #[prost(uint32, optional, tag = "3")]
12971    pub len: ::core::option::Option<u32>,
12972    #[prost(uint32, optional, tag = "4")]
12973    pub logical: ::core::option::Option<u32>,
12974    #[prost(uint32, optional, tag = "5")]
12975    pub lleft: ::core::option::Option<u32>,
12976    #[prost(uint32, optional, tag = "6")]
12977    pub lright: ::core::option::Option<u32>,
12978    #[prost(uint64, optional, tag = "7")]
12979    pub goal: ::core::option::Option<u64>,
12980    #[prost(uint64, optional, tag = "8")]
12981    pub pleft: ::core::option::Option<u64>,
12982    #[prost(uint64, optional, tag = "9")]
12983    pub pright: ::core::option::Option<u64>,
12984    #[prost(uint32, optional, tag = "10")]
12985    pub flags: ::core::option::Option<u32>,
12986}
12987#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12988pub struct Ext4RequestInodeFtraceEvent {
12989    #[prost(uint64, optional, tag = "1")]
12990    pub dev: ::core::option::Option<u64>,
12991    #[prost(uint64, optional, tag = "2")]
12992    pub dir: ::core::option::Option<u64>,
12993    #[prost(uint32, optional, tag = "3")]
12994    pub mode: ::core::option::Option<u32>,
12995}
12996#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12997pub struct Ext4SyncFsFtraceEvent {
12998    #[prost(uint64, optional, tag = "1")]
12999    pub dev: ::core::option::Option<u64>,
13000    #[prost(int32, optional, tag = "2")]
13001    pub wait: ::core::option::Option<i32>,
13002}
13003#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13004pub struct Ext4TrimAllFreeFtraceEvent {
13005    #[prost(int32, optional, tag = "1")]
13006    pub dev_major: ::core::option::Option<i32>,
13007    #[prost(int32, optional, tag = "2")]
13008    pub dev_minor: ::core::option::Option<i32>,
13009    #[prost(uint32, optional, tag = "3")]
13010    pub group: ::core::option::Option<u32>,
13011    #[prost(int32, optional, tag = "4")]
13012    pub start: ::core::option::Option<i32>,
13013    #[prost(int32, optional, tag = "5")]
13014    pub len: ::core::option::Option<i32>,
13015}
13016#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13017pub struct Ext4TrimExtentFtraceEvent {
13018    #[prost(int32, optional, tag = "1")]
13019    pub dev_major: ::core::option::Option<i32>,
13020    #[prost(int32, optional, tag = "2")]
13021    pub dev_minor: ::core::option::Option<i32>,
13022    #[prost(uint32, optional, tag = "3")]
13023    pub group: ::core::option::Option<u32>,
13024    #[prost(int32, optional, tag = "4")]
13025    pub start: ::core::option::Option<i32>,
13026    #[prost(int32, optional, tag = "5")]
13027    pub len: ::core::option::Option<i32>,
13028}
13029#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13030pub struct Ext4TruncateEnterFtraceEvent {
13031    #[prost(uint64, optional, tag = "1")]
13032    pub dev: ::core::option::Option<u64>,
13033    #[prost(uint64, optional, tag = "2")]
13034    pub ino: ::core::option::Option<u64>,
13035    #[prost(uint64, optional, tag = "3")]
13036    pub blocks: ::core::option::Option<u64>,
13037}
13038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13039pub struct Ext4TruncateExitFtraceEvent {
13040    #[prost(uint64, optional, tag = "1")]
13041    pub dev: ::core::option::Option<u64>,
13042    #[prost(uint64, optional, tag = "2")]
13043    pub ino: ::core::option::Option<u64>,
13044    #[prost(uint64, optional, tag = "3")]
13045    pub blocks: ::core::option::Option<u64>,
13046}
13047#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13048pub struct Ext4UnlinkEnterFtraceEvent {
13049    #[prost(uint64, optional, tag = "1")]
13050    pub dev: ::core::option::Option<u64>,
13051    #[prost(uint64, optional, tag = "2")]
13052    pub ino: ::core::option::Option<u64>,
13053    #[prost(uint64, optional, tag = "3")]
13054    pub parent: ::core::option::Option<u64>,
13055    #[prost(int64, optional, tag = "4")]
13056    pub size: ::core::option::Option<i64>,
13057}
13058#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13059pub struct Ext4UnlinkExitFtraceEvent {
13060    #[prost(uint64, optional, tag = "1")]
13061    pub dev: ::core::option::Option<u64>,
13062    #[prost(uint64, optional, tag = "2")]
13063    pub ino: ::core::option::Option<u64>,
13064    #[prost(int32, optional, tag = "3")]
13065    pub ret: ::core::option::Option<i32>,
13066}
13067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13068pub struct Ext4WriteBeginFtraceEvent {
13069    #[prost(uint64, optional, tag = "1")]
13070    pub dev: ::core::option::Option<u64>,
13071    #[prost(uint64, optional, tag = "2")]
13072    pub ino: ::core::option::Option<u64>,
13073    #[prost(int64, optional, tag = "3")]
13074    pub pos: ::core::option::Option<i64>,
13075    #[prost(uint32, optional, tag = "4")]
13076    pub len: ::core::option::Option<u32>,
13077    #[prost(uint32, optional, tag = "5")]
13078    pub flags: ::core::option::Option<u32>,
13079}
13080#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13081pub struct Ext4WriteEndFtraceEvent {
13082    #[prost(uint64, optional, tag = "1")]
13083    pub dev: ::core::option::Option<u64>,
13084    #[prost(uint64, optional, tag = "2")]
13085    pub ino: ::core::option::Option<u64>,
13086    #[prost(int64, optional, tag = "3")]
13087    pub pos: ::core::option::Option<i64>,
13088    #[prost(uint32, optional, tag = "4")]
13089    pub len: ::core::option::Option<u32>,
13090    #[prost(uint32, optional, tag = "5")]
13091    pub copied: ::core::option::Option<u32>,
13092}
13093#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13094pub struct Ext4WritepageFtraceEvent {
13095    #[prost(uint64, optional, tag = "1")]
13096    pub dev: ::core::option::Option<u64>,
13097    #[prost(uint64, optional, tag = "2")]
13098    pub ino: ::core::option::Option<u64>,
13099    #[prost(uint64, optional, tag = "3")]
13100    pub index: ::core::option::Option<u64>,
13101}
13102#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13103pub struct Ext4WritepagesFtraceEvent {
13104    #[prost(uint64, optional, tag = "1")]
13105    pub dev: ::core::option::Option<u64>,
13106    #[prost(uint64, optional, tag = "2")]
13107    pub ino: ::core::option::Option<u64>,
13108    #[prost(int64, optional, tag = "3")]
13109    pub nr_to_write: ::core::option::Option<i64>,
13110    #[prost(int64, optional, tag = "4")]
13111    pub pages_skipped: ::core::option::Option<i64>,
13112    #[prost(int64, optional, tag = "5")]
13113    pub range_start: ::core::option::Option<i64>,
13114    #[prost(int64, optional, tag = "6")]
13115    pub range_end: ::core::option::Option<i64>,
13116    #[prost(uint64, optional, tag = "7")]
13117    pub writeback_index: ::core::option::Option<u64>,
13118    #[prost(int32, optional, tag = "8")]
13119    pub sync_mode: ::core::option::Option<i32>,
13120    #[prost(uint32, optional, tag = "9")]
13121    pub for_kupdate: ::core::option::Option<u32>,
13122    #[prost(uint32, optional, tag = "10")]
13123    pub range_cyclic: ::core::option::Option<u32>,
13124}
13125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13126pub struct Ext4WritepagesResultFtraceEvent {
13127    #[prost(uint64, optional, tag = "1")]
13128    pub dev: ::core::option::Option<u64>,
13129    #[prost(uint64, optional, tag = "2")]
13130    pub ino: ::core::option::Option<u64>,
13131    #[prost(int32, optional, tag = "3")]
13132    pub ret: ::core::option::Option<i32>,
13133    #[prost(int32, optional, tag = "4")]
13134    pub pages_written: ::core::option::Option<i32>,
13135    #[prost(int64, optional, tag = "5")]
13136    pub pages_skipped: ::core::option::Option<i64>,
13137    #[prost(uint64, optional, tag = "6")]
13138    pub writeback_index: ::core::option::Option<u64>,
13139    #[prost(int32, optional, tag = "7")]
13140    pub sync_mode: ::core::option::Option<i32>,
13141}
13142#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13143pub struct Ext4ZeroRangeFtraceEvent {
13144    #[prost(uint64, optional, tag = "1")]
13145    pub dev: ::core::option::Option<u64>,
13146    #[prost(uint64, optional, tag = "2")]
13147    pub ino: ::core::option::Option<u64>,
13148    #[prost(int64, optional, tag = "3")]
13149    pub offset: ::core::option::Option<i64>,
13150    #[prost(int64, optional, tag = "4")]
13151    pub len: ::core::option::Option<i64>,
13152    #[prost(int32, optional, tag = "5")]
13153    pub mode: ::core::option::Option<i32>,
13154}
13155#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13156pub struct F2fsDoSubmitBioFtraceEvent {
13157    #[prost(uint64, optional, tag = "1")]
13158    pub dev: ::core::option::Option<u64>,
13159    #[prost(int32, optional, tag = "2")]
13160    pub btype: ::core::option::Option<i32>,
13161    #[prost(uint32, optional, tag = "3")]
13162    pub sync: ::core::option::Option<u32>,
13163    #[prost(uint64, optional, tag = "4")]
13164    pub sector: ::core::option::Option<u64>,
13165    #[prost(uint32, optional, tag = "5")]
13166    pub size: ::core::option::Option<u32>,
13167}
13168#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13169pub struct F2fsEvictInodeFtraceEvent {
13170    #[prost(uint64, optional, tag = "1")]
13171    pub dev: ::core::option::Option<u64>,
13172    #[prost(uint64, optional, tag = "2")]
13173    pub ino: ::core::option::Option<u64>,
13174    #[prost(uint64, optional, tag = "3")]
13175    pub pino: ::core::option::Option<u64>,
13176    #[prost(uint32, optional, tag = "4")]
13177    pub mode: ::core::option::Option<u32>,
13178    #[prost(int64, optional, tag = "5")]
13179    pub size: ::core::option::Option<i64>,
13180    #[prost(uint32, optional, tag = "6")]
13181    pub nlink: ::core::option::Option<u32>,
13182    #[prost(uint64, optional, tag = "7")]
13183    pub blocks: ::core::option::Option<u64>,
13184    #[prost(uint32, optional, tag = "8")]
13185    pub advise: ::core::option::Option<u32>,
13186}
13187#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13188pub struct F2fsFallocateFtraceEvent {
13189    #[prost(uint64, optional, tag = "1")]
13190    pub dev: ::core::option::Option<u64>,
13191    #[prost(uint64, optional, tag = "2")]
13192    pub ino: ::core::option::Option<u64>,
13193    #[prost(int32, optional, tag = "3")]
13194    pub mode: ::core::option::Option<i32>,
13195    #[prost(int64, optional, tag = "4")]
13196    pub offset: ::core::option::Option<i64>,
13197    #[prost(int64, optional, tag = "5")]
13198    pub len: ::core::option::Option<i64>,
13199    #[prost(int64, optional, tag = "6")]
13200    pub size: ::core::option::Option<i64>,
13201    #[prost(uint64, optional, tag = "7")]
13202    pub blocks: ::core::option::Option<u64>,
13203    #[prost(int32, optional, tag = "8")]
13204    pub ret: ::core::option::Option<i32>,
13205}
13206#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13207pub struct F2fsGetDataBlockFtraceEvent {
13208    #[prost(uint64, optional, tag = "1")]
13209    pub dev: ::core::option::Option<u64>,
13210    #[prost(uint64, optional, tag = "2")]
13211    pub ino: ::core::option::Option<u64>,
13212    #[prost(uint64, optional, tag = "3")]
13213    pub iblock: ::core::option::Option<u64>,
13214    #[prost(uint64, optional, tag = "4")]
13215    pub bh_start: ::core::option::Option<u64>,
13216    #[prost(uint64, optional, tag = "5")]
13217    pub bh_size: ::core::option::Option<u64>,
13218    #[prost(int32, optional, tag = "6")]
13219    pub ret: ::core::option::Option<i32>,
13220}
13221#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13222pub struct F2fsGetVictimFtraceEvent {
13223    #[prost(uint64, optional, tag = "1")]
13224    pub dev: ::core::option::Option<u64>,
13225    #[prost(int32, optional, tag = "2")]
13226    pub r#type: ::core::option::Option<i32>,
13227    #[prost(int32, optional, tag = "3")]
13228    pub gc_type: ::core::option::Option<i32>,
13229    #[prost(int32, optional, tag = "4")]
13230    pub alloc_mode: ::core::option::Option<i32>,
13231    #[prost(int32, optional, tag = "5")]
13232    pub gc_mode: ::core::option::Option<i32>,
13233    #[prost(uint32, optional, tag = "6")]
13234    pub victim: ::core::option::Option<u32>,
13235    #[prost(uint32, optional, tag = "7")]
13236    pub ofs_unit: ::core::option::Option<u32>,
13237    #[prost(uint32, optional, tag = "8")]
13238    pub pre_victim: ::core::option::Option<u32>,
13239    #[prost(uint32, optional, tag = "9")]
13240    pub prefree: ::core::option::Option<u32>,
13241    #[prost(uint32, optional, tag = "10")]
13242    pub free: ::core::option::Option<u32>,
13243    #[prost(uint32, optional, tag = "11")]
13244    pub cost: ::core::option::Option<u32>,
13245}
13246#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13247pub struct F2fsIgetFtraceEvent {
13248    #[prost(uint64, optional, tag = "1")]
13249    pub dev: ::core::option::Option<u64>,
13250    #[prost(uint64, optional, tag = "2")]
13251    pub ino: ::core::option::Option<u64>,
13252    #[prost(uint64, optional, tag = "3")]
13253    pub pino: ::core::option::Option<u64>,
13254    #[prost(uint32, optional, tag = "4")]
13255    pub mode: ::core::option::Option<u32>,
13256    #[prost(int64, optional, tag = "5")]
13257    pub size: ::core::option::Option<i64>,
13258    #[prost(uint32, optional, tag = "6")]
13259    pub nlink: ::core::option::Option<u32>,
13260    #[prost(uint64, optional, tag = "7")]
13261    pub blocks: ::core::option::Option<u64>,
13262    #[prost(uint32, optional, tag = "8")]
13263    pub advise: ::core::option::Option<u32>,
13264}
13265#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13266pub struct F2fsIgetExitFtraceEvent {
13267    #[prost(uint64, optional, tag = "1")]
13268    pub dev: ::core::option::Option<u64>,
13269    #[prost(uint64, optional, tag = "2")]
13270    pub ino: ::core::option::Option<u64>,
13271    #[prost(int32, optional, tag = "3")]
13272    pub ret: ::core::option::Option<i32>,
13273}
13274#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13275pub struct F2fsNewInodeFtraceEvent {
13276    #[prost(uint64, optional, tag = "1")]
13277    pub dev: ::core::option::Option<u64>,
13278    #[prost(uint64, optional, tag = "2")]
13279    pub ino: ::core::option::Option<u64>,
13280    #[prost(int32, optional, tag = "3")]
13281    pub ret: ::core::option::Option<i32>,
13282}
13283#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13284pub struct F2fsReadpageFtraceEvent {
13285    #[prost(uint64, optional, tag = "1")]
13286    pub dev: ::core::option::Option<u64>,
13287    #[prost(uint64, optional, tag = "2")]
13288    pub ino: ::core::option::Option<u64>,
13289    #[prost(uint64, optional, tag = "3")]
13290    pub index: ::core::option::Option<u64>,
13291    #[prost(uint64, optional, tag = "4")]
13292    pub blkaddr: ::core::option::Option<u64>,
13293    #[prost(int32, optional, tag = "5")]
13294    pub r#type: ::core::option::Option<i32>,
13295    #[prost(int32, optional, tag = "6")]
13296    pub dir: ::core::option::Option<i32>,
13297    #[prost(int32, optional, tag = "7")]
13298    pub dirty: ::core::option::Option<i32>,
13299    #[prost(int32, optional, tag = "8")]
13300    pub uptodate: ::core::option::Option<i32>,
13301}
13302#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13303pub struct F2fsReserveNewBlockFtraceEvent {
13304    #[prost(uint64, optional, tag = "1")]
13305    pub dev: ::core::option::Option<u64>,
13306    #[prost(uint32, optional, tag = "2")]
13307    pub nid: ::core::option::Option<u32>,
13308    #[prost(uint32, optional, tag = "3")]
13309    pub ofs_in_node: ::core::option::Option<u32>,
13310}
13311#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13312pub struct F2fsSetPageDirtyFtraceEvent {
13313    #[prost(uint64, optional, tag = "1")]
13314    pub dev: ::core::option::Option<u64>,
13315    #[prost(uint64, optional, tag = "2")]
13316    pub ino: ::core::option::Option<u64>,
13317    #[prost(int32, optional, tag = "3")]
13318    pub r#type: ::core::option::Option<i32>,
13319    #[prost(int32, optional, tag = "4")]
13320    pub dir: ::core::option::Option<i32>,
13321    #[prost(uint64, optional, tag = "5")]
13322    pub index: ::core::option::Option<u64>,
13323    #[prost(int32, optional, tag = "6")]
13324    pub dirty: ::core::option::Option<i32>,
13325    #[prost(int32, optional, tag = "7")]
13326    pub uptodate: ::core::option::Option<i32>,
13327}
13328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13329pub struct F2fsSubmitWritePageFtraceEvent {
13330    #[prost(uint64, optional, tag = "1")]
13331    pub dev: ::core::option::Option<u64>,
13332    #[prost(uint64, optional, tag = "2")]
13333    pub ino: ::core::option::Option<u64>,
13334    #[prost(int32, optional, tag = "3")]
13335    pub r#type: ::core::option::Option<i32>,
13336    #[prost(uint64, optional, tag = "4")]
13337    pub index: ::core::option::Option<u64>,
13338    #[prost(uint32, optional, tag = "5")]
13339    pub block: ::core::option::Option<u32>,
13340}
13341#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13342pub struct F2fsSyncFileEnterFtraceEvent {
13343    #[prost(uint64, optional, tag = "1")]
13344    pub dev: ::core::option::Option<u64>,
13345    #[prost(uint64, optional, tag = "2")]
13346    pub ino: ::core::option::Option<u64>,
13347    #[prost(uint64, optional, tag = "3")]
13348    pub pino: ::core::option::Option<u64>,
13349    #[prost(uint32, optional, tag = "4")]
13350    pub mode: ::core::option::Option<u32>,
13351    #[prost(int64, optional, tag = "5")]
13352    pub size: ::core::option::Option<i64>,
13353    #[prost(uint32, optional, tag = "6")]
13354    pub nlink: ::core::option::Option<u32>,
13355    #[prost(uint64, optional, tag = "7")]
13356    pub blocks: ::core::option::Option<u64>,
13357    #[prost(uint32, optional, tag = "8")]
13358    pub advise: ::core::option::Option<u32>,
13359}
13360#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13361pub struct F2fsSyncFileExitFtraceEvent {
13362    #[prost(uint64, optional, tag = "1")]
13363    pub dev: ::core::option::Option<u64>,
13364    #[prost(uint64, optional, tag = "2")]
13365    pub ino: ::core::option::Option<u64>,
13366    #[prost(uint32, optional, tag = "3")]
13367    pub need_cp: ::core::option::Option<u32>,
13368    #[prost(int32, optional, tag = "4")]
13369    pub datasync: ::core::option::Option<i32>,
13370    #[prost(int32, optional, tag = "5")]
13371    pub ret: ::core::option::Option<i32>,
13372    #[prost(int32, optional, tag = "6")]
13373    pub cp_reason: ::core::option::Option<i32>,
13374}
13375#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13376pub struct F2fsSyncFsFtraceEvent {
13377    #[prost(uint64, optional, tag = "1")]
13378    pub dev: ::core::option::Option<u64>,
13379    #[prost(int32, optional, tag = "2")]
13380    pub dirty: ::core::option::Option<i32>,
13381    #[prost(int32, optional, tag = "3")]
13382    pub wait: ::core::option::Option<i32>,
13383}
13384#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13385pub struct F2fsTruncateFtraceEvent {
13386    #[prost(uint64, optional, tag = "1")]
13387    pub dev: ::core::option::Option<u64>,
13388    #[prost(uint64, optional, tag = "2")]
13389    pub ino: ::core::option::Option<u64>,
13390    #[prost(uint64, optional, tag = "3")]
13391    pub pino: ::core::option::Option<u64>,
13392    #[prost(uint32, optional, tag = "4")]
13393    pub mode: ::core::option::Option<u32>,
13394    #[prost(int64, optional, tag = "5")]
13395    pub size: ::core::option::Option<i64>,
13396    #[prost(uint32, optional, tag = "6")]
13397    pub nlink: ::core::option::Option<u32>,
13398    #[prost(uint64, optional, tag = "7")]
13399    pub blocks: ::core::option::Option<u64>,
13400    #[prost(uint32, optional, tag = "8")]
13401    pub advise: ::core::option::Option<u32>,
13402}
13403#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13404pub struct F2fsTruncateBlocksEnterFtraceEvent {
13405    #[prost(uint64, optional, tag = "1")]
13406    pub dev: ::core::option::Option<u64>,
13407    #[prost(uint64, optional, tag = "2")]
13408    pub ino: ::core::option::Option<u64>,
13409    #[prost(int64, optional, tag = "3")]
13410    pub size: ::core::option::Option<i64>,
13411    #[prost(uint64, optional, tag = "4")]
13412    pub blocks: ::core::option::Option<u64>,
13413    #[prost(uint64, optional, tag = "5")]
13414    pub from: ::core::option::Option<u64>,
13415}
13416#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13417pub struct F2fsTruncateBlocksExitFtraceEvent {
13418    #[prost(uint64, optional, tag = "1")]
13419    pub dev: ::core::option::Option<u64>,
13420    #[prost(uint64, optional, tag = "2")]
13421    pub ino: ::core::option::Option<u64>,
13422    #[prost(int32, optional, tag = "3")]
13423    pub ret: ::core::option::Option<i32>,
13424}
13425#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13426pub struct F2fsTruncateDataBlocksRangeFtraceEvent {
13427    #[prost(uint64, optional, tag = "1")]
13428    pub dev: ::core::option::Option<u64>,
13429    #[prost(uint64, optional, tag = "2")]
13430    pub ino: ::core::option::Option<u64>,
13431    #[prost(uint32, optional, tag = "3")]
13432    pub nid: ::core::option::Option<u32>,
13433    #[prost(uint32, optional, tag = "4")]
13434    pub ofs: ::core::option::Option<u32>,
13435    #[prost(int32, optional, tag = "5")]
13436    pub free: ::core::option::Option<i32>,
13437}
13438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13439pub struct F2fsTruncateInodeBlocksEnterFtraceEvent {
13440    #[prost(uint64, optional, tag = "1")]
13441    pub dev: ::core::option::Option<u64>,
13442    #[prost(uint64, optional, tag = "2")]
13443    pub ino: ::core::option::Option<u64>,
13444    #[prost(int64, optional, tag = "3")]
13445    pub size: ::core::option::Option<i64>,
13446    #[prost(uint64, optional, tag = "4")]
13447    pub blocks: ::core::option::Option<u64>,
13448    #[prost(uint64, optional, tag = "5")]
13449    pub from: ::core::option::Option<u64>,
13450}
13451#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13452pub struct F2fsTruncateInodeBlocksExitFtraceEvent {
13453    #[prost(uint64, optional, tag = "1")]
13454    pub dev: ::core::option::Option<u64>,
13455    #[prost(uint64, optional, tag = "2")]
13456    pub ino: ::core::option::Option<u64>,
13457    #[prost(int32, optional, tag = "3")]
13458    pub ret: ::core::option::Option<i32>,
13459}
13460#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13461pub struct F2fsTruncateNodeFtraceEvent {
13462    #[prost(uint64, optional, tag = "1")]
13463    pub dev: ::core::option::Option<u64>,
13464    #[prost(uint64, optional, tag = "2")]
13465    pub ino: ::core::option::Option<u64>,
13466    #[prost(uint32, optional, tag = "3")]
13467    pub nid: ::core::option::Option<u32>,
13468    #[prost(uint32, optional, tag = "4")]
13469    pub blk_addr: ::core::option::Option<u32>,
13470}
13471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13472pub struct F2fsTruncateNodesEnterFtraceEvent {
13473    #[prost(uint64, optional, tag = "1")]
13474    pub dev: ::core::option::Option<u64>,
13475    #[prost(uint64, optional, tag = "2")]
13476    pub ino: ::core::option::Option<u64>,
13477    #[prost(uint32, optional, tag = "3")]
13478    pub nid: ::core::option::Option<u32>,
13479    #[prost(uint32, optional, tag = "4")]
13480    pub blk_addr: ::core::option::Option<u32>,
13481}
13482#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13483pub struct F2fsTruncateNodesExitFtraceEvent {
13484    #[prost(uint64, optional, tag = "1")]
13485    pub dev: ::core::option::Option<u64>,
13486    #[prost(uint64, optional, tag = "2")]
13487    pub ino: ::core::option::Option<u64>,
13488    #[prost(int32, optional, tag = "3")]
13489    pub ret: ::core::option::Option<i32>,
13490}
13491#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13492pub struct F2fsTruncatePartialNodesFtraceEvent {
13493    #[prost(uint64, optional, tag = "1")]
13494    pub dev: ::core::option::Option<u64>,
13495    #[prost(uint64, optional, tag = "2")]
13496    pub ino: ::core::option::Option<u64>,
13497    #[prost(uint32, optional, tag = "3")]
13498    pub nid: ::core::option::Option<u32>,
13499    #[prost(int32, optional, tag = "4")]
13500    pub depth: ::core::option::Option<i32>,
13501    #[prost(int32, optional, tag = "5")]
13502    pub err: ::core::option::Option<i32>,
13503}
13504#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13505pub struct F2fsUnlinkEnterFtraceEvent {
13506    #[prost(uint64, optional, tag = "1")]
13507    pub dev: ::core::option::Option<u64>,
13508    #[prost(uint64, optional, tag = "2")]
13509    pub ino: ::core::option::Option<u64>,
13510    #[prost(int64, optional, tag = "3")]
13511    pub size: ::core::option::Option<i64>,
13512    #[prost(uint64, optional, tag = "4")]
13513    pub blocks: ::core::option::Option<u64>,
13514    #[prost(string, optional, tag = "5")]
13515    pub name: ::core::option::Option<::prost::alloc::string::String>,
13516}
13517#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13518pub struct F2fsUnlinkExitFtraceEvent {
13519    #[prost(uint64, optional, tag = "1")]
13520    pub dev: ::core::option::Option<u64>,
13521    #[prost(uint64, optional, tag = "2")]
13522    pub ino: ::core::option::Option<u64>,
13523    #[prost(int32, optional, tag = "3")]
13524    pub ret: ::core::option::Option<i32>,
13525}
13526#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13527pub struct F2fsVmPageMkwriteFtraceEvent {
13528    #[prost(uint64, optional, tag = "1")]
13529    pub dev: ::core::option::Option<u64>,
13530    #[prost(uint64, optional, tag = "2")]
13531    pub ino: ::core::option::Option<u64>,
13532    #[prost(int32, optional, tag = "3")]
13533    pub r#type: ::core::option::Option<i32>,
13534    #[prost(int32, optional, tag = "4")]
13535    pub dir: ::core::option::Option<i32>,
13536    #[prost(uint64, optional, tag = "5")]
13537    pub index: ::core::option::Option<u64>,
13538    #[prost(int32, optional, tag = "6")]
13539    pub dirty: ::core::option::Option<i32>,
13540    #[prost(int32, optional, tag = "7")]
13541    pub uptodate: ::core::option::Option<i32>,
13542}
13543#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13544pub struct F2fsWriteBeginFtraceEvent {
13545    #[prost(uint64, optional, tag = "1")]
13546    pub dev: ::core::option::Option<u64>,
13547    #[prost(uint64, optional, tag = "2")]
13548    pub ino: ::core::option::Option<u64>,
13549    #[prost(int64, optional, tag = "3")]
13550    pub pos: ::core::option::Option<i64>,
13551    #[prost(uint32, optional, tag = "4")]
13552    pub len: ::core::option::Option<u32>,
13553    #[prost(uint32, optional, tag = "5")]
13554    pub flags: ::core::option::Option<u32>,
13555}
13556#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13557pub struct F2fsWriteCheckpointFtraceEvent {
13558    #[prost(uint64, optional, tag = "1")]
13559    pub dev: ::core::option::Option<u64>,
13560    #[prost(uint32, optional, tag = "2")]
13561    pub is_umount: ::core::option::Option<u32>,
13562    #[prost(string, optional, tag = "3")]
13563    pub msg: ::core::option::Option<::prost::alloc::string::String>,
13564    #[prost(int32, optional, tag = "4")]
13565    pub reason: ::core::option::Option<i32>,
13566    #[prost(uint32, optional, tag = "5")]
13567    pub phase: ::core::option::Option<u32>,
13568}
13569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13570pub struct F2fsWriteEndFtraceEvent {
13571    #[prost(uint64, optional, tag = "1")]
13572    pub dev: ::core::option::Option<u64>,
13573    #[prost(uint64, optional, tag = "2")]
13574    pub ino: ::core::option::Option<u64>,
13575    #[prost(int64, optional, tag = "3")]
13576    pub pos: ::core::option::Option<i64>,
13577    #[prost(uint32, optional, tag = "4")]
13578    pub len: ::core::option::Option<u32>,
13579    #[prost(uint32, optional, tag = "5")]
13580    pub copied: ::core::option::Option<u32>,
13581}
13582#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13583pub struct F2fsIostatFtraceEvent {
13584    #[prost(uint64, optional, tag = "1")]
13585    pub app_bio: ::core::option::Option<u64>,
13586    #[prost(uint64, optional, tag = "2")]
13587    pub app_brio: ::core::option::Option<u64>,
13588    #[prost(uint64, optional, tag = "3")]
13589    pub app_dio: ::core::option::Option<u64>,
13590    #[prost(uint64, optional, tag = "4")]
13591    pub app_drio: ::core::option::Option<u64>,
13592    #[prost(uint64, optional, tag = "5")]
13593    pub app_mio: ::core::option::Option<u64>,
13594    #[prost(uint64, optional, tag = "6")]
13595    pub app_mrio: ::core::option::Option<u64>,
13596    #[prost(uint64, optional, tag = "7")]
13597    pub app_rio: ::core::option::Option<u64>,
13598    #[prost(uint64, optional, tag = "8")]
13599    pub app_wio: ::core::option::Option<u64>,
13600    #[prost(uint64, optional, tag = "9")]
13601    pub dev: ::core::option::Option<u64>,
13602    #[prost(uint64, optional, tag = "10")]
13603    pub fs_cdrio: ::core::option::Option<u64>,
13604    #[prost(uint64, optional, tag = "11")]
13605    pub fs_cp_dio: ::core::option::Option<u64>,
13606    #[prost(uint64, optional, tag = "12")]
13607    pub fs_cp_mio: ::core::option::Option<u64>,
13608    #[prost(uint64, optional, tag = "13")]
13609    pub fs_cp_nio: ::core::option::Option<u64>,
13610    #[prost(uint64, optional, tag = "14")]
13611    pub fs_dio: ::core::option::Option<u64>,
13612    #[prost(uint64, optional, tag = "15")]
13613    pub fs_discard: ::core::option::Option<u64>,
13614    #[prost(uint64, optional, tag = "16")]
13615    pub fs_drio: ::core::option::Option<u64>,
13616    #[prost(uint64, optional, tag = "17")]
13617    pub fs_gc_dio: ::core::option::Option<u64>,
13618    #[prost(uint64, optional, tag = "18")]
13619    pub fs_gc_nio: ::core::option::Option<u64>,
13620    #[prost(uint64, optional, tag = "19")]
13621    pub fs_gdrio: ::core::option::Option<u64>,
13622    #[prost(uint64, optional, tag = "20")]
13623    pub fs_mio: ::core::option::Option<u64>,
13624    #[prost(uint64, optional, tag = "21")]
13625    pub fs_mrio: ::core::option::Option<u64>,
13626    #[prost(uint64, optional, tag = "22")]
13627    pub fs_nio: ::core::option::Option<u64>,
13628    #[prost(uint64, optional, tag = "23")]
13629    pub fs_nrio: ::core::option::Option<u64>,
13630}
13631#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13632pub struct F2fsIostatLatencyFtraceEvent {
13633    #[prost(uint32, optional, tag = "1")]
13634    pub d_rd_avg: ::core::option::Option<u32>,
13635    #[prost(uint32, optional, tag = "2")]
13636    pub d_rd_cnt: ::core::option::Option<u32>,
13637    #[prost(uint32, optional, tag = "3")]
13638    pub d_rd_peak: ::core::option::Option<u32>,
13639    #[prost(uint32, optional, tag = "4")]
13640    pub d_wr_as_avg: ::core::option::Option<u32>,
13641    #[prost(uint32, optional, tag = "5")]
13642    pub d_wr_as_cnt: ::core::option::Option<u32>,
13643    #[prost(uint32, optional, tag = "6")]
13644    pub d_wr_as_peak: ::core::option::Option<u32>,
13645    #[prost(uint32, optional, tag = "7")]
13646    pub d_wr_s_avg: ::core::option::Option<u32>,
13647    #[prost(uint32, optional, tag = "8")]
13648    pub d_wr_s_cnt: ::core::option::Option<u32>,
13649    #[prost(uint32, optional, tag = "9")]
13650    pub d_wr_s_peak: ::core::option::Option<u32>,
13651    #[prost(uint64, optional, tag = "10")]
13652    pub dev: ::core::option::Option<u64>,
13653    #[prost(uint32, optional, tag = "11")]
13654    pub m_rd_avg: ::core::option::Option<u32>,
13655    #[prost(uint32, optional, tag = "12")]
13656    pub m_rd_cnt: ::core::option::Option<u32>,
13657    #[prost(uint32, optional, tag = "13")]
13658    pub m_rd_peak: ::core::option::Option<u32>,
13659    #[prost(uint32, optional, tag = "14")]
13660    pub m_wr_as_avg: ::core::option::Option<u32>,
13661    #[prost(uint32, optional, tag = "15")]
13662    pub m_wr_as_cnt: ::core::option::Option<u32>,
13663    #[prost(uint32, optional, tag = "16")]
13664    pub m_wr_as_peak: ::core::option::Option<u32>,
13665    #[prost(uint32, optional, tag = "17")]
13666    pub m_wr_s_avg: ::core::option::Option<u32>,
13667    #[prost(uint32, optional, tag = "18")]
13668    pub m_wr_s_cnt: ::core::option::Option<u32>,
13669    #[prost(uint32, optional, tag = "19")]
13670    pub m_wr_s_peak: ::core::option::Option<u32>,
13671    #[prost(uint32, optional, tag = "20")]
13672    pub n_rd_avg: ::core::option::Option<u32>,
13673    #[prost(uint32, optional, tag = "21")]
13674    pub n_rd_cnt: ::core::option::Option<u32>,
13675    #[prost(uint32, optional, tag = "22")]
13676    pub n_rd_peak: ::core::option::Option<u32>,
13677    #[prost(uint32, optional, tag = "23")]
13678    pub n_wr_as_avg: ::core::option::Option<u32>,
13679    #[prost(uint32, optional, tag = "24")]
13680    pub n_wr_as_cnt: ::core::option::Option<u32>,
13681    #[prost(uint32, optional, tag = "25")]
13682    pub n_wr_as_peak: ::core::option::Option<u32>,
13683    #[prost(uint32, optional, tag = "26")]
13684    pub n_wr_s_avg: ::core::option::Option<u32>,
13685    #[prost(uint32, optional, tag = "27")]
13686    pub n_wr_s_cnt: ::core::option::Option<u32>,
13687    #[prost(uint32, optional, tag = "28")]
13688    pub n_wr_s_peak: ::core::option::Option<u32>,
13689}
13690#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13691pub struct F2fsBackgroundGcFtraceEvent {
13692    #[prost(uint64, optional, tag = "1")]
13693    pub dev: ::core::option::Option<u64>,
13694    #[prost(uint32, optional, tag = "2")]
13695    pub wait_ms: ::core::option::Option<u32>,
13696    #[prost(uint32, optional, tag = "3")]
13697    pub prefree: ::core::option::Option<u32>,
13698    #[prost(uint32, optional, tag = "4")]
13699    pub free: ::core::option::Option<u32>,
13700}
13701#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13702pub struct F2fsGcBeginFtraceEvent {
13703    #[prost(uint64, optional, tag = "1")]
13704    pub dev: ::core::option::Option<u64>,
13705    #[prost(uint32, optional, tag = "2")]
13706    pub sync: ::core::option::Option<u32>,
13707    #[prost(uint32, optional, tag = "3")]
13708    pub background: ::core::option::Option<u32>,
13709    #[prost(int64, optional, tag = "4")]
13710    pub dirty_nodes: ::core::option::Option<i64>,
13711    #[prost(int64, optional, tag = "5")]
13712    pub dirty_dents: ::core::option::Option<i64>,
13713    #[prost(int64, optional, tag = "6")]
13714    pub dirty_imeta: ::core::option::Option<i64>,
13715    #[prost(uint32, optional, tag = "7")]
13716    pub free_sec: ::core::option::Option<u32>,
13717    #[prost(uint32, optional, tag = "8")]
13718    pub free_seg: ::core::option::Option<u32>,
13719    #[prost(int32, optional, tag = "9")]
13720    pub reserved_seg: ::core::option::Option<i32>,
13721    #[prost(uint32, optional, tag = "10")]
13722    pub prefree_seg: ::core::option::Option<u32>,
13723    #[prost(int32, optional, tag = "11")]
13724    pub gc_type: ::core::option::Option<i32>,
13725    #[prost(uint32, optional, tag = "12")]
13726    pub no_bg_gc: ::core::option::Option<u32>,
13727    #[prost(uint32, optional, tag = "13")]
13728    pub nr_free_secs: ::core::option::Option<u32>,
13729}
13730#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13731pub struct F2fsGcEndFtraceEvent {
13732    #[prost(uint64, optional, tag = "1")]
13733    pub dev: ::core::option::Option<u64>,
13734    #[prost(int32, optional, tag = "2")]
13735    pub ret: ::core::option::Option<i32>,
13736    #[prost(int32, optional, tag = "3")]
13737    pub seg_freed: ::core::option::Option<i32>,
13738    #[prost(int32, optional, tag = "4")]
13739    pub sec_freed: ::core::option::Option<i32>,
13740    #[prost(int64, optional, tag = "5")]
13741    pub dirty_nodes: ::core::option::Option<i64>,
13742    #[prost(int64, optional, tag = "6")]
13743    pub dirty_dents: ::core::option::Option<i64>,
13744    #[prost(int64, optional, tag = "7")]
13745    pub dirty_imeta: ::core::option::Option<i64>,
13746    #[prost(uint32, optional, tag = "8")]
13747    pub free_sec: ::core::option::Option<u32>,
13748    #[prost(uint32, optional, tag = "9")]
13749    pub free_seg: ::core::option::Option<u32>,
13750    #[prost(int32, optional, tag = "10")]
13751    pub reserved_seg: ::core::option::Option<i32>,
13752    #[prost(uint32, optional, tag = "11")]
13753    pub prefree_seg: ::core::option::Option<u32>,
13754}
13755#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13756pub struct F2fsLockElapsedTimeFtraceEvent {
13757    #[prost(uint64, optional, tag = "1")]
13758    pub dev: ::core::option::Option<u64>,
13759    #[prost(string, optional, tag = "2")]
13760    pub comm: ::core::option::Option<::prost::alloc::string::String>,
13761    #[prost(int32, optional, tag = "3")]
13762    pub pid: ::core::option::Option<i32>,
13763    #[prost(int32, optional, tag = "4")]
13764    pub prio: ::core::option::Option<i32>,
13765    #[prost(int32, optional, tag = "5")]
13766    pub ioprio_class: ::core::option::Option<i32>,
13767    #[prost(int32, optional, tag = "6")]
13768    pub ioprio_data: ::core::option::Option<i32>,
13769    #[prost(uint32, optional, tag = "7")]
13770    pub lock_name: ::core::option::Option<u32>,
13771    #[prost(uint32, optional, tag = "8")]
13772    pub is_write: ::core::option::Option<u32>,
13773    #[prost(uint64, optional, tag = "9")]
13774    pub total_time: ::core::option::Option<u64>,
13775    #[prost(uint64, optional, tag = "10")]
13776    pub running_time: ::core::option::Option<u64>,
13777    #[prost(uint64, optional, tag = "11")]
13778    pub runnable_time: ::core::option::Option<u64>,
13779    #[prost(uint64, optional, tag = "12")]
13780    pub io_sleep_time: ::core::option::Option<u64>,
13781    #[prost(uint64, optional, tag = "13")]
13782    pub other_time: ::core::option::Option<u64>,
13783}
13784#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13785pub struct FastrpcDmaStatFtraceEvent {
13786    #[prost(int32, optional, tag = "1")]
13787    pub cid: ::core::option::Option<i32>,
13788    #[prost(int64, optional, tag = "2")]
13789    pub len: ::core::option::Option<i64>,
13790    #[prost(uint64, optional, tag = "3")]
13791    pub total_allocated: ::core::option::Option<u64>,
13792}
13793#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13794pub struct FastrpcDmaFreeFtraceEvent {
13795    #[prost(int32, optional, tag = "1")]
13796    pub cid: ::core::option::Option<i32>,
13797    #[prost(uint64, optional, tag = "2")]
13798    pub phys: ::core::option::Option<u64>,
13799    #[prost(uint64, optional, tag = "3")]
13800    pub size: ::core::option::Option<u64>,
13801}
13802#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13803pub struct FastrpcDmaAllocFtraceEvent {
13804    #[prost(int32, optional, tag = "1")]
13805    pub cid: ::core::option::Option<i32>,
13806    #[prost(uint64, optional, tag = "2")]
13807    pub phys: ::core::option::Option<u64>,
13808    #[prost(uint64, optional, tag = "3")]
13809    pub size: ::core::option::Option<u64>,
13810    #[prost(uint64, optional, tag = "4")]
13811    pub attr: ::core::option::Option<u64>,
13812    #[prost(int32, optional, tag = "5")]
13813    pub mflags: ::core::option::Option<i32>,
13814}
13815#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13816pub struct FastrpcDmaUnmapFtraceEvent {
13817    #[prost(int32, optional, tag = "1")]
13818    pub cid: ::core::option::Option<i32>,
13819    #[prost(uint64, optional, tag = "2")]
13820    pub phys: ::core::option::Option<u64>,
13821    #[prost(uint64, optional, tag = "3")]
13822    pub size: ::core::option::Option<u64>,
13823}
13824#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13825pub struct FastrpcDmaMapFtraceEvent {
13826    #[prost(int32, optional, tag = "1")]
13827    pub cid: ::core::option::Option<i32>,
13828    #[prost(int32, optional, tag = "2")]
13829    pub fd: ::core::option::Option<i32>,
13830    #[prost(uint64, optional, tag = "3")]
13831    pub phys: ::core::option::Option<u64>,
13832    #[prost(uint64, optional, tag = "4")]
13833    pub size: ::core::option::Option<u64>,
13834    #[prost(uint64, optional, tag = "5")]
13835    pub len: ::core::option::Option<u64>,
13836    #[prost(uint32, optional, tag = "6")]
13837    pub attr: ::core::option::Option<u32>,
13838    #[prost(int32, optional, tag = "7")]
13839    pub mflags: ::core::option::Option<i32>,
13840}
13841#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13842pub struct FenceInitFtraceEvent {
13843    #[prost(uint32, optional, tag = "1")]
13844    pub context: ::core::option::Option<u32>,
13845    #[prost(string, optional, tag = "2")]
13846    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13847    #[prost(uint32, optional, tag = "3")]
13848    pub seqno: ::core::option::Option<u32>,
13849    #[prost(string, optional, tag = "4")]
13850    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13851}
13852#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13853pub struct FenceDestroyFtraceEvent {
13854    #[prost(uint32, optional, tag = "1")]
13855    pub context: ::core::option::Option<u32>,
13856    #[prost(string, optional, tag = "2")]
13857    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13858    #[prost(uint32, optional, tag = "3")]
13859    pub seqno: ::core::option::Option<u32>,
13860    #[prost(string, optional, tag = "4")]
13861    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13862}
13863#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13864pub struct FenceEnableSignalFtraceEvent {
13865    #[prost(uint32, optional, tag = "1")]
13866    pub context: ::core::option::Option<u32>,
13867    #[prost(string, optional, tag = "2")]
13868    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13869    #[prost(uint32, optional, tag = "3")]
13870    pub seqno: ::core::option::Option<u32>,
13871    #[prost(string, optional, tag = "4")]
13872    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13873}
13874#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13875pub struct FenceSignaledFtraceEvent {
13876    #[prost(uint32, optional, tag = "1")]
13877    pub context: ::core::option::Option<u32>,
13878    #[prost(string, optional, tag = "2")]
13879    pub driver: ::core::option::Option<::prost::alloc::string::String>,
13880    #[prost(uint32, optional, tag = "3")]
13881    pub seqno: ::core::option::Option<u32>,
13882    #[prost(string, optional, tag = "4")]
13883    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
13884}
13885#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13886pub struct MmFilemapAddToPageCacheFtraceEvent {
13887    #[prost(uint64, optional, tag = "1")]
13888    pub pfn: ::core::option::Option<u64>,
13889    #[prost(uint64, optional, tag = "2")]
13890    pub i_ino: ::core::option::Option<u64>,
13891    #[prost(uint64, optional, tag = "3")]
13892    pub index: ::core::option::Option<u64>,
13893    #[prost(uint64, optional, tag = "4")]
13894    pub s_dev: ::core::option::Option<u64>,
13895    #[prost(uint64, optional, tag = "5")]
13896    pub page: ::core::option::Option<u64>,
13897}
13898#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13899pub struct MmFilemapDeleteFromPageCacheFtraceEvent {
13900    #[prost(uint64, optional, tag = "1")]
13901    pub pfn: ::core::option::Option<u64>,
13902    #[prost(uint64, optional, tag = "2")]
13903    pub i_ino: ::core::option::Option<u64>,
13904    #[prost(uint64, optional, tag = "3")]
13905    pub index: ::core::option::Option<u64>,
13906    #[prost(uint64, optional, tag = "4")]
13907    pub s_dev: ::core::option::Option<u64>,
13908    #[prost(uint64, optional, tag = "5")]
13909    pub page: ::core::option::Option<u64>,
13910}
13911#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13912pub struct DoSysOpenFtraceEvent {
13913    #[prost(string, optional, tag = "1")]
13914    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13915    #[prost(int32, optional, tag = "2")]
13916    pub flags: ::core::option::Option<i32>,
13917    #[prost(int32, optional, tag = "3")]
13918    pub mode: ::core::option::Option<i32>,
13919}
13920#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13921pub struct OpenExecFtraceEvent {
13922    #[prost(string, optional, tag = "1")]
13923    pub filename: ::core::option::Option<::prost::alloc::string::String>,
13924}
13925#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13926pub struct PrintFtraceEvent {
13927    #[prost(uint64, optional, tag = "1")]
13928    pub ip: ::core::option::Option<u64>,
13929    #[prost(string, optional, tag = "2")]
13930    pub buf: ::core::option::Option<::prost::alloc::string::String>,
13931}
13932#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13933pub struct FuncgraphEntryFtraceEvent {
13934    #[prost(int32, optional, tag = "1")]
13935    pub depth: ::core::option::Option<i32>,
13936    #[prost(uint64, optional, tag = "2")]
13937    pub func: ::core::option::Option<u64>,
13938}
13939#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13940pub struct FuncgraphExitFtraceEvent {
13941    #[prost(uint64, optional, tag = "1")]
13942    pub calltime: ::core::option::Option<u64>,
13943    #[prost(int32, optional, tag = "2")]
13944    pub depth: ::core::option::Option<i32>,
13945    #[prost(uint64, optional, tag = "3")]
13946    pub func: ::core::option::Option<u64>,
13947    #[prost(uint64, optional, tag = "4")]
13948    pub overrun: ::core::option::Option<u64>,
13949    #[prost(uint64, optional, tag = "5")]
13950    pub rettime: ::core::option::Option<u64>,
13951}
13952#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13953pub struct FwtpPerfettoCounterFtraceEvent {
13954    #[prost(uint64, optional, tag = "1")]
13955    pub timestamp: ::core::option::Option<u64>,
13956    #[prost(uint32, optional, tag = "2")]
13957    pub track_id: ::core::option::Option<u32>,
13958    #[prost(string, optional, tag = "3")]
13959    pub category: ::core::option::Option<::prost::alloc::string::String>,
13960    #[prost(string, optional, tag = "4")]
13961    pub name: ::core::option::Option<::prost::alloc::string::String>,
13962    #[prost(uint32, optional, tag = "5")]
13963    pub value: ::core::option::Option<u32>,
13964}
13965#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13966pub struct FwtpPerfettoSliceFtraceEvent {
13967    #[prost(uint64, optional, tag = "1")]
13968    pub timestamp: ::core::option::Option<u64>,
13969    #[prost(uint32, optional, tag = "2")]
13970    pub track_id: ::core::option::Option<u32>,
13971    #[prost(string, optional, tag = "3")]
13972    pub category: ::core::option::Option<::prost::alloc::string::String>,
13973    #[prost(string, optional, tag = "4")]
13974    pub name: ::core::option::Option<::prost::alloc::string::String>,
13975    #[prost(uint32, optional, tag = "5")]
13976    pub begin: ::core::option::Option<u32>,
13977}
13978#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13979pub struct G2dTracingMarkWriteFtraceEvent {
13980    #[prost(int32, optional, tag = "1")]
13981    pub pid: ::core::option::Option<i32>,
13982    #[prost(string, optional, tag = "4")]
13983    pub name: ::core::option::Option<::prost::alloc::string::String>,
13984    #[prost(uint32, optional, tag = "5")]
13985    pub r#type: ::core::option::Option<u32>,
13986    #[prost(int32, optional, tag = "6")]
13987    pub value: ::core::option::Option<i32>,
13988}
13989/// This generic proto is used to output events in the trace
13990/// when a specific proto for that event does not exist.
13991#[derive(Clone, PartialEq, ::prost::Message)]
13992pub struct GenericFtraceEvent {
13993    #[prost(string, optional, tag = "1")]
13994    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
13995    #[prost(message, repeated, tag = "2")]
13996    pub field: ::prost::alloc::vec::Vec<generic_ftrace_event::Field>,
13997}
13998/// Nested message and enum types in `GenericFtraceEvent`.
13999pub mod generic_ftrace_event {
14000    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14001    pub struct Field {
14002        #[prost(string, optional, tag = "1")]
14003        pub name: ::core::option::Option<::prost::alloc::string::String>,
14004        #[prost(oneof = "field::Value", tags = "3, 4, 5")]
14005        pub value: ::core::option::Option<field::Value>,
14006    }
14007    /// Nested message and enum types in `Field`.
14008    pub mod field {
14009        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
14010        pub enum Value {
14011            #[prost(string, tag = "3")]
14012            StrValue(::prost::alloc::string::String),
14013            #[prost(int64, tag = "4")]
14014            IntValue(i64),
14015            #[prost(uint64, tag = "5")]
14016            UintValue(u64),
14017        }
14018    }
14019}
14020#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14021pub struct KprobeEvent {
14022    #[prost(string, optional, tag = "1")]
14023    pub name: ::core::option::Option<::prost::alloc::string::String>,
14024    #[prost(enumeration = "kprobe_event::KprobeType", optional, tag = "2")]
14025    pub r#type: ::core::option::Option<i32>,
14026}
14027/// Nested message and enum types in `KprobeEvent`.
14028pub mod kprobe_event {
14029    #[derive(
14030        Clone,
14031        Copy,
14032        Debug,
14033        PartialEq,
14034        Eq,
14035        Hash,
14036        PartialOrd,
14037        Ord,
14038        ::prost::Enumeration
14039    )]
14040    #[repr(i32)]
14041    pub enum KprobeType {
14042        Unknown = 0,
14043        Begin = 1,
14044        End = 2,
14045        Instant = 3,
14046    }
14047    impl KprobeType {
14048        /// String value of the enum field names used in the ProtoBuf definition.
14049        ///
14050        /// The values are not transformed in any way and thus are considered stable
14051        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14052        pub fn as_str_name(&self) -> &'static str {
14053            match self {
14054                Self::Unknown => "KPROBE_TYPE_UNKNOWN",
14055                Self::Begin => "KPROBE_TYPE_BEGIN",
14056                Self::End => "KPROBE_TYPE_END",
14057                Self::Instant => "KPROBE_TYPE_INSTANT",
14058            }
14059        }
14060        /// Creates an enum from field names used in the ProtoBuf definition.
14061        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14062            match value {
14063                "KPROBE_TYPE_UNKNOWN" => Some(Self::Unknown),
14064                "KPROBE_TYPE_BEGIN" => Some(Self::Begin),
14065                "KPROBE_TYPE_END" => Some(Self::End),
14066                "KPROBE_TYPE_INSTANT" => Some(Self::Instant),
14067                _ => None,
14068            }
14069        }
14070    }
14071}
14072#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14073pub struct GoogleIccEventFtraceEvent {
14074    #[prost(string, optional, tag = "1")]
14075    pub event: ::core::option::Option<::prost::alloc::string::String>,
14076    #[prost(uint64, optional, tag = "2")]
14077    pub timestamp: ::core::option::Option<u64>,
14078}
14079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14080pub struct GoogleIrmEventFtraceEvent {
14081    #[prost(string, optional, tag = "1")]
14082    pub event: ::core::option::Option<::prost::alloc::string::String>,
14083    #[prost(uint64, optional, tag = "2")]
14084    pub timestamp: ::core::option::Option<u64>,
14085}
14086#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14087pub struct GpuMemTotalFtraceEvent {
14088    #[prost(uint32, optional, tag = "1")]
14089    pub gpu_id: ::core::option::Option<u32>,
14090    #[prost(uint32, optional, tag = "2")]
14091    pub pid: ::core::option::Option<u32>,
14092    #[prost(uint64, optional, tag = "3")]
14093    pub size: ::core::option::Option<u64>,
14094}
14095#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14096pub struct DrmSchedJobFtraceEvent {
14097    #[prost(uint64, optional, tag = "1")]
14098    pub entity: ::core::option::Option<u64>,
14099    #[prost(uint64, optional, tag = "2")]
14100    pub fence: ::core::option::Option<u64>,
14101    #[prost(int32, optional, tag = "3")]
14102    pub hw_job_count: ::core::option::Option<i32>,
14103    #[prost(uint64, optional, tag = "4")]
14104    pub id: ::core::option::Option<u64>,
14105    #[prost(uint32, optional, tag = "5")]
14106    pub job_count: ::core::option::Option<u32>,
14107    #[prost(string, optional, tag = "6")]
14108    pub name: ::core::option::Option<::prost::alloc::string::String>,
14109}
14110#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14111pub struct DrmRunJobFtraceEvent {
14112    #[prost(uint64, optional, tag = "1")]
14113    pub entity: ::core::option::Option<u64>,
14114    #[prost(uint64, optional, tag = "2")]
14115    pub fence: ::core::option::Option<u64>,
14116    #[prost(int32, optional, tag = "3")]
14117    pub hw_job_count: ::core::option::Option<i32>,
14118    #[prost(uint64, optional, tag = "4")]
14119    pub id: ::core::option::Option<u64>,
14120    #[prost(uint32, optional, tag = "5")]
14121    pub job_count: ::core::option::Option<u32>,
14122    #[prost(string, optional, tag = "6")]
14123    pub name: ::core::option::Option<::prost::alloc::string::String>,
14124}
14125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14126pub struct DrmSchedProcessJobFtraceEvent {
14127    #[prost(uint64, optional, tag = "1")]
14128    pub fence: ::core::option::Option<u64>,
14129}
14130#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14131pub struct DrmSchedJobAddDepFtraceEvent {
14132    #[prost(uint64, optional, tag = "1")]
14133    pub fence_context: ::core::option::Option<u64>,
14134    #[prost(uint64, optional, tag = "2")]
14135    pub fence_seqno: ::core::option::Option<u64>,
14136    #[prost(uint64, optional, tag = "3")]
14137    pub ctx: ::core::option::Option<u64>,
14138    #[prost(uint64, optional, tag = "4")]
14139    pub seqno: ::core::option::Option<u64>,
14140}
14141#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14142pub struct DrmSchedJobDoneFtraceEvent {
14143    #[prost(uint64, optional, tag = "1")]
14144    pub fence_context: ::core::option::Option<u64>,
14145    #[prost(uint64, optional, tag = "2")]
14146    pub fence_seqno: ::core::option::Option<u64>,
14147}
14148#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14149pub struct DrmSchedJobQueueFtraceEvent {
14150    #[prost(string, optional, tag = "1")]
14151    pub name: ::core::option::Option<::prost::alloc::string::String>,
14152    #[prost(uint32, optional, tag = "2")]
14153    pub job_count: ::core::option::Option<u32>,
14154    #[prost(int32, optional, tag = "3")]
14155    pub hw_job_count: ::core::option::Option<i32>,
14156    #[prost(string, optional, tag = "4")]
14157    pub dev: ::core::option::Option<::prost::alloc::string::String>,
14158    #[prost(uint64, optional, tag = "5")]
14159    pub fence_context: ::core::option::Option<u64>,
14160    #[prost(uint64, optional, tag = "6")]
14161    pub fence_seqno: ::core::option::Option<u64>,
14162    #[prost(uint64, optional, tag = "7")]
14163    pub client_id: ::core::option::Option<u64>,
14164}
14165#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14166pub struct DrmSchedJobRunFtraceEvent {
14167    #[prost(string, optional, tag = "1")]
14168    pub name: ::core::option::Option<::prost::alloc::string::String>,
14169    #[prost(uint32, optional, tag = "2")]
14170    pub job_count: ::core::option::Option<u32>,
14171    #[prost(int32, optional, tag = "3")]
14172    pub hw_job_count: ::core::option::Option<i32>,
14173    #[prost(string, optional, tag = "4")]
14174    pub dev: ::core::option::Option<::prost::alloc::string::String>,
14175    #[prost(uint64, optional, tag = "5")]
14176    pub fence_context: ::core::option::Option<u64>,
14177    #[prost(uint64, optional, tag = "6")]
14178    pub fence_seqno: ::core::option::Option<u64>,
14179    #[prost(uint64, optional, tag = "7")]
14180    pub client_id: ::core::option::Option<u64>,
14181}
14182#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14183pub struct DrmSchedJobUnschedulableFtraceEvent {
14184    #[prost(uint64, optional, tag = "1")]
14185    pub fence_context: ::core::option::Option<u64>,
14186    #[prost(uint64, optional, tag = "2")]
14187    pub fence_seqno: ::core::option::Option<u64>,
14188    #[prost(uint64, optional, tag = "3")]
14189    pub ctx: ::core::option::Option<u64>,
14190    #[prost(uint64, optional, tag = "4")]
14191    pub seqno: ::core::option::Option<u64>,
14192}
14193#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14194pub struct HypEnterFtraceEvent {}
14195#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14196pub struct HypExitFtraceEvent {}
14197#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14198pub struct HostHcallFtraceEvent {
14199    #[prost(uint32, optional, tag = "1")]
14200    pub id: ::core::option::Option<u32>,
14201    #[prost(uint32, optional, tag = "2")]
14202    pub invalid: ::core::option::Option<u32>,
14203}
14204#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14205pub struct HostSmcFtraceEvent {
14206    #[prost(uint64, optional, tag = "1")]
14207    pub id: ::core::option::Option<u64>,
14208    #[prost(uint32, optional, tag = "2")]
14209    pub forwarded: ::core::option::Option<u32>,
14210}
14211#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14212pub struct HostMemAbortFtraceEvent {
14213    #[prost(uint64, optional, tag = "1")]
14214    pub esr: ::core::option::Option<u64>,
14215    #[prost(uint64, optional, tag = "2")]
14216    pub addr: ::core::option::Option<u64>,
14217}
14218#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14219pub struct HostFfaCallFtraceEvent {
14220    #[prost(uint64, optional, tag = "1")]
14221    pub func_id: ::core::option::Option<u64>,
14222    #[prost(uint64, optional, tag = "2")]
14223    pub res_a1: ::core::option::Option<u64>,
14224    #[prost(uint64, optional, tag = "3")]
14225    pub res_a2: ::core::option::Option<u64>,
14226    #[prost(uint64, optional, tag = "4")]
14227    pub res_a3: ::core::option::Option<u64>,
14228    #[prost(uint64, optional, tag = "5")]
14229    pub res_a4: ::core::option::Option<u64>,
14230    #[prost(int32, optional, tag = "6")]
14231    pub handled: ::core::option::Option<i32>,
14232    #[prost(int32, optional, tag = "7")]
14233    pub err: ::core::option::Option<i32>,
14234}
14235#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14236pub struct IommuIdmapFtraceEvent {
14237    #[prost(uint64, optional, tag = "1")]
14238    pub from: ::core::option::Option<u64>,
14239    #[prost(uint64, optional, tag = "2")]
14240    pub to: ::core::option::Option<u64>,
14241    #[prost(int32, optional, tag = "3")]
14242    pub prot: ::core::option::Option<i32>,
14243}
14244#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14245pub struct PsciMemProtectFtraceEvent {
14246    #[prost(uint64, optional, tag = "1")]
14247    pub count: ::core::option::Option<u64>,
14248    #[prost(uint64, optional, tag = "2")]
14249    pub was: ::core::option::Option<u64>,
14250}
14251#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14252pub struct HypervisorHostHcallFtraceEvent {
14253    #[prost(uint32, optional, tag = "1")]
14254    pub id: ::core::option::Option<u32>,
14255    #[prost(uint32, optional, tag = "2")]
14256    pub invalid: ::core::option::Option<u32>,
14257}
14258#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14259pub struct HypervisorHostSmcFtraceEvent {
14260    #[prost(uint64, optional, tag = "1")]
14261    pub id: ::core::option::Option<u64>,
14262    #[prost(uint32, optional, tag = "2")]
14263    pub forwarded: ::core::option::Option<u32>,
14264}
14265#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14266pub struct HypervisorHypExitFtraceEvent {}
14267#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14268pub struct HypervisorIommuIdmapFtraceEvent {
14269    #[prost(uint64, optional, tag = "1")]
14270    pub from: ::core::option::Option<u64>,
14271    #[prost(uint64, optional, tag = "2")]
14272    pub to: ::core::option::Option<u64>,
14273    #[prost(int32, optional, tag = "3")]
14274    pub prot: ::core::option::Option<i32>,
14275}
14276#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14277pub struct HypervisorPsciMemProtectFtraceEvent {
14278    #[prost(uint64, optional, tag = "1")]
14279    pub count: ::core::option::Option<u64>,
14280    #[prost(uint64, optional, tag = "2")]
14281    pub was: ::core::option::Option<u64>,
14282}
14283#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14284pub struct HypervisorHostMemAbortFtraceEvent {
14285    #[prost(uint64, optional, tag = "1")]
14286    pub esr: ::core::option::Option<u64>,
14287    #[prost(uint64, optional, tag = "2")]
14288    pub addr: ::core::option::Option<u64>,
14289}
14290#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14291pub struct HypervisorHypEnterFtraceEvent {}
14292#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14293pub struct HypervisorIommuIdmapCompleteFtraceEvent {
14294    #[prost(uint32, optional, tag = "1")]
14295    pub map: ::core::option::Option<u32>,
14296}
14297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14298pub struct HypervisorVcpuIllegalTrapFtraceEvent {
14299    #[prost(uint64, optional, tag = "1")]
14300    pub esr: ::core::option::Option<u64>,
14301}
14302#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14303pub struct I2cReadFtraceEvent {
14304    #[prost(int32, optional, tag = "1")]
14305    pub adapter_nr: ::core::option::Option<i32>,
14306    #[prost(uint32, optional, tag = "2")]
14307    pub msg_nr: ::core::option::Option<u32>,
14308    #[prost(uint32, optional, tag = "3")]
14309    pub addr: ::core::option::Option<u32>,
14310    #[prost(uint32, optional, tag = "4")]
14311    pub flags: ::core::option::Option<u32>,
14312    #[prost(uint32, optional, tag = "5")]
14313    pub len: ::core::option::Option<u32>,
14314}
14315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14316pub struct I2cWriteFtraceEvent {
14317    #[prost(int32, optional, tag = "1")]
14318    pub adapter_nr: ::core::option::Option<i32>,
14319    #[prost(uint32, optional, tag = "2")]
14320    pub msg_nr: ::core::option::Option<u32>,
14321    #[prost(uint32, optional, tag = "3")]
14322    pub addr: ::core::option::Option<u32>,
14323    #[prost(uint32, optional, tag = "4")]
14324    pub flags: ::core::option::Option<u32>,
14325    #[prost(uint32, optional, tag = "5")]
14326    pub len: ::core::option::Option<u32>,
14327    #[prost(bytes = "vec", optional, tag = "7")]
14328    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14329}
14330#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14331pub struct I2cResultFtraceEvent {
14332    #[prost(int32, optional, tag = "1")]
14333    pub adapter_nr: ::core::option::Option<i32>,
14334    #[prost(uint32, optional, tag = "2")]
14335    pub nr_msgs: ::core::option::Option<u32>,
14336    #[prost(int32, optional, tag = "3")]
14337    pub ret: ::core::option::Option<i32>,
14338}
14339#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14340pub struct I2cReplyFtraceEvent {
14341    #[prost(int32, optional, tag = "1")]
14342    pub adapter_nr: ::core::option::Option<i32>,
14343    #[prost(uint32, optional, tag = "2")]
14344    pub msg_nr: ::core::option::Option<u32>,
14345    #[prost(uint32, optional, tag = "3")]
14346    pub addr: ::core::option::Option<u32>,
14347    #[prost(uint32, optional, tag = "4")]
14348    pub flags: ::core::option::Option<u32>,
14349    #[prost(uint32, optional, tag = "5")]
14350    pub len: ::core::option::Option<u32>,
14351    #[prost(bytes = "vec", optional, tag = "7")]
14352    pub buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
14353}
14354#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14355pub struct SmbusReadFtraceEvent {
14356    #[prost(int32, optional, tag = "1")]
14357    pub adapter_nr: ::core::option::Option<i32>,
14358    #[prost(uint32, optional, tag = "2")]
14359    pub flags: ::core::option::Option<u32>,
14360    #[prost(uint32, optional, tag = "3")]
14361    pub addr: ::core::option::Option<u32>,
14362    #[prost(uint32, optional, tag = "4")]
14363    pub command: ::core::option::Option<u32>,
14364    #[prost(uint32, optional, tag = "5")]
14365    pub protocol: ::core::option::Option<u32>,
14366}
14367#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14368pub struct SmbusWriteFtraceEvent {
14369    #[prost(int32, optional, tag = "1")]
14370    pub adapter_nr: ::core::option::Option<i32>,
14371    #[prost(uint32, optional, tag = "2")]
14372    pub addr: ::core::option::Option<u32>,
14373    #[prost(uint32, optional, tag = "3")]
14374    pub flags: ::core::option::Option<u32>,
14375    #[prost(uint32, optional, tag = "4")]
14376    pub command: ::core::option::Option<u32>,
14377    #[prost(uint32, optional, tag = "5")]
14378    pub len: ::core::option::Option<u32>,
14379    #[prost(uint32, optional, tag = "6")]
14380    pub protocol: ::core::option::Option<u32>,
14381}
14382#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14383pub struct SmbusResultFtraceEvent {
14384    #[prost(int32, optional, tag = "1")]
14385    pub adapter_nr: ::core::option::Option<i32>,
14386    #[prost(uint32, optional, tag = "2")]
14387    pub addr: ::core::option::Option<u32>,
14388    #[prost(uint32, optional, tag = "3")]
14389    pub flags: ::core::option::Option<u32>,
14390    #[prost(uint32, optional, tag = "4")]
14391    pub read_write: ::core::option::Option<u32>,
14392    #[prost(uint32, optional, tag = "5")]
14393    pub command: ::core::option::Option<u32>,
14394    #[prost(int32, optional, tag = "6")]
14395    pub res: ::core::option::Option<i32>,
14396    #[prost(uint32, optional, tag = "7")]
14397    pub protocol: ::core::option::Option<u32>,
14398}
14399#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14400pub struct SmbusReplyFtraceEvent {
14401    #[prost(int32, optional, tag = "1")]
14402    pub adapter_nr: ::core::option::Option<i32>,
14403    #[prost(uint32, optional, tag = "2")]
14404    pub addr: ::core::option::Option<u32>,
14405    #[prost(uint32, optional, tag = "3")]
14406    pub flags: ::core::option::Option<u32>,
14407    #[prost(uint32, optional, tag = "4")]
14408    pub command: ::core::option::Option<u32>,
14409    #[prost(uint32, optional, tag = "5")]
14410    pub len: ::core::option::Option<u32>,
14411    #[prost(uint32, optional, tag = "6")]
14412    pub protocol: ::core::option::Option<u32>,
14413}
14414#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14415pub struct IonStatFtraceEvent {
14416    #[prost(uint32, optional, tag = "1")]
14417    pub buffer_id: ::core::option::Option<u32>,
14418    #[prost(int64, optional, tag = "2")]
14419    pub len: ::core::option::Option<i64>,
14420    #[prost(uint64, optional, tag = "3")]
14421    pub total_allocated: ::core::option::Option<u64>,
14422}
14423#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14424pub struct IpiEntryFtraceEvent {
14425    #[prost(string, optional, tag = "1")]
14426    pub reason: ::core::option::Option<::prost::alloc::string::String>,
14427}
14428#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14429pub struct IpiExitFtraceEvent {
14430    #[prost(string, optional, tag = "1")]
14431    pub reason: ::core::option::Option<::prost::alloc::string::String>,
14432}
14433#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14434pub struct IpiRaiseFtraceEvent {
14435    #[prost(uint32, optional, tag = "1")]
14436    pub target_cpus: ::core::option::Option<u32>,
14437    #[prost(string, optional, tag = "2")]
14438    pub reason: ::core::option::Option<::prost::alloc::string::String>,
14439}
14440#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14441pub struct SoftirqEntryFtraceEvent {
14442    #[prost(uint32, optional, tag = "1")]
14443    pub vec: ::core::option::Option<u32>,
14444}
14445#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14446pub struct SoftirqExitFtraceEvent {
14447    #[prost(uint32, optional, tag = "1")]
14448    pub vec: ::core::option::Option<u32>,
14449}
14450#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14451pub struct SoftirqRaiseFtraceEvent {
14452    #[prost(uint32, optional, tag = "1")]
14453    pub vec: ::core::option::Option<u32>,
14454}
14455#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14456pub struct IrqHandlerEntryFtraceEvent {
14457    #[prost(int32, optional, tag = "1")]
14458    pub irq: ::core::option::Option<i32>,
14459    #[prost(string, optional, tag = "2")]
14460    pub name: ::core::option::Option<::prost::alloc::string::String>,
14461    #[prost(uint32, optional, tag = "3")]
14462    pub handler: ::core::option::Option<u32>,
14463}
14464#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14465pub struct IrqHandlerExitFtraceEvent {
14466    #[prost(int32, optional, tag = "1")]
14467    pub irq: ::core::option::Option<i32>,
14468    #[prost(int32, optional, tag = "2")]
14469    pub ret: ::core::option::Option<i32>,
14470}
14471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14472pub struct LocalTimerEntryFtraceEvent {
14473    #[prost(int32, optional, tag = "1")]
14474    pub vector: ::core::option::Option<i32>,
14475}
14476#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14477pub struct LocalTimerExitFtraceEvent {
14478    #[prost(int32, optional, tag = "1")]
14479    pub vector: ::core::option::Option<i32>,
14480}
14481#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14482pub struct KgslGpuFrequencyFtraceEvent {
14483    #[prost(uint32, optional, tag = "1")]
14484    pub gpu_freq: ::core::option::Option<u32>,
14485    #[prost(uint32, optional, tag = "2")]
14486    pub gpu_id: ::core::option::Option<u32>,
14487}
14488#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14489pub struct KgslAdrenoCmdbatchQueuedFtraceEvent {
14490    #[prost(uint32, optional, tag = "1")]
14491    pub id: ::core::option::Option<u32>,
14492    #[prost(uint32, optional, tag = "2")]
14493    pub timestamp: ::core::option::Option<u32>,
14494    #[prost(uint32, optional, tag = "3")]
14495    pub queued: ::core::option::Option<u32>,
14496    #[prost(uint32, optional, tag = "4")]
14497    pub flags: ::core::option::Option<u32>,
14498    #[prost(uint32, optional, tag = "5")]
14499    pub prio: ::core::option::Option<u32>,
14500}
14501#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14502pub struct KgslAdrenoCmdbatchSubmittedFtraceEvent {
14503    #[prost(uint32, optional, tag = "1")]
14504    pub id: ::core::option::Option<u32>,
14505    #[prost(uint32, optional, tag = "2")]
14506    pub timestamp: ::core::option::Option<u32>,
14507    #[prost(int64, optional, tag = "3")]
14508    pub inflight: ::core::option::Option<i64>,
14509    #[prost(uint32, optional, tag = "4")]
14510    pub flags: ::core::option::Option<u32>,
14511    #[prost(uint64, optional, tag = "5")]
14512    pub ticks: ::core::option::Option<u64>,
14513    #[prost(uint64, optional, tag = "6")]
14514    pub secs: ::core::option::Option<u64>,
14515    #[prost(uint64, optional, tag = "7")]
14516    pub usecs: ::core::option::Option<u64>,
14517    #[prost(int32, optional, tag = "8")]
14518    pub prio: ::core::option::Option<i32>,
14519    #[prost(int32, optional, tag = "9")]
14520    pub rb_id: ::core::option::Option<i32>,
14521    #[prost(uint32, optional, tag = "10")]
14522    pub rptr: ::core::option::Option<u32>,
14523    #[prost(uint32, optional, tag = "11")]
14524    pub wptr: ::core::option::Option<u32>,
14525    #[prost(int32, optional, tag = "12")]
14526    pub q_inflight: ::core::option::Option<i32>,
14527    #[prost(int32, optional, tag = "13")]
14528    pub dispatch_queue: ::core::option::Option<i32>,
14529}
14530#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14531pub struct KgslAdrenoCmdbatchSyncFtraceEvent {
14532    #[prost(uint32, optional, tag = "1")]
14533    pub id: ::core::option::Option<u32>,
14534    #[prost(uint32, optional, tag = "2")]
14535    pub timestamp: ::core::option::Option<u32>,
14536    #[prost(uint64, optional, tag = "3")]
14537    pub ticks: ::core::option::Option<u64>,
14538    #[prost(int32, optional, tag = "4")]
14539    pub prio: ::core::option::Option<i32>,
14540}
14541#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14542pub struct KgslAdrenoCmdbatchRetiredFtraceEvent {
14543    #[prost(uint32, optional, tag = "1")]
14544    pub id: ::core::option::Option<u32>,
14545    #[prost(uint32, optional, tag = "2")]
14546    pub timestamp: ::core::option::Option<u32>,
14547    #[prost(int64, optional, tag = "3")]
14548    pub inflight: ::core::option::Option<i64>,
14549    #[prost(uint32, optional, tag = "4")]
14550    pub recovery: ::core::option::Option<u32>,
14551    #[prost(uint32, optional, tag = "5")]
14552    pub flags: ::core::option::Option<u32>,
14553    #[prost(uint64, optional, tag = "6")]
14554    pub start: ::core::option::Option<u64>,
14555    #[prost(uint64, optional, tag = "7")]
14556    pub retire: ::core::option::Option<u64>,
14557    #[prost(int32, optional, tag = "8")]
14558    pub prio: ::core::option::Option<i32>,
14559    #[prost(int32, optional, tag = "9")]
14560    pub rb_id: ::core::option::Option<i32>,
14561    #[prost(uint32, optional, tag = "10")]
14562    pub rptr: ::core::option::Option<u32>,
14563    #[prost(uint32, optional, tag = "11")]
14564    pub wptr: ::core::option::Option<u32>,
14565    #[prost(int32, optional, tag = "12")]
14566    pub q_inflight: ::core::option::Option<i32>,
14567    #[prost(uint64, optional, tag = "13")]
14568    pub fault_recovery: ::core::option::Option<u64>,
14569    #[prost(uint32, optional, tag = "14")]
14570    pub dispatch_queue: ::core::option::Option<u32>,
14571    #[prost(uint64, optional, tag = "15")]
14572    pub submitted_to_rb: ::core::option::Option<u64>,
14573    #[prost(uint64, optional, tag = "16")]
14574    pub retired_on_gmu: ::core::option::Option<u64>,
14575    #[prost(uint64, optional, tag = "17")]
14576    pub active: ::core::option::Option<u64>,
14577}
14578#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14579pub struct AllocPagesIommuEndFtraceEvent {
14580    #[prost(uint32, optional, tag = "1")]
14581    pub gfp_flags: ::core::option::Option<u32>,
14582    #[prost(uint32, optional, tag = "2")]
14583    pub order: ::core::option::Option<u32>,
14584}
14585#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14586pub struct AllocPagesIommuFailFtraceEvent {
14587    #[prost(uint32, optional, tag = "1")]
14588    pub gfp_flags: ::core::option::Option<u32>,
14589    #[prost(uint32, optional, tag = "2")]
14590    pub order: ::core::option::Option<u32>,
14591}
14592#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14593pub struct AllocPagesIommuStartFtraceEvent {
14594    #[prost(uint32, optional, tag = "1")]
14595    pub gfp_flags: ::core::option::Option<u32>,
14596    #[prost(uint32, optional, tag = "2")]
14597    pub order: ::core::option::Option<u32>,
14598}
14599#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14600pub struct AllocPagesSysEndFtraceEvent {
14601    #[prost(uint32, optional, tag = "1")]
14602    pub gfp_flags: ::core::option::Option<u32>,
14603    #[prost(uint32, optional, tag = "2")]
14604    pub order: ::core::option::Option<u32>,
14605}
14606#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14607pub struct AllocPagesSysFailFtraceEvent {
14608    #[prost(uint32, optional, tag = "1")]
14609    pub gfp_flags: ::core::option::Option<u32>,
14610    #[prost(uint32, optional, tag = "2")]
14611    pub order: ::core::option::Option<u32>,
14612}
14613#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14614pub struct AllocPagesSysStartFtraceEvent {
14615    #[prost(uint32, optional, tag = "1")]
14616    pub gfp_flags: ::core::option::Option<u32>,
14617    #[prost(uint32, optional, tag = "2")]
14618    pub order: ::core::option::Option<u32>,
14619}
14620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14621pub struct DmaAllocContiguousRetryFtraceEvent {
14622    #[prost(int32, optional, tag = "1")]
14623    pub tries: ::core::option::Option<i32>,
14624}
14625#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14626pub struct IommuMapRangeFtraceEvent {
14627    #[prost(uint64, optional, tag = "1")]
14628    pub chunk_size: ::core::option::Option<u64>,
14629    #[prost(uint64, optional, tag = "2")]
14630    pub len: ::core::option::Option<u64>,
14631    #[prost(uint64, optional, tag = "3")]
14632    pub pa: ::core::option::Option<u64>,
14633    #[prost(uint64, optional, tag = "4")]
14634    pub va: ::core::option::Option<u64>,
14635}
14636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14637pub struct IommuSecPtblMapRangeEndFtraceEvent {
14638    #[prost(uint64, optional, tag = "1")]
14639    pub len: ::core::option::Option<u64>,
14640    #[prost(int32, optional, tag = "2")]
14641    pub num: ::core::option::Option<i32>,
14642    #[prost(uint32, optional, tag = "3")]
14643    pub pa: ::core::option::Option<u32>,
14644    #[prost(int32, optional, tag = "4")]
14645    pub sec_id: ::core::option::Option<i32>,
14646    #[prost(uint64, optional, tag = "5")]
14647    pub va: ::core::option::Option<u64>,
14648}
14649#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14650pub struct IommuSecPtblMapRangeStartFtraceEvent {
14651    #[prost(uint64, optional, tag = "1")]
14652    pub len: ::core::option::Option<u64>,
14653    #[prost(int32, optional, tag = "2")]
14654    pub num: ::core::option::Option<i32>,
14655    #[prost(uint32, optional, tag = "3")]
14656    pub pa: ::core::option::Option<u32>,
14657    #[prost(int32, optional, tag = "4")]
14658    pub sec_id: ::core::option::Option<i32>,
14659    #[prost(uint64, optional, tag = "5")]
14660    pub va: ::core::option::Option<u64>,
14661}
14662#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14663pub struct IonAllocBufferEndFtraceEvent {
14664    #[prost(string, optional, tag = "1")]
14665    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14666    #[prost(uint32, optional, tag = "2")]
14667    pub flags: ::core::option::Option<u32>,
14668    #[prost(string, optional, tag = "3")]
14669    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14670    #[prost(uint64, optional, tag = "4")]
14671    pub len: ::core::option::Option<u64>,
14672    #[prost(uint32, optional, tag = "5")]
14673    pub mask: ::core::option::Option<u32>,
14674}
14675#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14676pub struct IonAllocBufferFailFtraceEvent {
14677    #[prost(string, optional, tag = "1")]
14678    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14679    #[prost(int64, optional, tag = "2")]
14680    pub error: ::core::option::Option<i64>,
14681    #[prost(uint32, optional, tag = "3")]
14682    pub flags: ::core::option::Option<u32>,
14683    #[prost(string, optional, tag = "4")]
14684    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14685    #[prost(uint64, optional, tag = "5")]
14686    pub len: ::core::option::Option<u64>,
14687    #[prost(uint32, optional, tag = "6")]
14688    pub mask: ::core::option::Option<u32>,
14689}
14690#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14691pub struct IonAllocBufferFallbackFtraceEvent {
14692    #[prost(string, optional, tag = "1")]
14693    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14694    #[prost(int64, optional, tag = "2")]
14695    pub error: ::core::option::Option<i64>,
14696    #[prost(uint32, optional, tag = "3")]
14697    pub flags: ::core::option::Option<u32>,
14698    #[prost(string, optional, tag = "4")]
14699    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14700    #[prost(uint64, optional, tag = "5")]
14701    pub len: ::core::option::Option<u64>,
14702    #[prost(uint32, optional, tag = "6")]
14703    pub mask: ::core::option::Option<u32>,
14704}
14705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14706pub struct IonAllocBufferStartFtraceEvent {
14707    #[prost(string, optional, tag = "1")]
14708    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
14709    #[prost(uint32, optional, tag = "2")]
14710    pub flags: ::core::option::Option<u32>,
14711    #[prost(string, optional, tag = "3")]
14712    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14713    #[prost(uint64, optional, tag = "4")]
14714    pub len: ::core::option::Option<u64>,
14715    #[prost(uint32, optional, tag = "5")]
14716    pub mask: ::core::option::Option<u32>,
14717}
14718#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14719pub struct IonCpAllocRetryFtraceEvent {
14720    #[prost(int32, optional, tag = "1")]
14721    pub tries: ::core::option::Option<i32>,
14722}
14723#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14724pub struct IonCpSecureBufferEndFtraceEvent {
14725    #[prost(uint64, optional, tag = "1")]
14726    pub align: ::core::option::Option<u64>,
14727    #[prost(uint64, optional, tag = "2")]
14728    pub flags: ::core::option::Option<u64>,
14729    #[prost(string, optional, tag = "3")]
14730    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14731    #[prost(uint64, optional, tag = "4")]
14732    pub len: ::core::option::Option<u64>,
14733}
14734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14735pub struct IonCpSecureBufferStartFtraceEvent {
14736    #[prost(uint64, optional, tag = "1")]
14737    pub align: ::core::option::Option<u64>,
14738    #[prost(uint64, optional, tag = "2")]
14739    pub flags: ::core::option::Option<u64>,
14740    #[prost(string, optional, tag = "3")]
14741    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14742    #[prost(uint64, optional, tag = "4")]
14743    pub len: ::core::option::Option<u64>,
14744}
14745#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14746pub struct IonPrefetchingFtraceEvent {
14747    #[prost(uint64, optional, tag = "1")]
14748    pub len: ::core::option::Option<u64>,
14749}
14750#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14751pub struct IonSecureCmaAddToPoolEndFtraceEvent {
14752    #[prost(uint32, optional, tag = "1")]
14753    pub is_prefetch: ::core::option::Option<u32>,
14754    #[prost(uint64, optional, tag = "2")]
14755    pub len: ::core::option::Option<u64>,
14756    #[prost(int32, optional, tag = "3")]
14757    pub pool_total: ::core::option::Option<i32>,
14758}
14759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14760pub struct IonSecureCmaAddToPoolStartFtraceEvent {
14761    #[prost(uint32, optional, tag = "1")]
14762    pub is_prefetch: ::core::option::Option<u32>,
14763    #[prost(uint64, optional, tag = "2")]
14764    pub len: ::core::option::Option<u64>,
14765    #[prost(int32, optional, tag = "3")]
14766    pub pool_total: ::core::option::Option<i32>,
14767}
14768#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14769pub struct IonSecureCmaAllocateEndFtraceEvent {
14770    #[prost(uint64, optional, tag = "1")]
14771    pub align: ::core::option::Option<u64>,
14772    #[prost(uint64, optional, tag = "2")]
14773    pub flags: ::core::option::Option<u64>,
14774    #[prost(string, optional, tag = "3")]
14775    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14776    #[prost(uint64, optional, tag = "4")]
14777    pub len: ::core::option::Option<u64>,
14778}
14779#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14780pub struct IonSecureCmaAllocateStartFtraceEvent {
14781    #[prost(uint64, optional, tag = "1")]
14782    pub align: ::core::option::Option<u64>,
14783    #[prost(uint64, optional, tag = "2")]
14784    pub flags: ::core::option::Option<u64>,
14785    #[prost(string, optional, tag = "3")]
14786    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14787    #[prost(uint64, optional, tag = "4")]
14788    pub len: ::core::option::Option<u64>,
14789}
14790#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14791pub struct IonSecureCmaShrinkPoolEndFtraceEvent {
14792    #[prost(uint64, optional, tag = "1")]
14793    pub drained_size: ::core::option::Option<u64>,
14794    #[prost(uint64, optional, tag = "2")]
14795    pub skipped_size: ::core::option::Option<u64>,
14796}
14797#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14798pub struct IonSecureCmaShrinkPoolStartFtraceEvent {
14799    #[prost(uint64, optional, tag = "1")]
14800    pub drained_size: ::core::option::Option<u64>,
14801    #[prost(uint64, optional, tag = "2")]
14802    pub skipped_size: ::core::option::Option<u64>,
14803}
14804#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14805pub struct KfreeFtraceEvent {
14806    #[prost(uint64, optional, tag = "1")]
14807    pub call_site: ::core::option::Option<u64>,
14808    #[prost(uint64, optional, tag = "2")]
14809    pub ptr: ::core::option::Option<u64>,
14810}
14811#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14812pub struct KmallocFtraceEvent {
14813    #[prost(uint64, optional, tag = "1")]
14814    pub bytes_alloc: ::core::option::Option<u64>,
14815    #[prost(uint64, optional, tag = "2")]
14816    pub bytes_req: ::core::option::Option<u64>,
14817    #[prost(uint64, optional, tag = "3")]
14818    pub call_site: ::core::option::Option<u64>,
14819    #[prost(uint32, optional, tag = "4")]
14820    pub gfp_flags: ::core::option::Option<u32>,
14821    #[prost(uint64, optional, tag = "5")]
14822    pub ptr: ::core::option::Option<u64>,
14823}
14824#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14825pub struct KmallocNodeFtraceEvent {
14826    #[prost(uint64, optional, tag = "1")]
14827    pub bytes_alloc: ::core::option::Option<u64>,
14828    #[prost(uint64, optional, tag = "2")]
14829    pub bytes_req: ::core::option::Option<u64>,
14830    #[prost(uint64, optional, tag = "3")]
14831    pub call_site: ::core::option::Option<u64>,
14832    #[prost(uint32, optional, tag = "4")]
14833    pub gfp_flags: ::core::option::Option<u32>,
14834    #[prost(int32, optional, tag = "5")]
14835    pub node: ::core::option::Option<i32>,
14836    #[prost(uint64, optional, tag = "6")]
14837    pub ptr: ::core::option::Option<u64>,
14838}
14839#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14840pub struct KmemCacheAllocFtraceEvent {
14841    #[prost(uint64, optional, tag = "1")]
14842    pub bytes_alloc: ::core::option::Option<u64>,
14843    #[prost(uint64, optional, tag = "2")]
14844    pub bytes_req: ::core::option::Option<u64>,
14845    #[prost(uint64, optional, tag = "3")]
14846    pub call_site: ::core::option::Option<u64>,
14847    #[prost(uint32, optional, tag = "4")]
14848    pub gfp_flags: ::core::option::Option<u32>,
14849    #[prost(uint64, optional, tag = "5")]
14850    pub ptr: ::core::option::Option<u64>,
14851}
14852#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14853pub struct KmemCacheAllocNodeFtraceEvent {
14854    #[prost(uint64, optional, tag = "1")]
14855    pub bytes_alloc: ::core::option::Option<u64>,
14856    #[prost(uint64, optional, tag = "2")]
14857    pub bytes_req: ::core::option::Option<u64>,
14858    #[prost(uint64, optional, tag = "3")]
14859    pub call_site: ::core::option::Option<u64>,
14860    #[prost(uint32, optional, tag = "4")]
14861    pub gfp_flags: ::core::option::Option<u32>,
14862    #[prost(int32, optional, tag = "5")]
14863    pub node: ::core::option::Option<i32>,
14864    #[prost(uint64, optional, tag = "6")]
14865    pub ptr: ::core::option::Option<u64>,
14866}
14867#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14868pub struct KmemCacheFreeFtraceEvent {
14869    #[prost(uint64, optional, tag = "1")]
14870    pub call_site: ::core::option::Option<u64>,
14871    #[prost(uint64, optional, tag = "2")]
14872    pub ptr: ::core::option::Option<u64>,
14873}
14874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14875pub struct MigratePagesEndFtraceEvent {
14876    #[prost(int32, optional, tag = "1")]
14877    pub mode: ::core::option::Option<i32>,
14878}
14879#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14880pub struct MigratePagesStartFtraceEvent {
14881    #[prost(int32, optional, tag = "1")]
14882    pub mode: ::core::option::Option<i32>,
14883}
14884#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14885pub struct MigrateRetryFtraceEvent {
14886    #[prost(int32, optional, tag = "1")]
14887    pub tries: ::core::option::Option<i32>,
14888}
14889#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14890pub struct MmPageAllocFtraceEvent {
14891    #[prost(uint32, optional, tag = "1")]
14892    pub gfp_flags: ::core::option::Option<u32>,
14893    #[prost(int32, optional, tag = "2")]
14894    pub migratetype: ::core::option::Option<i32>,
14895    #[prost(uint32, optional, tag = "3")]
14896    pub order: ::core::option::Option<u32>,
14897    #[prost(uint64, optional, tag = "4")]
14898    pub page: ::core::option::Option<u64>,
14899    #[prost(uint64, optional, tag = "5")]
14900    pub pfn: ::core::option::Option<u64>,
14901}
14902#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14903pub struct MmPageAllocExtfragFtraceEvent {
14904    #[prost(int32, optional, tag = "1")]
14905    pub alloc_migratetype: ::core::option::Option<i32>,
14906    #[prost(int32, optional, tag = "2")]
14907    pub alloc_order: ::core::option::Option<i32>,
14908    #[prost(int32, optional, tag = "3")]
14909    pub fallback_migratetype: ::core::option::Option<i32>,
14910    #[prost(int32, optional, tag = "4")]
14911    pub fallback_order: ::core::option::Option<i32>,
14912    #[prost(uint64, optional, tag = "5")]
14913    pub page: ::core::option::Option<u64>,
14914    #[prost(int32, optional, tag = "6")]
14915    pub change_ownership: ::core::option::Option<i32>,
14916    #[prost(uint64, optional, tag = "7")]
14917    pub pfn: ::core::option::Option<u64>,
14918}
14919#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14920pub struct MmPageAllocZoneLockedFtraceEvent {
14921    #[prost(int32, optional, tag = "1")]
14922    pub migratetype: ::core::option::Option<i32>,
14923    #[prost(uint32, optional, tag = "2")]
14924    pub order: ::core::option::Option<u32>,
14925    #[prost(uint64, optional, tag = "3")]
14926    pub page: ::core::option::Option<u64>,
14927    #[prost(uint64, optional, tag = "4")]
14928    pub pfn: ::core::option::Option<u64>,
14929}
14930#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14931pub struct MmPageFreeFtraceEvent {
14932    #[prost(uint32, optional, tag = "1")]
14933    pub order: ::core::option::Option<u32>,
14934    #[prost(uint64, optional, tag = "2")]
14935    pub page: ::core::option::Option<u64>,
14936    #[prost(uint64, optional, tag = "3")]
14937    pub pfn: ::core::option::Option<u64>,
14938}
14939#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14940pub struct MmPageFreeBatchedFtraceEvent {
14941    #[prost(int32, optional, tag = "1")]
14942    pub cold: ::core::option::Option<i32>,
14943    #[prost(uint64, optional, tag = "2")]
14944    pub page: ::core::option::Option<u64>,
14945    #[prost(uint64, optional, tag = "3")]
14946    pub pfn: ::core::option::Option<u64>,
14947}
14948#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14949pub struct MmPagePcpuDrainFtraceEvent {
14950    #[prost(int32, optional, tag = "1")]
14951    pub migratetype: ::core::option::Option<i32>,
14952    #[prost(uint32, optional, tag = "2")]
14953    pub order: ::core::option::Option<u32>,
14954    #[prost(uint64, optional, tag = "3")]
14955    pub page: ::core::option::Option<u64>,
14956    #[prost(uint64, optional, tag = "4")]
14957    pub pfn: ::core::option::Option<u64>,
14958}
14959#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14960pub struct RssStatFtraceEvent {
14961    #[prost(int32, optional, tag = "1")]
14962    pub member: ::core::option::Option<i32>,
14963    #[prost(int64, optional, tag = "2")]
14964    pub size: ::core::option::Option<i64>,
14965    #[prost(uint32, optional, tag = "3")]
14966    pub curr: ::core::option::Option<u32>,
14967    #[prost(uint32, optional, tag = "4")]
14968    pub mm_id: ::core::option::Option<u32>,
14969}
14970#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14971pub struct IonHeapShrinkFtraceEvent {
14972    #[prost(string, optional, tag = "1")]
14973    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14974    #[prost(uint64, optional, tag = "2")]
14975    pub len: ::core::option::Option<u64>,
14976    #[prost(int64, optional, tag = "3")]
14977    pub total_allocated: ::core::option::Option<i64>,
14978}
14979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14980pub struct IonHeapGrowFtraceEvent {
14981    #[prost(string, optional, tag = "1")]
14982    pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
14983    #[prost(uint64, optional, tag = "2")]
14984    pub len: ::core::option::Option<u64>,
14985    #[prost(int64, optional, tag = "3")]
14986    pub total_allocated: ::core::option::Option<i64>,
14987}
14988#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14989pub struct IonBufferCreateFtraceEvent {
14990    #[prost(uint64, optional, tag = "1")]
14991    pub addr: ::core::option::Option<u64>,
14992    #[prost(uint64, optional, tag = "2")]
14993    pub len: ::core::option::Option<u64>,
14994}
14995#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14996pub struct IonBufferDestroyFtraceEvent {
14997    #[prost(uint64, optional, tag = "1")]
14998    pub addr: ::core::option::Option<u64>,
14999    #[prost(uint64, optional, tag = "2")]
15000    pub len: ::core::option::Option<u64>,
15001}
15002#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15003pub struct MmAllocContigMigrateRangeInfoFtraceEvent {
15004    #[prost(uint64, optional, tag = "1")]
15005    pub start: ::core::option::Option<u64>,
15006    #[prost(uint64, optional, tag = "2")]
15007    pub end: ::core::option::Option<u64>,
15008    #[prost(uint64, optional, tag = "3")]
15009    pub nr_migrated: ::core::option::Option<u64>,
15010    #[prost(uint64, optional, tag = "4")]
15011    pub nr_reclaimed: ::core::option::Option<u64>,
15012    #[prost(uint64, optional, tag = "5")]
15013    pub nr_mapped: ::core::option::Option<u64>,
15014    #[prost(int32, optional, tag = "6")]
15015    pub migratetype: ::core::option::Option<i32>,
15016}
15017#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15018pub struct DmabufRssStatFtraceEvent {
15019    #[prost(uint64, optional, tag = "1")]
15020    pub rss: ::core::option::Option<u64>,
15021    #[prost(int64, optional, tag = "2")]
15022    pub rss_delta: ::core::option::Option<i64>,
15023    #[prost(uint64, optional, tag = "3")]
15024    pub i_ino: ::core::option::Option<u64>,
15025}
15026#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15027pub struct KvmAccessFaultFtraceEvent {
15028    #[prost(uint64, optional, tag = "1")]
15029    pub ipa: ::core::option::Option<u64>,
15030}
15031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15032pub struct KvmAckIrqFtraceEvent {
15033    #[prost(uint32, optional, tag = "1")]
15034    pub irqchip: ::core::option::Option<u32>,
15035    #[prost(uint32, optional, tag = "2")]
15036    pub pin: ::core::option::Option<u32>,
15037}
15038#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15039pub struct KvmAgeHvaFtraceEvent {
15040    #[prost(uint64, optional, tag = "1")]
15041    pub end: ::core::option::Option<u64>,
15042    #[prost(uint64, optional, tag = "2")]
15043    pub start: ::core::option::Option<u64>,
15044}
15045#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15046pub struct KvmAgePageFtraceEvent {
15047    #[prost(uint64, optional, tag = "1")]
15048    pub gfn: ::core::option::Option<u64>,
15049    #[prost(uint64, optional, tag = "2")]
15050    pub hva: ::core::option::Option<u64>,
15051    #[prost(uint32, optional, tag = "3")]
15052    pub level: ::core::option::Option<u32>,
15053    #[prost(uint32, optional, tag = "4")]
15054    pub referenced: ::core::option::Option<u32>,
15055}
15056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15057pub struct KvmArmClearDebugFtraceEvent {
15058    #[prost(uint32, optional, tag = "1")]
15059    pub guest_debug: ::core::option::Option<u32>,
15060}
15061#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15062pub struct KvmArmSetDreg32FtraceEvent {
15063    #[prost(string, optional, tag = "1")]
15064    pub name: ::core::option::Option<::prost::alloc::string::String>,
15065    #[prost(uint32, optional, tag = "2")]
15066    pub value: ::core::option::Option<u32>,
15067}
15068#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15069pub struct KvmArmSetRegsetFtraceEvent {
15070    #[prost(int32, optional, tag = "1")]
15071    pub len: ::core::option::Option<i32>,
15072    #[prost(string, optional, tag = "2")]
15073    pub name: ::core::option::Option<::prost::alloc::string::String>,
15074}
15075#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15076pub struct KvmArmSetupDebugFtraceEvent {
15077    #[prost(uint32, optional, tag = "1")]
15078    pub guest_debug: ::core::option::Option<u32>,
15079    #[prost(uint64, optional, tag = "2")]
15080    pub vcpu: ::core::option::Option<u64>,
15081}
15082#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15083pub struct KvmEntryFtraceEvent {
15084    #[prost(uint64, optional, tag = "1")]
15085    pub vcpu_pc: ::core::option::Option<u64>,
15086}
15087#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15088pub struct KvmExitFtraceEvent {
15089    #[prost(uint32, optional, tag = "1")]
15090    pub esr_ec: ::core::option::Option<u32>,
15091    #[prost(int32, optional, tag = "2")]
15092    pub ret: ::core::option::Option<i32>,
15093    #[prost(uint64, optional, tag = "3")]
15094    pub vcpu_pc: ::core::option::Option<u64>,
15095}
15096#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15097pub struct KvmFpuFtraceEvent {
15098    #[prost(uint32, optional, tag = "1")]
15099    pub load: ::core::option::Option<u32>,
15100}
15101#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15102pub struct KvmGetTimerMapFtraceEvent {
15103    #[prost(int32, optional, tag = "1")]
15104    pub direct_ptimer: ::core::option::Option<i32>,
15105    #[prost(int32, optional, tag = "2")]
15106    pub direct_vtimer: ::core::option::Option<i32>,
15107    #[prost(int32, optional, tag = "3")]
15108    pub emul_ptimer: ::core::option::Option<i32>,
15109    #[prost(uint64, optional, tag = "4")]
15110    pub vcpu_id: ::core::option::Option<u64>,
15111}
15112#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15113pub struct KvmGuestFaultFtraceEvent {
15114    #[prost(uint64, optional, tag = "1")]
15115    pub hsr: ::core::option::Option<u64>,
15116    #[prost(uint64, optional, tag = "2")]
15117    pub hxfar: ::core::option::Option<u64>,
15118    #[prost(uint64, optional, tag = "3")]
15119    pub ipa: ::core::option::Option<u64>,
15120    #[prost(uint64, optional, tag = "4")]
15121    pub vcpu_pc: ::core::option::Option<u64>,
15122}
15123#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15124pub struct KvmHandleSysRegFtraceEvent {
15125    #[prost(uint64, optional, tag = "1")]
15126    pub hsr: ::core::option::Option<u64>,
15127}
15128#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15129pub struct KvmHvcArm64FtraceEvent {
15130    #[prost(uint64, optional, tag = "1")]
15131    pub imm: ::core::option::Option<u64>,
15132    #[prost(uint64, optional, tag = "2")]
15133    pub r0: ::core::option::Option<u64>,
15134    #[prost(uint64, optional, tag = "3")]
15135    pub vcpu_pc: ::core::option::Option<u64>,
15136}
15137#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15138pub struct KvmIrqLineFtraceEvent {
15139    #[prost(int32, optional, tag = "1")]
15140    pub irq_num: ::core::option::Option<i32>,
15141    #[prost(int32, optional, tag = "2")]
15142    pub level: ::core::option::Option<i32>,
15143    #[prost(uint32, optional, tag = "3")]
15144    pub r#type: ::core::option::Option<u32>,
15145    #[prost(int32, optional, tag = "4")]
15146    pub vcpu_idx: ::core::option::Option<i32>,
15147}
15148#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15149pub struct KvmMmioFtraceEvent {
15150    #[prost(uint64, optional, tag = "1")]
15151    pub gpa: ::core::option::Option<u64>,
15152    #[prost(uint32, optional, tag = "2")]
15153    pub len: ::core::option::Option<u32>,
15154    #[prost(uint32, optional, tag = "3")]
15155    pub r#type: ::core::option::Option<u32>,
15156    #[prost(uint64, optional, tag = "4")]
15157    pub val: ::core::option::Option<u64>,
15158}
15159#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15160pub struct KvmMmioEmulateFtraceEvent {
15161    #[prost(uint64, optional, tag = "1")]
15162    pub cpsr: ::core::option::Option<u64>,
15163    #[prost(uint64, optional, tag = "2")]
15164    pub instr: ::core::option::Option<u64>,
15165    #[prost(uint64, optional, tag = "3")]
15166    pub vcpu_pc: ::core::option::Option<u64>,
15167}
15168#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15169pub struct KvmSetGuestDebugFtraceEvent {
15170    #[prost(uint32, optional, tag = "1")]
15171    pub guest_debug: ::core::option::Option<u32>,
15172    #[prost(uint64, optional, tag = "2")]
15173    pub vcpu: ::core::option::Option<u64>,
15174}
15175#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15176pub struct KvmSetIrqFtraceEvent {
15177    #[prost(uint32, optional, tag = "1")]
15178    pub gsi: ::core::option::Option<u32>,
15179    #[prost(int32, optional, tag = "2")]
15180    pub irq_source_id: ::core::option::Option<i32>,
15181    #[prost(int32, optional, tag = "3")]
15182    pub level: ::core::option::Option<i32>,
15183}
15184#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15185pub struct KvmSetSpteHvaFtraceEvent {
15186    #[prost(uint64, optional, tag = "1")]
15187    pub hva: ::core::option::Option<u64>,
15188}
15189#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15190pub struct KvmSetWayFlushFtraceEvent {
15191    #[prost(uint32, optional, tag = "1")]
15192    pub cache: ::core::option::Option<u32>,
15193    #[prost(uint64, optional, tag = "2")]
15194    pub vcpu_pc: ::core::option::Option<u64>,
15195}
15196#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15197pub struct KvmSysAccessFtraceEvent {
15198    #[prost(uint32, optional, tag = "1")]
15199    pub c_rm: ::core::option::Option<u32>,
15200    #[prost(uint32, optional, tag = "2")]
15201    pub c_rn: ::core::option::Option<u32>,
15202    #[prost(uint32, optional, tag = "3")]
15203    pub op0: ::core::option::Option<u32>,
15204    #[prost(uint32, optional, tag = "4")]
15205    pub op1: ::core::option::Option<u32>,
15206    #[prost(uint32, optional, tag = "5")]
15207    pub op2: ::core::option::Option<u32>,
15208    #[prost(uint32, optional, tag = "6")]
15209    pub is_write: ::core::option::Option<u32>,
15210    #[prost(string, optional, tag = "7")]
15211    pub name: ::core::option::Option<::prost::alloc::string::String>,
15212    #[prost(uint64, optional, tag = "8")]
15213    pub vcpu_pc: ::core::option::Option<u64>,
15214}
15215#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15216pub struct KvmTestAgeHvaFtraceEvent {
15217    #[prost(uint64, optional, tag = "1")]
15218    pub hva: ::core::option::Option<u64>,
15219}
15220#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15221pub struct KvmTimerEmulateFtraceEvent {
15222    #[prost(uint32, optional, tag = "1")]
15223    pub should_fire: ::core::option::Option<u32>,
15224    #[prost(int32, optional, tag = "2")]
15225    pub timer_idx: ::core::option::Option<i32>,
15226}
15227#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15228pub struct KvmTimerHrtimerExpireFtraceEvent {
15229    #[prost(int32, optional, tag = "1")]
15230    pub timer_idx: ::core::option::Option<i32>,
15231}
15232#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15233pub struct KvmTimerRestoreStateFtraceEvent {
15234    #[prost(uint64, optional, tag = "1")]
15235    pub ctl: ::core::option::Option<u64>,
15236    #[prost(uint64, optional, tag = "2")]
15237    pub cval: ::core::option::Option<u64>,
15238    #[prost(int32, optional, tag = "3")]
15239    pub timer_idx: ::core::option::Option<i32>,
15240}
15241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15242pub struct KvmTimerSaveStateFtraceEvent {
15243    #[prost(uint64, optional, tag = "1")]
15244    pub ctl: ::core::option::Option<u64>,
15245    #[prost(uint64, optional, tag = "2")]
15246    pub cval: ::core::option::Option<u64>,
15247    #[prost(int32, optional, tag = "3")]
15248    pub timer_idx: ::core::option::Option<i32>,
15249}
15250#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15251pub struct KvmTimerUpdateIrqFtraceEvent {
15252    #[prost(uint32, optional, tag = "1")]
15253    pub irq: ::core::option::Option<u32>,
15254    #[prost(int32, optional, tag = "2")]
15255    pub level: ::core::option::Option<i32>,
15256    #[prost(uint64, optional, tag = "3")]
15257    pub vcpu_id: ::core::option::Option<u64>,
15258}
15259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15260pub struct KvmToggleCacheFtraceEvent {
15261    #[prost(uint32, optional, tag = "1")]
15262    pub now: ::core::option::Option<u32>,
15263    #[prost(uint64, optional, tag = "2")]
15264    pub vcpu_pc: ::core::option::Option<u64>,
15265    #[prost(uint32, optional, tag = "3")]
15266    pub was: ::core::option::Option<u32>,
15267}
15268#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15269pub struct KvmUnmapHvaRangeFtraceEvent {
15270    #[prost(uint64, optional, tag = "1")]
15271    pub end: ::core::option::Option<u64>,
15272    #[prost(uint64, optional, tag = "2")]
15273    pub start: ::core::option::Option<u64>,
15274}
15275#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15276pub struct KvmUserspaceExitFtraceEvent {
15277    #[prost(uint32, optional, tag = "1")]
15278    pub reason: ::core::option::Option<u32>,
15279}
15280#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15281pub struct KvmVcpuWakeupFtraceEvent {
15282    #[prost(uint64, optional, tag = "1")]
15283    pub ns: ::core::option::Option<u64>,
15284    #[prost(uint32, optional, tag = "2")]
15285    pub valid: ::core::option::Option<u32>,
15286    #[prost(uint32, optional, tag = "3")]
15287    pub waited: ::core::option::Option<u32>,
15288}
15289#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15290pub struct KvmWfxArm64FtraceEvent {
15291    #[prost(uint32, optional, tag = "1")]
15292    pub is_wfe: ::core::option::Option<u32>,
15293    #[prost(uint64, optional, tag = "2")]
15294    pub vcpu_pc: ::core::option::Option<u64>,
15295}
15296#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15297pub struct TrapRegFtraceEvent {
15298    #[prost(string, optional, tag = "1")]
15299    pub r#fn: ::core::option::Option<::prost::alloc::string::String>,
15300    #[prost(uint32, optional, tag = "2")]
15301    pub is_write: ::core::option::Option<u32>,
15302    #[prost(int32, optional, tag = "3")]
15303    pub reg: ::core::option::Option<i32>,
15304    #[prost(uint64, optional, tag = "4")]
15305    pub write_value: ::core::option::Option<u64>,
15306}
15307#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15308pub struct VgicUpdateIrqPendingFtraceEvent {
15309    #[prost(uint32, optional, tag = "1")]
15310    pub irq: ::core::option::Option<u32>,
15311    #[prost(uint32, optional, tag = "2")]
15312    pub level: ::core::option::Option<u32>,
15313    #[prost(uint64, optional, tag = "3")]
15314    pub vcpu_id: ::core::option::Option<u64>,
15315}
15316#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15317pub struct LowmemoryKillFtraceEvent {
15318    #[prost(string, optional, tag = "1")]
15319    pub comm: ::core::option::Option<::prost::alloc::string::String>,
15320    #[prost(int32, optional, tag = "2")]
15321    pub pid: ::core::option::Option<i32>,
15322    #[prost(int64, optional, tag = "3")]
15323    pub pagecache_size: ::core::option::Option<i64>,
15324    #[prost(int64, optional, tag = "4")]
15325    pub pagecache_limit: ::core::option::Option<i64>,
15326    #[prost(int64, optional, tag = "5")]
15327    pub free: ::core::option::Option<i64>,
15328}
15329#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15330pub struct LwisTracingMarkWriteFtraceEvent {
15331    #[prost(string, optional, tag = "1")]
15332    pub lwis_name: ::core::option::Option<::prost::alloc::string::String>,
15333    #[prost(uint32, optional, tag = "2")]
15334    pub r#type: ::core::option::Option<u32>,
15335    #[prost(int32, optional, tag = "3")]
15336    pub pid: ::core::option::Option<i32>,
15337    #[prost(string, optional, tag = "4")]
15338    pub func_name: ::core::option::Option<::prost::alloc::string::String>,
15339    #[prost(int64, optional, tag = "5")]
15340    pub value: ::core::option::Option<i64>,
15341}
15342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15343pub struct MaliTracingMarkWriteFtraceEvent {
15344    #[prost(string, optional, tag = "1")]
15345    pub name: ::core::option::Option<::prost::alloc::string::String>,
15346    #[prost(int32, optional, tag = "2")]
15347    pub pid: ::core::option::Option<i32>,
15348    #[prost(uint32, optional, tag = "3")]
15349    pub r#type: ::core::option::Option<u32>,
15350    #[prost(int32, optional, tag = "4")]
15351    pub value: ::core::option::Option<i32>,
15352}
15353#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15354pub struct MaliMaliKcpucqssetFtraceEvent {
15355    #[prost(uint32, optional, tag = "1")]
15356    pub id: ::core::option::Option<u32>,
15357    #[prost(uint64, optional, tag = "2")]
15358    pub info_val1: ::core::option::Option<u64>,
15359    #[prost(uint64, optional, tag = "3")]
15360    pub info_val2: ::core::option::Option<u64>,
15361    #[prost(uint32, optional, tag = "4")]
15362    pub kctx_id: ::core::option::Option<u32>,
15363    #[prost(int32, optional, tag = "5")]
15364    pub kctx_tgid: ::core::option::Option<i32>,
15365}
15366#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15367pub struct MaliMaliKcpucqswaitstartFtraceEvent {
15368    #[prost(uint32, optional, tag = "1")]
15369    pub id: ::core::option::Option<u32>,
15370    #[prost(uint64, optional, tag = "2")]
15371    pub info_val1: ::core::option::Option<u64>,
15372    #[prost(uint64, optional, tag = "3")]
15373    pub info_val2: ::core::option::Option<u64>,
15374    #[prost(uint32, optional, tag = "4")]
15375    pub kctx_id: ::core::option::Option<u32>,
15376    #[prost(int32, optional, tag = "5")]
15377    pub kctx_tgid: ::core::option::Option<i32>,
15378}
15379#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15380pub struct MaliMaliKcpucqswaitendFtraceEvent {
15381    #[prost(uint32, optional, tag = "1")]
15382    pub id: ::core::option::Option<u32>,
15383    #[prost(uint64, optional, tag = "2")]
15384    pub info_val1: ::core::option::Option<u64>,
15385    #[prost(uint64, optional, tag = "3")]
15386    pub info_val2: ::core::option::Option<u64>,
15387    #[prost(uint32, optional, tag = "4")]
15388    pub kctx_id: ::core::option::Option<u32>,
15389    #[prost(int32, optional, tag = "5")]
15390    pub kctx_tgid: ::core::option::Option<i32>,
15391}
15392#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15393pub struct MaliMaliKcpufencesignalFtraceEvent {
15394    #[prost(uint64, optional, tag = "1")]
15395    pub info_val1: ::core::option::Option<u64>,
15396    #[prost(uint64, optional, tag = "2")]
15397    pub info_val2: ::core::option::Option<u64>,
15398    #[prost(int32, optional, tag = "3")]
15399    pub kctx_tgid: ::core::option::Option<i32>,
15400    #[prost(uint32, optional, tag = "4")]
15401    pub kctx_id: ::core::option::Option<u32>,
15402    #[prost(uint32, optional, tag = "5")]
15403    pub id: ::core::option::Option<u32>,
15404}
15405#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15406pub struct MaliMaliKcpufencewaitstartFtraceEvent {
15407    #[prost(uint64, optional, tag = "1")]
15408    pub info_val1: ::core::option::Option<u64>,
15409    #[prost(uint64, optional, tag = "2")]
15410    pub info_val2: ::core::option::Option<u64>,
15411    #[prost(int32, optional, tag = "3")]
15412    pub kctx_tgid: ::core::option::Option<i32>,
15413    #[prost(uint32, optional, tag = "4")]
15414    pub kctx_id: ::core::option::Option<u32>,
15415    #[prost(uint32, optional, tag = "5")]
15416    pub id: ::core::option::Option<u32>,
15417}
15418#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15419pub struct MaliMaliKcpufencewaitendFtraceEvent {
15420    #[prost(uint64, optional, tag = "1")]
15421    pub info_val1: ::core::option::Option<u64>,
15422    #[prost(uint64, optional, tag = "2")]
15423    pub info_val2: ::core::option::Option<u64>,
15424    #[prost(int32, optional, tag = "3")]
15425    pub kctx_tgid: ::core::option::Option<i32>,
15426    #[prost(uint32, optional, tag = "4")]
15427    pub kctx_id: ::core::option::Option<u32>,
15428    #[prost(uint32, optional, tag = "5")]
15429    pub id: ::core::option::Option<u32>,
15430}
15431#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15432pub struct MaliMaliCsfinterruptstartFtraceEvent {
15433    #[prost(int32, optional, tag = "1")]
15434    pub kctx_tgid: ::core::option::Option<i32>,
15435    #[prost(uint32, optional, tag = "2")]
15436    pub kctx_id: ::core::option::Option<u32>,
15437    #[prost(uint64, optional, tag = "3")]
15438    pub info_val: ::core::option::Option<u64>,
15439}
15440#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15441pub struct MaliMaliCsfinterruptendFtraceEvent {
15442    #[prost(int32, optional, tag = "1")]
15443    pub kctx_tgid: ::core::option::Option<i32>,
15444    #[prost(uint32, optional, tag = "2")]
15445    pub kctx_id: ::core::option::Option<u32>,
15446    #[prost(uint64, optional, tag = "3")]
15447    pub info_val: ::core::option::Option<u64>,
15448}
15449#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15450pub struct MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent {
15451    #[prost(int32, optional, tag = "1")]
15452    pub kctx_tgid: ::core::option::Option<i32>,
15453    #[prost(uint32, optional, tag = "2")]
15454    pub kctx_id: ::core::option::Option<u32>,
15455    #[prost(uint64, optional, tag = "3")]
15456    pub info_val: ::core::option::Option<u64>,
15457}
15458#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15459pub struct MaliMaliPmmcuhctlcoresnotifypendFtraceEvent {
15460    #[prost(int32, optional, tag = "1")]
15461    pub kctx_tgid: ::core::option::Option<i32>,
15462    #[prost(uint32, optional, tag = "2")]
15463    pub kctx_id: ::core::option::Option<u32>,
15464    #[prost(uint64, optional, tag = "3")]
15465    pub info_val: ::core::option::Option<u64>,
15466}
15467#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15468pub struct MaliMaliPmmcuhctlcoreinactivependFtraceEvent {
15469    #[prost(int32, optional, tag = "1")]
15470    pub kctx_tgid: ::core::option::Option<i32>,
15471    #[prost(uint32, optional, tag = "2")]
15472    pub kctx_id: ::core::option::Option<u32>,
15473    #[prost(uint64, optional, tag = "3")]
15474    pub info_val: ::core::option::Option<u64>,
15475}
15476#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15477pub struct MaliMaliPmmcuhctlmcuonrecheckFtraceEvent {
15478    #[prost(int32, optional, tag = "1")]
15479    pub kctx_tgid: ::core::option::Option<i32>,
15480    #[prost(uint32, optional, tag = "2")]
15481    pub kctx_id: ::core::option::Option<u32>,
15482    #[prost(uint64, optional, tag = "3")]
15483    pub info_val: ::core::option::Option<u64>,
15484}
15485#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15486pub struct MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent {
15487    #[prost(int32, optional, tag = "1")]
15488    pub kctx_tgid: ::core::option::Option<i32>,
15489    #[prost(uint32, optional, tag = "2")]
15490    pub kctx_id: ::core::option::Option<u32>,
15491    #[prost(uint64, optional, tag = "3")]
15492    pub info_val: ::core::option::Option<u64>,
15493}
15494#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15495pub struct MaliMaliPmmcuhctlshaderspendoffFtraceEvent {
15496    #[prost(int32, optional, tag = "1")]
15497    pub kctx_tgid: ::core::option::Option<i32>,
15498    #[prost(uint32, optional, tag = "2")]
15499    pub kctx_id: ::core::option::Option<u32>,
15500    #[prost(uint64, optional, tag = "3")]
15501    pub info_val: ::core::option::Option<u64>,
15502}
15503#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15504pub struct MaliMaliPmmcuhctlshaderspendonFtraceEvent {
15505    #[prost(int32, optional, tag = "1")]
15506    pub kctx_tgid: ::core::option::Option<i32>,
15507    #[prost(uint32, optional, tag = "2")]
15508    pub kctx_id: ::core::option::Option<u32>,
15509    #[prost(uint64, optional, tag = "3")]
15510    pub info_val: ::core::option::Option<u64>,
15511}
15512#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15513pub struct MaliMaliPmmcuhctlshadersreadyoffFtraceEvent {
15514    #[prost(int32, optional, tag = "1")]
15515    pub kctx_tgid: ::core::option::Option<i32>,
15516    #[prost(uint32, optional, tag = "2")]
15517    pub kctx_id: ::core::option::Option<u32>,
15518    #[prost(uint64, optional, tag = "3")]
15519    pub info_val: ::core::option::Option<u64>,
15520}
15521#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15522pub struct MaliMaliPmmcuinsleepFtraceEvent {
15523    #[prost(int32, optional, tag = "1")]
15524    pub kctx_tgid: ::core::option::Option<i32>,
15525    #[prost(uint32, optional, tag = "2")]
15526    pub kctx_id: ::core::option::Option<u32>,
15527    #[prost(uint64, optional, tag = "3")]
15528    pub info_val: ::core::option::Option<u64>,
15529}
15530#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15531pub struct MaliMaliPmmcuoffFtraceEvent {
15532    #[prost(int32, optional, tag = "1")]
15533    pub kctx_tgid: ::core::option::Option<i32>,
15534    #[prost(uint32, optional, tag = "2")]
15535    pub kctx_id: ::core::option::Option<u32>,
15536    #[prost(uint64, optional, tag = "3")]
15537    pub info_val: ::core::option::Option<u64>,
15538}
15539#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15540pub struct MaliMaliPmmcuonFtraceEvent {
15541    #[prost(int32, optional, tag = "1")]
15542    pub kctx_tgid: ::core::option::Option<i32>,
15543    #[prost(uint32, optional, tag = "2")]
15544    pub kctx_id: ::core::option::Option<u32>,
15545    #[prost(uint64, optional, tag = "3")]
15546    pub info_val: ::core::option::Option<u64>,
15547}
15548#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15549pub struct MaliMaliPmmcuoncoreattrupdatependFtraceEvent {
15550    #[prost(int32, optional, tag = "1")]
15551    pub kctx_tgid: ::core::option::Option<i32>,
15552    #[prost(uint32, optional, tag = "2")]
15553    pub kctx_id: ::core::option::Option<u32>,
15554    #[prost(uint64, optional, tag = "3")]
15555    pub info_val: ::core::option::Option<u64>,
15556}
15557#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15558pub struct MaliMaliPmmcuonglbreinitpendFtraceEvent {
15559    #[prost(int32, optional, tag = "1")]
15560    pub kctx_tgid: ::core::option::Option<i32>,
15561    #[prost(uint32, optional, tag = "2")]
15562    pub kctx_id: ::core::option::Option<u32>,
15563    #[prost(uint64, optional, tag = "3")]
15564    pub info_val: ::core::option::Option<u64>,
15565}
15566#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15567pub struct MaliMaliPmmcuonhaltFtraceEvent {
15568    #[prost(int32, optional, tag = "1")]
15569    pub kctx_tgid: ::core::option::Option<i32>,
15570    #[prost(uint32, optional, tag = "2")]
15571    pub kctx_id: ::core::option::Option<u32>,
15572    #[prost(uint64, optional, tag = "3")]
15573    pub info_val: ::core::option::Option<u64>,
15574}
15575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15576pub struct MaliMaliPmmcuonhwcntdisableFtraceEvent {
15577    #[prost(int32, optional, tag = "1")]
15578    pub kctx_tgid: ::core::option::Option<i32>,
15579    #[prost(uint32, optional, tag = "2")]
15580    pub kctx_id: ::core::option::Option<u32>,
15581    #[prost(uint64, optional, tag = "3")]
15582    pub info_val: ::core::option::Option<u64>,
15583}
15584#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15585pub struct MaliMaliPmmcuonhwcntenableFtraceEvent {
15586    #[prost(int32, optional, tag = "1")]
15587    pub kctx_tgid: ::core::option::Option<i32>,
15588    #[prost(uint32, optional, tag = "2")]
15589    pub kctx_id: ::core::option::Option<u32>,
15590    #[prost(uint64, optional, tag = "3")]
15591    pub info_val: ::core::option::Option<u64>,
15592}
15593#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15594pub struct MaliMaliPmmcuonpendhaltFtraceEvent {
15595    #[prost(int32, optional, tag = "1")]
15596    pub kctx_tgid: ::core::option::Option<i32>,
15597    #[prost(uint32, optional, tag = "2")]
15598    pub kctx_id: ::core::option::Option<u32>,
15599    #[prost(uint64, optional, tag = "3")]
15600    pub info_val: ::core::option::Option<u64>,
15601}
15602#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15603pub struct MaliMaliPmmcuonpendsleepFtraceEvent {
15604    #[prost(int32, optional, tag = "1")]
15605    pub kctx_tgid: ::core::option::Option<i32>,
15606    #[prost(uint32, optional, tag = "2")]
15607    pub kctx_id: ::core::option::Option<u32>,
15608    #[prost(uint64, optional, tag = "3")]
15609    pub info_val: ::core::option::Option<u64>,
15610}
15611#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15612pub struct MaliMaliPmmcuonsleepinitiateFtraceEvent {
15613    #[prost(int32, optional, tag = "1")]
15614    pub kctx_tgid: ::core::option::Option<i32>,
15615    #[prost(uint32, optional, tag = "2")]
15616    pub kctx_id: ::core::option::Option<u32>,
15617    #[prost(uint64, optional, tag = "3")]
15618    pub info_val: ::core::option::Option<u64>,
15619}
15620#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15621pub struct MaliMaliPmmcupendoffFtraceEvent {
15622    #[prost(int32, optional, tag = "1")]
15623    pub kctx_tgid: ::core::option::Option<i32>,
15624    #[prost(uint32, optional, tag = "2")]
15625    pub kctx_id: ::core::option::Option<u32>,
15626    #[prost(uint64, optional, tag = "3")]
15627    pub info_val: ::core::option::Option<u64>,
15628}
15629#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15630pub struct MaliMaliPmmcupendonreloadFtraceEvent {
15631    #[prost(int32, optional, tag = "1")]
15632    pub kctx_tgid: ::core::option::Option<i32>,
15633    #[prost(uint32, optional, tag = "2")]
15634    pub kctx_id: ::core::option::Option<u32>,
15635    #[prost(uint64, optional, tag = "3")]
15636    pub info_val: ::core::option::Option<u64>,
15637}
15638#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15639pub struct MaliMaliPmmcupowerdownFtraceEvent {
15640    #[prost(int32, optional, tag = "1")]
15641    pub kctx_tgid: ::core::option::Option<i32>,
15642    #[prost(uint32, optional, tag = "2")]
15643    pub kctx_id: ::core::option::Option<u32>,
15644    #[prost(uint64, optional, tag = "3")]
15645    pub info_val: ::core::option::Option<u64>,
15646}
15647#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15648pub struct MaliMaliPmmcuresetwaitFtraceEvent {
15649    #[prost(int32, optional, tag = "1")]
15650    pub kctx_tgid: ::core::option::Option<i32>,
15651    #[prost(uint32, optional, tag = "2")]
15652    pub kctx_id: ::core::option::Option<u32>,
15653    #[prost(uint64, optional, tag = "3")]
15654    pub info_val: ::core::option::Option<u64>,
15655}
15656#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15657pub struct MaliGpuPowerStateFtraceEvent {
15658    #[prost(uint64, optional, tag = "1")]
15659    pub change_ns: ::core::option::Option<u64>,
15660    #[prost(int32, optional, tag = "2")]
15661    pub from_state: ::core::option::Option<i32>,
15662    #[prost(int32, optional, tag = "3")]
15663    pub to_state: ::core::option::Option<i32>,
15664}
15665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15666pub struct MdpCmdKickoffFtraceEvent {
15667    #[prost(uint32, optional, tag = "1")]
15668    pub ctl_num: ::core::option::Option<u32>,
15669    #[prost(int32, optional, tag = "2")]
15670    pub kickoff_cnt: ::core::option::Option<i32>,
15671}
15672#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15673pub struct MdpCommitFtraceEvent {
15674    #[prost(uint32, optional, tag = "1")]
15675    pub num: ::core::option::Option<u32>,
15676    #[prost(uint32, optional, tag = "2")]
15677    pub play_cnt: ::core::option::Option<u32>,
15678    #[prost(uint32, optional, tag = "3")]
15679    pub clk_rate: ::core::option::Option<u32>,
15680    #[prost(uint64, optional, tag = "4")]
15681    pub bandwidth: ::core::option::Option<u64>,
15682}
15683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15684pub struct MdpPerfSetOtFtraceEvent {
15685    #[prost(uint32, optional, tag = "1")]
15686    pub pnum: ::core::option::Option<u32>,
15687    #[prost(uint32, optional, tag = "2")]
15688    pub xin_id: ::core::option::Option<u32>,
15689    #[prost(uint32, optional, tag = "3")]
15690    pub rd_lim: ::core::option::Option<u32>,
15691    #[prost(uint32, optional, tag = "4")]
15692    pub is_vbif_rt: ::core::option::Option<u32>,
15693}
15694#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15695pub struct MdpSsppChangeFtraceEvent {
15696    #[prost(uint32, optional, tag = "1")]
15697    pub num: ::core::option::Option<u32>,
15698    #[prost(uint32, optional, tag = "2")]
15699    pub play_cnt: ::core::option::Option<u32>,
15700    #[prost(uint32, optional, tag = "3")]
15701    pub mixer: ::core::option::Option<u32>,
15702    #[prost(uint32, optional, tag = "4")]
15703    pub stage: ::core::option::Option<u32>,
15704    #[prost(uint32, optional, tag = "5")]
15705    pub flags: ::core::option::Option<u32>,
15706    #[prost(uint32, optional, tag = "6")]
15707    pub format: ::core::option::Option<u32>,
15708    #[prost(uint32, optional, tag = "7")]
15709    pub img_w: ::core::option::Option<u32>,
15710    #[prost(uint32, optional, tag = "8")]
15711    pub img_h: ::core::option::Option<u32>,
15712    #[prost(uint32, optional, tag = "9")]
15713    pub src_x: ::core::option::Option<u32>,
15714    #[prost(uint32, optional, tag = "10")]
15715    pub src_y: ::core::option::Option<u32>,
15716    #[prost(uint32, optional, tag = "11")]
15717    pub src_w: ::core::option::Option<u32>,
15718    #[prost(uint32, optional, tag = "12")]
15719    pub src_h: ::core::option::Option<u32>,
15720    #[prost(uint32, optional, tag = "13")]
15721    pub dst_x: ::core::option::Option<u32>,
15722    #[prost(uint32, optional, tag = "14")]
15723    pub dst_y: ::core::option::Option<u32>,
15724    #[prost(uint32, optional, tag = "15")]
15725    pub dst_w: ::core::option::Option<u32>,
15726    #[prost(uint32, optional, tag = "16")]
15727    pub dst_h: ::core::option::Option<u32>,
15728}
15729#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15730pub struct TracingMarkWriteFtraceEvent {
15731    #[prost(int32, optional, tag = "1")]
15732    pub pid: ::core::option::Option<i32>,
15733    #[prost(string, optional, tag = "2")]
15734    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
15735    #[prost(uint32, optional, tag = "3")]
15736    pub trace_begin: ::core::option::Option<u32>,
15737}
15738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15739pub struct MdpCmdPingpongDoneFtraceEvent {
15740    #[prost(uint32, optional, tag = "1")]
15741    pub ctl_num: ::core::option::Option<u32>,
15742    #[prost(uint32, optional, tag = "2")]
15743    pub intf_num: ::core::option::Option<u32>,
15744    #[prost(uint32, optional, tag = "3")]
15745    pub pp_num: ::core::option::Option<u32>,
15746    #[prost(int32, optional, tag = "4")]
15747    pub koff_cnt: ::core::option::Option<i32>,
15748}
15749#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15750pub struct MdpCompareBwFtraceEvent {
15751    #[prost(uint64, optional, tag = "1")]
15752    pub new_ab: ::core::option::Option<u64>,
15753    #[prost(uint64, optional, tag = "2")]
15754    pub new_ib: ::core::option::Option<u64>,
15755    #[prost(uint64, optional, tag = "3")]
15756    pub new_wb: ::core::option::Option<u64>,
15757    #[prost(uint64, optional, tag = "4")]
15758    pub old_ab: ::core::option::Option<u64>,
15759    #[prost(uint64, optional, tag = "5")]
15760    pub old_ib: ::core::option::Option<u64>,
15761    #[prost(uint64, optional, tag = "6")]
15762    pub old_wb: ::core::option::Option<u64>,
15763    #[prost(uint32, optional, tag = "7")]
15764    pub params_changed: ::core::option::Option<u32>,
15765    #[prost(uint32, optional, tag = "8")]
15766    pub update_bw: ::core::option::Option<u32>,
15767}
15768#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15769pub struct MdpPerfSetPanicLutsFtraceEvent {
15770    #[prost(uint32, optional, tag = "1")]
15771    pub pnum: ::core::option::Option<u32>,
15772    #[prost(uint32, optional, tag = "2")]
15773    pub fmt: ::core::option::Option<u32>,
15774    #[prost(uint32, optional, tag = "3")]
15775    pub mode: ::core::option::Option<u32>,
15776    #[prost(uint32, optional, tag = "4")]
15777    pub panic_lut: ::core::option::Option<u32>,
15778    #[prost(uint32, optional, tag = "5")]
15779    pub robust_lut: ::core::option::Option<u32>,
15780}
15781#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15782pub struct MdpSsppSetFtraceEvent {
15783    #[prost(uint32, optional, tag = "1")]
15784    pub num: ::core::option::Option<u32>,
15785    #[prost(uint32, optional, tag = "2")]
15786    pub play_cnt: ::core::option::Option<u32>,
15787    #[prost(uint32, optional, tag = "3")]
15788    pub mixer: ::core::option::Option<u32>,
15789    #[prost(uint32, optional, tag = "4")]
15790    pub stage: ::core::option::Option<u32>,
15791    #[prost(uint32, optional, tag = "5")]
15792    pub flags: ::core::option::Option<u32>,
15793    #[prost(uint32, optional, tag = "6")]
15794    pub format: ::core::option::Option<u32>,
15795    #[prost(uint32, optional, tag = "7")]
15796    pub img_w: ::core::option::Option<u32>,
15797    #[prost(uint32, optional, tag = "8")]
15798    pub img_h: ::core::option::Option<u32>,
15799    #[prost(uint32, optional, tag = "9")]
15800    pub src_x: ::core::option::Option<u32>,
15801    #[prost(uint32, optional, tag = "10")]
15802    pub src_y: ::core::option::Option<u32>,
15803    #[prost(uint32, optional, tag = "11")]
15804    pub src_w: ::core::option::Option<u32>,
15805    #[prost(uint32, optional, tag = "12")]
15806    pub src_h: ::core::option::Option<u32>,
15807    #[prost(uint32, optional, tag = "13")]
15808    pub dst_x: ::core::option::Option<u32>,
15809    #[prost(uint32, optional, tag = "14")]
15810    pub dst_y: ::core::option::Option<u32>,
15811    #[prost(uint32, optional, tag = "15")]
15812    pub dst_w: ::core::option::Option<u32>,
15813    #[prost(uint32, optional, tag = "16")]
15814    pub dst_h: ::core::option::Option<u32>,
15815}
15816#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15817pub struct MdpCmdReadptrDoneFtraceEvent {
15818    #[prost(uint32, optional, tag = "1")]
15819    pub ctl_num: ::core::option::Option<u32>,
15820    #[prost(int32, optional, tag = "2")]
15821    pub koff_cnt: ::core::option::Option<i32>,
15822}
15823#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15824pub struct MdpMisrCrcFtraceEvent {
15825    #[prost(uint32, optional, tag = "1")]
15826    pub block_id: ::core::option::Option<u32>,
15827    #[prost(uint32, optional, tag = "2")]
15828    pub vsync_cnt: ::core::option::Option<u32>,
15829    #[prost(uint32, optional, tag = "3")]
15830    pub crc: ::core::option::Option<u32>,
15831}
15832#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15833pub struct MdpPerfSetQosLutsFtraceEvent {
15834    #[prost(uint32, optional, tag = "1")]
15835    pub pnum: ::core::option::Option<u32>,
15836    #[prost(uint32, optional, tag = "2")]
15837    pub fmt: ::core::option::Option<u32>,
15838    #[prost(uint32, optional, tag = "3")]
15839    pub intf: ::core::option::Option<u32>,
15840    #[prost(uint32, optional, tag = "4")]
15841    pub rot: ::core::option::Option<u32>,
15842    #[prost(uint32, optional, tag = "5")]
15843    pub fl: ::core::option::Option<u32>,
15844    #[prost(uint32, optional, tag = "6")]
15845    pub lut: ::core::option::Option<u32>,
15846    #[prost(uint32, optional, tag = "7")]
15847    pub linear: ::core::option::Option<u32>,
15848}
15849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15850pub struct MdpTraceCounterFtraceEvent {
15851    #[prost(int32, optional, tag = "1")]
15852    pub pid: ::core::option::Option<i32>,
15853    #[prost(string, optional, tag = "2")]
15854    pub counter_name: ::core::option::Option<::prost::alloc::string::String>,
15855    #[prost(int32, optional, tag = "3")]
15856    pub value: ::core::option::Option<i32>,
15857}
15858#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15859pub struct MdpCmdReleaseBwFtraceEvent {
15860    #[prost(uint32, optional, tag = "1")]
15861    pub ctl_num: ::core::option::Option<u32>,
15862}
15863#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15864pub struct MdpMixerUpdateFtraceEvent {
15865    #[prost(uint32, optional, tag = "1")]
15866    pub mixer_num: ::core::option::Option<u32>,
15867}
15868#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15869pub struct MdpPerfSetWmLevelsFtraceEvent {
15870    #[prost(uint32, optional, tag = "1")]
15871    pub pnum: ::core::option::Option<u32>,
15872    #[prost(uint32, optional, tag = "2")]
15873    pub use_space: ::core::option::Option<u32>,
15874    #[prost(uint32, optional, tag = "3")]
15875    pub priority_bytes: ::core::option::Option<u32>,
15876    #[prost(uint32, optional, tag = "4")]
15877    pub wm0: ::core::option::Option<u32>,
15878    #[prost(uint32, optional, tag = "5")]
15879    pub wm1: ::core::option::Option<u32>,
15880    #[prost(uint32, optional, tag = "6")]
15881    pub wm2: ::core::option::Option<u32>,
15882    #[prost(uint32, optional, tag = "7")]
15883    pub mb_cnt: ::core::option::Option<u32>,
15884    #[prost(uint32, optional, tag = "8")]
15885    pub mb_size: ::core::option::Option<u32>,
15886}
15887#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15888pub struct MdpVideoUnderrunDoneFtraceEvent {
15889    #[prost(uint32, optional, tag = "1")]
15890    pub ctl_num: ::core::option::Option<u32>,
15891    #[prost(uint32, optional, tag = "2")]
15892    pub underrun_cnt: ::core::option::Option<u32>,
15893}
15894#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15895pub struct MdpCmdWaitPingpongFtraceEvent {
15896    #[prost(uint32, optional, tag = "1")]
15897    pub ctl_num: ::core::option::Option<u32>,
15898    #[prost(int32, optional, tag = "2")]
15899    pub kickoff_cnt: ::core::option::Option<i32>,
15900}
15901#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15902pub struct MdpPerfPrefillCalcFtraceEvent {
15903    #[prost(uint32, optional, tag = "1")]
15904    pub pnum: ::core::option::Option<u32>,
15905    #[prost(uint32, optional, tag = "2")]
15906    pub latency_buf: ::core::option::Option<u32>,
15907    #[prost(uint32, optional, tag = "3")]
15908    pub ot: ::core::option::Option<u32>,
15909    #[prost(uint32, optional, tag = "4")]
15910    pub y_buf: ::core::option::Option<u32>,
15911    #[prost(uint32, optional, tag = "5")]
15912    pub y_scaler: ::core::option::Option<u32>,
15913    #[prost(uint32, optional, tag = "6")]
15914    pub pp_lines: ::core::option::Option<u32>,
15915    #[prost(uint32, optional, tag = "7")]
15916    pub pp_bytes: ::core::option::Option<u32>,
15917    #[prost(uint32, optional, tag = "8")]
15918    pub post_sc: ::core::option::Option<u32>,
15919    #[prost(uint32, optional, tag = "9")]
15920    pub fbc_bytes: ::core::option::Option<u32>,
15921    #[prost(uint32, optional, tag = "10")]
15922    pub prefill_bytes: ::core::option::Option<u32>,
15923}
15924#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15925pub struct MdpPerfUpdateBusFtraceEvent {
15926    #[prost(int32, optional, tag = "1")]
15927    pub client: ::core::option::Option<i32>,
15928    #[prost(uint64, optional, tag = "2")]
15929    pub ab_quota: ::core::option::Option<u64>,
15930    #[prost(uint64, optional, tag = "3")]
15931    pub ib_quota: ::core::option::Option<u64>,
15932}
15933#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15934pub struct RotatorBwAoAsContextFtraceEvent {
15935    #[prost(uint32, optional, tag = "1")]
15936    pub state: ::core::option::Option<u32>,
15937}
15938#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15939pub struct MmEventRecordFtraceEvent {
15940    #[prost(uint32, optional, tag = "1")]
15941    pub avg_lat: ::core::option::Option<u32>,
15942    #[prost(uint32, optional, tag = "2")]
15943    pub count: ::core::option::Option<u32>,
15944    #[prost(uint32, optional, tag = "3")]
15945    pub max_lat: ::core::option::Option<u32>,
15946    #[prost(uint32, optional, tag = "4")]
15947    pub r#type: ::core::option::Option<u32>,
15948}
15949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15950pub struct NetifReceiveSkbFtraceEvent {
15951    #[prost(uint32, optional, tag = "1")]
15952    pub len: ::core::option::Option<u32>,
15953    #[prost(string, optional, tag = "2")]
15954    pub name: ::core::option::Option<::prost::alloc::string::String>,
15955    #[prost(uint64, optional, tag = "3")]
15956    pub skbaddr: ::core::option::Option<u64>,
15957}
15958#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15959pub struct NetDevXmitFtraceEvent {
15960    #[prost(uint32, optional, tag = "1")]
15961    pub len: ::core::option::Option<u32>,
15962    #[prost(string, optional, tag = "2")]
15963    pub name: ::core::option::Option<::prost::alloc::string::String>,
15964    #[prost(int32, optional, tag = "3")]
15965    pub rc: ::core::option::Option<i32>,
15966    #[prost(uint64, optional, tag = "4")]
15967    pub skbaddr: ::core::option::Option<u64>,
15968}
15969#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15970pub struct NapiGroReceiveEntryFtraceEvent {
15971    #[prost(uint32, optional, tag = "1")]
15972    pub data_len: ::core::option::Option<u32>,
15973    #[prost(uint32, optional, tag = "2")]
15974    pub gso_size: ::core::option::Option<u32>,
15975    #[prost(uint32, optional, tag = "3")]
15976    pub gso_type: ::core::option::Option<u32>,
15977    #[prost(uint32, optional, tag = "4")]
15978    pub hash: ::core::option::Option<u32>,
15979    #[prost(uint32, optional, tag = "5")]
15980    pub ip_summed: ::core::option::Option<u32>,
15981    #[prost(uint32, optional, tag = "6")]
15982    pub l4_hash: ::core::option::Option<u32>,
15983    #[prost(uint32, optional, tag = "7")]
15984    pub len: ::core::option::Option<u32>,
15985    #[prost(int32, optional, tag = "8")]
15986    pub mac_header: ::core::option::Option<i32>,
15987    #[prost(uint32, optional, tag = "9")]
15988    pub mac_header_valid: ::core::option::Option<u32>,
15989    #[prost(string, optional, tag = "10")]
15990    pub name: ::core::option::Option<::prost::alloc::string::String>,
15991    #[prost(uint32, optional, tag = "11")]
15992    pub napi_id: ::core::option::Option<u32>,
15993    #[prost(uint32, optional, tag = "12")]
15994    pub nr_frags: ::core::option::Option<u32>,
15995    #[prost(uint32, optional, tag = "13")]
15996    pub protocol: ::core::option::Option<u32>,
15997    #[prost(uint32, optional, tag = "14")]
15998    pub queue_mapping: ::core::option::Option<u32>,
15999    #[prost(uint64, optional, tag = "15")]
16000    pub skbaddr: ::core::option::Option<u64>,
16001    #[prost(uint32, optional, tag = "16")]
16002    pub truesize: ::core::option::Option<u32>,
16003    #[prost(uint32, optional, tag = "17")]
16004    pub vlan_proto: ::core::option::Option<u32>,
16005    #[prost(uint32, optional, tag = "18")]
16006    pub vlan_tagged: ::core::option::Option<u32>,
16007    #[prost(uint32, optional, tag = "19")]
16008    pub vlan_tci: ::core::option::Option<u32>,
16009}
16010#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16011pub struct NapiGroReceiveExitFtraceEvent {
16012    #[prost(int32, optional, tag = "1")]
16013    pub ret: ::core::option::Option<i32>,
16014}
16015#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16016pub struct OomScoreAdjUpdateFtraceEvent {
16017    #[prost(string, optional, tag = "1")]
16018    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16019    #[prost(int32, optional, tag = "2")]
16020    pub oom_score_adj: ::core::option::Option<i32>,
16021    #[prost(int32, optional, tag = "3")]
16022    pub pid: ::core::option::Option<i32>,
16023}
16024#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16025pub struct MarkVictimFtraceEvent {
16026    #[prost(int32, optional, tag = "1")]
16027    pub pid: ::core::option::Option<i32>,
16028}
16029#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16030pub struct DsiCmdFifoStatusFtraceEvent {
16031    #[prost(uint32, optional, tag = "1")]
16032    pub header: ::core::option::Option<u32>,
16033    #[prost(uint32, optional, tag = "2")]
16034    pub payload: ::core::option::Option<u32>,
16035}
16036#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16037pub struct DsiRxFtraceEvent {
16038    #[prost(uint32, optional, tag = "1")]
16039    pub cmd: ::core::option::Option<u32>,
16040    #[prost(bytes = "vec", optional, tag = "3")]
16041    pub rx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16042}
16043#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16044pub struct DsiTxFtraceEvent {
16045    #[prost(uint32, optional, tag = "1")]
16046    pub last: ::core::option::Option<u32>,
16047    #[prost(uint32, optional, tag = "3")]
16048    pub r#type: ::core::option::Option<u32>,
16049    #[prost(bytes = "vec", optional, tag = "4")]
16050    pub tx_buf: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16051}
16052#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16053pub struct PanelWriteGenericFtraceEvent {
16054    #[prost(int32, optional, tag = "1")]
16055    pub pid: ::core::option::Option<i32>,
16056    #[prost(string, optional, tag = "2")]
16057    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16058    #[prost(uint32, optional, tag = "3")]
16059    pub trace_begin: ::core::option::Option<u32>,
16060    #[prost(string, optional, tag = "4")]
16061    pub name: ::core::option::Option<::prost::alloc::string::String>,
16062    #[prost(uint32, optional, tag = "5")]
16063    pub r#type: ::core::option::Option<u32>,
16064    #[prost(int32, optional, tag = "6")]
16065    pub value: ::core::option::Option<i32>,
16066}
16067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16068pub struct GramCollisionFtraceEvent {
16069    #[prost(int32, optional, tag = "1")]
16070    pub panel_index: ::core::option::Option<i32>,
16071    #[prost(uint32, optional, tag = "2")]
16072    pub collision_cnt: ::core::option::Option<u32>,
16073}
16074#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16075pub struct PanelSettingsFullFtraceEvent {
16076    #[prost(int32, optional, tag = "1")]
16077    pub panel_index: ::core::option::Option<i32>,
16078    #[prost(uint32, optional, tag = "2")]
16079    pub hbm: ::core::option::Option<u32>,
16080    #[prost(uint32, optional, tag = "3")]
16081    pub irc: ::core::option::Option<u32>,
16082    #[prost(uint32, optional, tag = "4")]
16083    pub h_pwm: ::core::option::Option<u32>,
16084    #[prost(uint32, optional, tag = "5")]
16085    pub fi_auto: ::core::option::Option<u32>,
16086    #[prost(uint32, optional, tag = "6")]
16087    pub fi_manual: ::core::option::Option<u32>,
16088    #[prost(uint32, optional, tag = "7")]
16089    pub early_exit: ::core::option::Option<u32>,
16090    #[prost(uint32, optional, tag = "8")]
16091    pub min_rr: ::core::option::Option<u32>,
16092    #[prost(uint32, optional, tag = "9")]
16093    pub max_rr: ::core::option::Option<u32>,
16094    #[prost(uint32, optional, tag = "10")]
16095    pub te_freq: ::core::option::Option<u32>,
16096}
16097#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16098pub struct PanelSettingsLiteFtraceEvent {
16099    #[prost(int32, optional, tag = "1")]
16100    pub panel_index: ::core::option::Option<i32>,
16101    #[prost(uint32, optional, tag = "2")]
16102    pub vrr: ::core::option::Option<u32>,
16103    #[prost(uint32, optional, tag = "3")]
16104    pub min_rr: ::core::option::Option<u32>,
16105    #[prost(uint32, optional, tag = "4")]
16106    pub max_rr: ::core::option::Option<u32>,
16107    #[prost(uint32, optional, tag = "5")]
16108    pub te_freq: ::core::option::Option<u32>,
16109}
16110#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16111pub struct SchedSwitchWithCtrsFtraceEvent {
16112    #[prost(int32, optional, tag = "1")]
16113    pub old_pid: ::core::option::Option<i32>,
16114    #[prost(int32, optional, tag = "2")]
16115    pub new_pid: ::core::option::Option<i32>,
16116    #[prost(uint64, optional, tag = "3")]
16117    pub cctr: ::core::option::Option<u64>,
16118    #[prost(uint64, optional, tag = "4")]
16119    pub ctr0: ::core::option::Option<u64>,
16120    #[prost(uint64, optional, tag = "5")]
16121    pub ctr1: ::core::option::Option<u64>,
16122    #[prost(uint64, optional, tag = "6")]
16123    pub ctr2: ::core::option::Option<u64>,
16124    #[prost(uint64, optional, tag = "7")]
16125    pub ctr3: ::core::option::Option<u64>,
16126    #[prost(uint32, optional, tag = "8")]
16127    pub lctr0: ::core::option::Option<u32>,
16128    #[prost(uint32, optional, tag = "9")]
16129    pub lctr1: ::core::option::Option<u32>,
16130    #[prost(uint64, optional, tag = "10")]
16131    pub ctr4: ::core::option::Option<u64>,
16132    #[prost(uint64, optional, tag = "11")]
16133    pub ctr5: ::core::option::Option<u64>,
16134    #[prost(string, optional, tag = "12")]
16135    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
16136    #[prost(int32, optional, tag = "13")]
16137    pub prev_pid: ::core::option::Option<i32>,
16138    #[prost(uint32, optional, tag = "14")]
16139    pub cyc: ::core::option::Option<u32>,
16140    #[prost(uint32, optional, tag = "15")]
16141    pub inst: ::core::option::Option<u32>,
16142    #[prost(uint32, optional, tag = "16")]
16143    pub stallbm: ::core::option::Option<u32>,
16144    #[prost(uint32, optional, tag = "17")]
16145    pub l3dm: ::core::option::Option<u32>,
16146    #[prost(int32, optional, tag = "18")]
16147    pub next_pid: ::core::option::Option<i32>,
16148    #[prost(string, optional, tag = "19")]
16149    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
16150    #[prost(int64, optional, tag = "20")]
16151    pub prev_state: ::core::option::Option<i64>,
16152    #[prost(uint64, optional, tag = "21")]
16153    pub amu0: ::core::option::Option<u64>,
16154    #[prost(uint64, optional, tag = "22")]
16155    pub amu1: ::core::option::Option<u64>,
16156    #[prost(uint64, optional, tag = "23")]
16157    pub amu2: ::core::option::Option<u64>,
16158}
16159#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16160pub struct LongIrqFtraceEvent {
16161    #[prost(int32, optional, tag = "1")]
16162    pub irq: ::core::option::Option<i32>,
16163    #[prost(uint32, optional, tag = "2")]
16164    pub latency: ::core::option::Option<u32>,
16165    #[prost(uint32, optional, tag = "3")]
16166    pub count: ::core::option::Option<u32>,
16167}
16168#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16169pub struct LongSoftirqFtraceEvent {
16170    #[prost(int32, optional, tag = "1")]
16171    pub vec_nr: ::core::option::Option<i32>,
16172    #[prost(uint32, optional, tag = "2")]
16173    pub latency: ::core::option::Option<u32>,
16174    #[prost(uint32, optional, tag = "3")]
16175    pub count: ::core::option::Option<u32>,
16176}
16177#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16178pub struct PixelMmKswapdWakeFtraceEvent {
16179    #[prost(int32, optional, tag = "1")]
16180    pub whatever: ::core::option::Option<i32>,
16181}
16182#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16183pub struct PixelMmKswapdDoneFtraceEvent {
16184    #[prost(uint64, optional, tag = "1")]
16185    pub delta_nr_scanned: ::core::option::Option<u64>,
16186    #[prost(uint64, optional, tag = "2")]
16187    pub delta_nr_reclaimed: ::core::option::Option<u64>,
16188    #[prost(uint64, optional, tag = "3")]
16189    pub delta_nr_allocated: ::core::option::Option<u64>,
16190    #[prost(uint64, optional, tag = "4")]
16191    pub duration_ns: ::core::option::Option<u64>,
16192}
16193#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16194pub struct CpuFrequencyFtraceEvent {
16195    #[prost(uint32, optional, tag = "1")]
16196    pub state: ::core::option::Option<u32>,
16197    #[prost(uint32, optional, tag = "2")]
16198    pub cpu_id: ::core::option::Option<u32>,
16199}
16200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16201pub struct CpuFrequencyLimitsFtraceEvent {
16202    #[prost(uint32, optional, tag = "1")]
16203    pub min_freq: ::core::option::Option<u32>,
16204    #[prost(uint32, optional, tag = "2")]
16205    pub max_freq: ::core::option::Option<u32>,
16206    #[prost(uint32, optional, tag = "3")]
16207    pub cpu_id: ::core::option::Option<u32>,
16208}
16209#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16210pub struct CpuIdleFtraceEvent {
16211    #[prost(uint32, optional, tag = "1")]
16212    pub state: ::core::option::Option<u32>,
16213    #[prost(uint32, optional, tag = "2")]
16214    pub cpu_id: ::core::option::Option<u32>,
16215}
16216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16217pub struct ClockEnableFtraceEvent {
16218    #[prost(string, optional, tag = "1")]
16219    pub name: ::core::option::Option<::prost::alloc::string::String>,
16220    #[prost(uint64, optional, tag = "2")]
16221    pub state: ::core::option::Option<u64>,
16222    #[prost(uint64, optional, tag = "3")]
16223    pub cpu_id: ::core::option::Option<u64>,
16224}
16225#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16226pub struct ClockDisableFtraceEvent {
16227    #[prost(string, optional, tag = "1")]
16228    pub name: ::core::option::Option<::prost::alloc::string::String>,
16229    #[prost(uint64, optional, tag = "2")]
16230    pub state: ::core::option::Option<u64>,
16231    #[prost(uint64, optional, tag = "3")]
16232    pub cpu_id: ::core::option::Option<u64>,
16233}
16234#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16235pub struct ClockSetRateFtraceEvent {
16236    #[prost(string, optional, tag = "1")]
16237    pub name: ::core::option::Option<::prost::alloc::string::String>,
16238    #[prost(uint64, optional, tag = "2")]
16239    pub state: ::core::option::Option<u64>,
16240    #[prost(uint64, optional, tag = "3")]
16241    pub cpu_id: ::core::option::Option<u64>,
16242}
16243#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16244pub struct SuspendResumeFtraceEvent {
16245    #[prost(string, optional, tag = "1")]
16246    pub action: ::core::option::Option<::prost::alloc::string::String>,
16247    #[prost(int32, optional, tag = "2")]
16248    pub val: ::core::option::Option<i32>,
16249    #[prost(uint32, optional, tag = "3")]
16250    pub start: ::core::option::Option<u32>,
16251}
16252#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16253pub struct GpuFrequencyFtraceEvent {
16254    #[prost(uint32, optional, tag = "1")]
16255    pub gpu_id: ::core::option::Option<u32>,
16256    #[prost(uint32, optional, tag = "2")]
16257    pub state: ::core::option::Option<u32>,
16258}
16259#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16260pub struct WakeupSourceActivateFtraceEvent {
16261    #[prost(string, optional, tag = "1")]
16262    pub name: ::core::option::Option<::prost::alloc::string::String>,
16263    #[prost(uint64, optional, tag = "2")]
16264    pub state: ::core::option::Option<u64>,
16265}
16266#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16267pub struct WakeupSourceDeactivateFtraceEvent {
16268    #[prost(string, optional, tag = "1")]
16269    pub name: ::core::option::Option<::prost::alloc::string::String>,
16270    #[prost(uint64, optional, tag = "2")]
16271    pub state: ::core::option::Option<u64>,
16272}
16273#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16274pub struct GpuWorkPeriodFtraceEvent {
16275    #[prost(uint32, optional, tag = "1")]
16276    pub gpu_id: ::core::option::Option<u32>,
16277    #[prost(uint32, optional, tag = "2")]
16278    pub uid: ::core::option::Option<u32>,
16279    #[prost(uint64, optional, tag = "3")]
16280    pub start_time_ns: ::core::option::Option<u64>,
16281    #[prost(uint64, optional, tag = "4")]
16282    pub end_time_ns: ::core::option::Option<u64>,
16283    #[prost(uint64, optional, tag = "5")]
16284    pub total_active_duration_ns: ::core::option::Option<u64>,
16285}
16286#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16287pub struct DevicePmCallbackStartFtraceEvent {
16288    #[prost(string, optional, tag = "1")]
16289    pub device: ::core::option::Option<::prost::alloc::string::String>,
16290    #[prost(string, optional, tag = "2")]
16291    pub driver: ::core::option::Option<::prost::alloc::string::String>,
16292    #[prost(string, optional, tag = "3")]
16293    pub parent: ::core::option::Option<::prost::alloc::string::String>,
16294    #[prost(string, optional, tag = "4")]
16295    pub pm_ops: ::core::option::Option<::prost::alloc::string::String>,
16296    #[prost(int32, optional, tag = "5")]
16297    pub event: ::core::option::Option<i32>,
16298}
16299#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16300pub struct DevicePmCallbackEndFtraceEvent {
16301    #[prost(string, optional, tag = "1")]
16302    pub device: ::core::option::Option<::prost::alloc::string::String>,
16303    #[prost(string, optional, tag = "2")]
16304    pub driver: ::core::option::Option<::prost::alloc::string::String>,
16305    #[prost(int32, optional, tag = "3")]
16306    pub error: ::core::option::Option<i32>,
16307}
16308#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16309pub struct GpuPowerStateFtraceEvent {
16310    #[prost(int32, optional, tag = "1")]
16311    pub old_state: ::core::option::Option<i32>,
16312    #[prost(int32, optional, tag = "2")]
16313    pub new_state: ::core::option::Option<i32>,
16314}
16315#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16316pub struct PsciDomainIdleExitFtraceEvent {
16317    #[prost(uint32, optional, tag = "1")]
16318    pub cpu_id: ::core::option::Option<u32>,
16319    #[prost(uint32, optional, tag = "2")]
16320    pub state: ::core::option::Option<u32>,
16321    #[prost(uint32, optional, tag = "3")]
16322    pub s2idle: ::core::option::Option<u32>,
16323}
16324#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16325pub struct PsciDomainIdleEnterFtraceEvent {
16326    #[prost(uint32, optional, tag = "1")]
16327    pub cpu_id: ::core::option::Option<u32>,
16328    #[prost(uint32, optional, tag = "2")]
16329    pub state: ::core::option::Option<u32>,
16330    #[prost(uint32, optional, tag = "3")]
16331    pub s2idle: ::core::option::Option<u32>,
16332}
16333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16334pub struct ConsoleFtraceEvent {
16335    #[prost(string, optional, tag = "1")]
16336    pub msg: ::core::option::Option<::prost::alloc::string::String>,
16337}
16338#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16339pub struct SysEnterFtraceEvent {
16340    #[prost(int64, optional, tag = "1")]
16341    pub id: ::core::option::Option<i64>,
16342    #[prost(uint64, repeated, packed = "false", tag = "2")]
16343    pub args: ::prost::alloc::vec::Vec<u64>,
16344}
16345#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16346pub struct SysExitFtraceEvent {
16347    #[prost(int64, optional, tag = "1")]
16348    pub id: ::core::option::Option<i64>,
16349    #[prost(int64, optional, tag = "2")]
16350    pub ret: ::core::option::Option<i64>,
16351}
16352#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16353pub struct RegulatorDisableFtraceEvent {
16354    #[prost(string, optional, tag = "1")]
16355    pub name: ::core::option::Option<::prost::alloc::string::String>,
16356}
16357#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16358pub struct RegulatorDisableCompleteFtraceEvent {
16359    #[prost(string, optional, tag = "1")]
16360    pub name: ::core::option::Option<::prost::alloc::string::String>,
16361}
16362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16363pub struct RegulatorEnableFtraceEvent {
16364    #[prost(string, optional, tag = "1")]
16365    pub name: ::core::option::Option<::prost::alloc::string::String>,
16366}
16367#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16368pub struct RegulatorEnableCompleteFtraceEvent {
16369    #[prost(string, optional, tag = "1")]
16370    pub name: ::core::option::Option<::prost::alloc::string::String>,
16371}
16372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16373pub struct RegulatorEnableDelayFtraceEvent {
16374    #[prost(string, optional, tag = "1")]
16375    pub name: ::core::option::Option<::prost::alloc::string::String>,
16376}
16377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16378pub struct RegulatorSetVoltageFtraceEvent {
16379    #[prost(string, optional, tag = "1")]
16380    pub name: ::core::option::Option<::prost::alloc::string::String>,
16381    #[prost(int32, optional, tag = "2")]
16382    pub min: ::core::option::Option<i32>,
16383    #[prost(int32, optional, tag = "3")]
16384    pub max: ::core::option::Option<i32>,
16385}
16386#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16387pub struct RegulatorSetVoltageCompleteFtraceEvent {
16388    #[prost(string, optional, tag = "1")]
16389    pub name: ::core::option::Option<::prost::alloc::string::String>,
16390    #[prost(uint32, optional, tag = "2")]
16391    pub val: ::core::option::Option<u32>,
16392}
16393#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16394pub struct RpmStatusFtraceEvent {
16395    #[prost(string, optional, tag = "1")]
16396    pub name: ::core::option::Option<::prost::alloc::string::String>,
16397    #[prost(int32, optional, tag = "2")]
16398    pub status: ::core::option::Option<i32>,
16399}
16400#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16401pub struct SamsungTracingMarkWriteFtraceEvent {
16402    #[prost(int32, optional, tag = "1")]
16403    pub pid: ::core::option::Option<i32>,
16404    #[prost(string, optional, tag = "2")]
16405    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16406    #[prost(uint32, optional, tag = "3")]
16407    pub trace_begin: ::core::option::Option<u32>,
16408    #[prost(uint32, optional, tag = "4")]
16409    pub trace_type: ::core::option::Option<u32>,
16410    #[prost(int32, optional, tag = "5")]
16411    pub value: ::core::option::Option<i32>,
16412}
16413#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16414pub struct SchedSwitchFtraceEvent {
16415    #[prost(string, optional, tag = "1")]
16416    pub prev_comm: ::core::option::Option<::prost::alloc::string::String>,
16417    #[prost(int32, optional, tag = "2")]
16418    pub prev_pid: ::core::option::Option<i32>,
16419    #[prost(int32, optional, tag = "3")]
16420    pub prev_prio: ::core::option::Option<i32>,
16421    #[prost(int64, optional, tag = "4")]
16422    pub prev_state: ::core::option::Option<i64>,
16423    #[prost(string, optional, tag = "5")]
16424    pub next_comm: ::core::option::Option<::prost::alloc::string::String>,
16425    #[prost(int32, optional, tag = "6")]
16426    pub next_pid: ::core::option::Option<i32>,
16427    #[prost(int32, optional, tag = "7")]
16428    pub next_prio: ::core::option::Option<i32>,
16429}
16430#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16431pub struct SchedWakeupFtraceEvent {
16432    #[prost(string, optional, tag = "1")]
16433    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16434    #[prost(int32, optional, tag = "2")]
16435    pub pid: ::core::option::Option<i32>,
16436    #[prost(int32, optional, tag = "3")]
16437    pub prio: ::core::option::Option<i32>,
16438    #[prost(int32, optional, tag = "4")]
16439    pub success: ::core::option::Option<i32>,
16440    #[prost(int32, optional, tag = "5")]
16441    pub target_cpu: ::core::option::Option<i32>,
16442}
16443#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16444pub struct SchedBlockedReasonFtraceEvent {
16445    #[prost(int32, optional, tag = "1")]
16446    pub pid: ::core::option::Option<i32>,
16447    #[prost(uint64, optional, tag = "2")]
16448    pub caller: ::core::option::Option<u64>,
16449    #[prost(uint32, optional, tag = "3")]
16450    pub io_wait: ::core::option::Option<u32>,
16451}
16452#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16453pub struct SchedCpuHotplugFtraceEvent {
16454    #[prost(int32, optional, tag = "1")]
16455    pub affected_cpu: ::core::option::Option<i32>,
16456    #[prost(int32, optional, tag = "2")]
16457    pub error: ::core::option::Option<i32>,
16458    #[prost(int32, optional, tag = "3")]
16459    pub status: ::core::option::Option<i32>,
16460}
16461#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16462pub struct SchedWakingFtraceEvent {
16463    #[prost(string, optional, tag = "1")]
16464    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16465    #[prost(int32, optional, tag = "2")]
16466    pub pid: ::core::option::Option<i32>,
16467    #[prost(int32, optional, tag = "3")]
16468    pub prio: ::core::option::Option<i32>,
16469    #[prost(int32, optional, tag = "4")]
16470    pub success: ::core::option::Option<i32>,
16471    #[prost(int32, optional, tag = "5")]
16472    pub target_cpu: ::core::option::Option<i32>,
16473}
16474#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16475pub struct SchedWakeupNewFtraceEvent {
16476    #[prost(string, optional, tag = "1")]
16477    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16478    #[prost(int32, optional, tag = "2")]
16479    pub pid: ::core::option::Option<i32>,
16480    #[prost(int32, optional, tag = "3")]
16481    pub prio: ::core::option::Option<i32>,
16482    #[prost(int32, optional, tag = "4")]
16483    pub success: ::core::option::Option<i32>,
16484    #[prost(int32, optional, tag = "5")]
16485    pub target_cpu: ::core::option::Option<i32>,
16486}
16487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16488pub struct SchedProcessExecFtraceEvent {
16489    #[prost(string, optional, tag = "1")]
16490    pub filename: ::core::option::Option<::prost::alloc::string::String>,
16491    #[prost(int32, optional, tag = "2")]
16492    pub pid: ::core::option::Option<i32>,
16493    #[prost(int32, optional, tag = "3")]
16494    pub old_pid: ::core::option::Option<i32>,
16495}
16496#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16497pub struct SchedProcessExitFtraceEvent {
16498    #[prost(string, optional, tag = "1")]
16499    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16500    #[prost(int32, optional, tag = "2")]
16501    pub pid: ::core::option::Option<i32>,
16502    #[prost(int32, optional, tag = "3")]
16503    pub tgid: ::core::option::Option<i32>,
16504    #[prost(int32, optional, tag = "4")]
16505    pub prio: ::core::option::Option<i32>,
16506}
16507#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16508pub struct SchedProcessForkFtraceEvent {
16509    #[prost(string, optional, tag = "1")]
16510    pub parent_comm: ::core::option::Option<::prost::alloc::string::String>,
16511    #[prost(int32, optional, tag = "2")]
16512    pub parent_pid: ::core::option::Option<i32>,
16513    #[prost(string, optional, tag = "3")]
16514    pub child_comm: ::core::option::Option<::prost::alloc::string::String>,
16515    #[prost(int32, optional, tag = "4")]
16516    pub child_pid: ::core::option::Option<i32>,
16517}
16518#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16519pub struct SchedProcessFreeFtraceEvent {
16520    #[prost(string, optional, tag = "1")]
16521    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16522    #[prost(int32, optional, tag = "2")]
16523    pub pid: ::core::option::Option<i32>,
16524    #[prost(int32, optional, tag = "3")]
16525    pub prio: ::core::option::Option<i32>,
16526}
16527#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16528pub struct SchedProcessHangFtraceEvent {
16529    #[prost(string, optional, tag = "1")]
16530    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16531    #[prost(int32, optional, tag = "2")]
16532    pub pid: ::core::option::Option<i32>,
16533}
16534#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16535pub struct SchedProcessWaitFtraceEvent {
16536    #[prost(string, optional, tag = "1")]
16537    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16538    #[prost(int32, optional, tag = "2")]
16539    pub pid: ::core::option::Option<i32>,
16540    #[prost(int32, optional, tag = "3")]
16541    pub prio: ::core::option::Option<i32>,
16542}
16543#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16544pub struct SchedPiSetprioFtraceEvent {
16545    #[prost(string, optional, tag = "1")]
16546    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16547    #[prost(int32, optional, tag = "2")]
16548    pub newprio: ::core::option::Option<i32>,
16549    #[prost(int32, optional, tag = "3")]
16550    pub oldprio: ::core::option::Option<i32>,
16551    #[prost(int32, optional, tag = "4")]
16552    pub pid: ::core::option::Option<i32>,
16553}
16554#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16555pub struct SchedCpuUtilCfsFtraceEvent {
16556    #[prost(int32, optional, tag = "1")]
16557    pub active: ::core::option::Option<i32>,
16558    #[prost(uint64, optional, tag = "2")]
16559    pub capacity: ::core::option::Option<u64>,
16560    #[prost(uint64, optional, tag = "3")]
16561    pub capacity_orig: ::core::option::Option<u64>,
16562    #[prost(uint32, optional, tag = "4")]
16563    pub cpu: ::core::option::Option<u32>,
16564    #[prost(uint64, optional, tag = "5")]
16565    pub cpu_importance: ::core::option::Option<u64>,
16566    #[prost(uint64, optional, tag = "6")]
16567    pub cpu_util: ::core::option::Option<u64>,
16568    #[prost(uint32, optional, tag = "7")]
16569    pub exit_lat: ::core::option::Option<u32>,
16570    #[prost(uint64, optional, tag = "8")]
16571    pub group_capacity: ::core::option::Option<u64>,
16572    #[prost(uint32, optional, tag = "9")]
16573    pub grp_overutilized: ::core::option::Option<u32>,
16574    #[prost(uint32, optional, tag = "10")]
16575    pub idle_cpu: ::core::option::Option<u32>,
16576    #[prost(uint32, optional, tag = "11")]
16577    pub nr_running: ::core::option::Option<u32>,
16578    #[prost(int64, optional, tag = "12")]
16579    pub spare_cap: ::core::option::Option<i64>,
16580    #[prost(uint32, optional, tag = "13")]
16581    pub task_fits: ::core::option::Option<u32>,
16582    #[prost(uint64, optional, tag = "14")]
16583    pub wake_group_util: ::core::option::Option<u64>,
16584    #[prost(uint64, optional, tag = "15")]
16585    pub wake_util: ::core::option::Option<u64>,
16586}
16587#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16588pub struct SchedMigrateTaskFtraceEvent {
16589    #[prost(string, optional, tag = "1")]
16590    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16591    #[prost(int32, optional, tag = "2")]
16592    pub pid: ::core::option::Option<i32>,
16593    #[prost(int32, optional, tag = "3")]
16594    pub prio: ::core::option::Option<i32>,
16595    #[prost(int32, optional, tag = "4")]
16596    pub orig_cpu: ::core::option::Option<i32>,
16597    #[prost(int32, optional, tag = "5")]
16598    pub dest_cpu: ::core::option::Option<i32>,
16599    #[prost(int32, optional, tag = "6")]
16600    pub running: ::core::option::Option<i32>,
16601    #[prost(uint32, optional, tag = "7")]
16602    pub load: ::core::option::Option<u32>,
16603}
16604#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16605pub struct SchedWakeupTaskAttrFtraceEvent {
16606    #[prost(int32, optional, tag = "1")]
16607    pub pid: ::core::option::Option<i32>,
16608    #[prost(uint64, optional, tag = "2")]
16609    pub cpu_affinity: ::core::option::Option<u64>,
16610    #[prost(uint64, optional, tag = "3")]
16611    pub task_util: ::core::option::Option<u64>,
16612    #[prost(uint64, optional, tag = "4")]
16613    pub uclamp_min: ::core::option::Option<u64>,
16614    #[prost(uint64, optional, tag = "5")]
16615    pub vruntime: ::core::option::Option<u64>,
16616    #[prost(uint64, optional, tag = "6")]
16617    pub sched_qos_user_defined_flag: ::core::option::Option<u64>,
16618    #[prost(uint32, optional, tag = "7")]
16619    pub rampup_multiplier: ::core::option::Option<u32>,
16620    #[prost(uint32, optional, tag = "8")]
16621    pub effect_rampup_multiplier: ::core::option::Option<u32>,
16622    #[prost(int32, optional, tag = "9")]
16623    pub tag_nice: ::core::option::Option<i32>,
16624}
16625#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16626pub struct SchedGroupTrackerFtraceEvent {
16627    #[prost(string, optional, tag = "1")]
16628    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16629    #[prost(int32, optional, tag = "2")]
16630    pub pid: ::core::option::Option<i32>,
16631    #[prost(string, optional, tag = "3")]
16632    pub group: ::core::option::Option<::prost::alloc::string::String>,
16633    #[prost(int32, optional, tag = "4")]
16634    pub group_num: ::core::option::Option<i32>,
16635}
16636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16637pub struct ScmCallStartFtraceEvent {
16638    #[prost(uint32, optional, tag = "1")]
16639    pub arginfo: ::core::option::Option<u32>,
16640    #[prost(uint64, optional, tag = "2")]
16641    pub x0: ::core::option::Option<u64>,
16642    #[prost(uint64, optional, tag = "3")]
16643    pub x5: ::core::option::Option<u64>,
16644}
16645#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16646pub struct ScmCallEndFtraceEvent {}
16647#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16648pub struct ScsiDispatchCmdErrorFtraceEvent {
16649    #[prost(uint32, optional, tag = "1")]
16650    pub host_no: ::core::option::Option<u32>,
16651    #[prost(uint32, optional, tag = "2")]
16652    pub channel: ::core::option::Option<u32>,
16653    #[prost(uint32, optional, tag = "3")]
16654    pub id: ::core::option::Option<u32>,
16655    #[prost(uint32, optional, tag = "4")]
16656    pub lun: ::core::option::Option<u32>,
16657    #[prost(int32, optional, tag = "5")]
16658    pub rtn: ::core::option::Option<i32>,
16659    #[prost(uint32, optional, tag = "6")]
16660    pub opcode: ::core::option::Option<u32>,
16661    #[prost(uint32, optional, tag = "7")]
16662    pub cmd_len: ::core::option::Option<u32>,
16663    #[prost(uint32, optional, tag = "8")]
16664    pub data_sglen: ::core::option::Option<u32>,
16665    #[prost(uint32, optional, tag = "9")]
16666    pub prot_sglen: ::core::option::Option<u32>,
16667    #[prost(uint32, optional, tag = "10")]
16668    pub prot_op: ::core::option::Option<u32>,
16669    #[prost(int32, optional, tag = "12")]
16670    pub driver_tag: ::core::option::Option<i32>,
16671    #[prost(int32, optional, tag = "13")]
16672    pub scheduler_tag: ::core::option::Option<i32>,
16673    #[prost(bytes = "vec", optional, tag = "14")]
16674    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16675}
16676#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16677pub struct ScsiDispatchCmdTimeoutFtraceEvent {
16678    #[prost(uint32, optional, tag = "1")]
16679    pub host_no: ::core::option::Option<u32>,
16680    #[prost(uint32, optional, tag = "2")]
16681    pub channel: ::core::option::Option<u32>,
16682    #[prost(uint32, optional, tag = "3")]
16683    pub id: ::core::option::Option<u32>,
16684    #[prost(uint32, optional, tag = "4")]
16685    pub lun: ::core::option::Option<u32>,
16686    #[prost(int32, optional, tag = "5")]
16687    pub result: ::core::option::Option<i32>,
16688    #[prost(uint32, optional, tag = "6")]
16689    pub opcode: ::core::option::Option<u32>,
16690    #[prost(uint32, optional, tag = "7")]
16691    pub cmd_len: ::core::option::Option<u32>,
16692    #[prost(uint32, optional, tag = "8")]
16693    pub data_sglen: ::core::option::Option<u32>,
16694    #[prost(uint32, optional, tag = "9")]
16695    pub prot_sglen: ::core::option::Option<u32>,
16696    #[prost(uint32, optional, tag = "10")]
16697    pub prot_op: ::core::option::Option<u32>,
16698    #[prost(int32, optional, tag = "12")]
16699    pub driver_tag: ::core::option::Option<i32>,
16700    #[prost(int32, optional, tag = "13")]
16701    pub scheduler_tag: ::core::option::Option<i32>,
16702    #[prost(uint32, optional, tag = "14")]
16703    pub sense_key: ::core::option::Option<u32>,
16704    #[prost(uint32, optional, tag = "15")]
16705    pub asc: ::core::option::Option<u32>,
16706    #[prost(uint32, optional, tag = "16")]
16707    pub ascq: ::core::option::Option<u32>,
16708    #[prost(bytes = "vec", optional, tag = "17")]
16709    pub cmnd: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
16710}
16711#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16712pub struct ScsiEhWakeupFtraceEvent {
16713    #[prost(uint32, optional, tag = "1")]
16714    pub host_no: ::core::option::Option<u32>,
16715}
16716#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16717pub struct SdeTracingMarkWriteFtraceEvent {
16718    #[prost(int32, optional, tag = "1")]
16719    pub pid: ::core::option::Option<i32>,
16720    #[prost(string, optional, tag = "2")]
16721    pub trace_name: ::core::option::Option<::prost::alloc::string::String>,
16722    #[prost(uint32, optional, tag = "3")]
16723    pub trace_type: ::core::option::Option<u32>,
16724    #[prost(int32, optional, tag = "4")]
16725    pub value: ::core::option::Option<i32>,
16726    #[prost(uint32, optional, tag = "5")]
16727    pub trace_begin: ::core::option::Option<u32>,
16728}
16729#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16730pub struct SdeSdeEvtlogFtraceEvent {
16731    #[prost(string, optional, tag = "1")]
16732    pub evtlog_tag: ::core::option::Option<::prost::alloc::string::String>,
16733    #[prost(int32, optional, tag = "2")]
16734    pub pid: ::core::option::Option<i32>,
16735    #[prost(uint32, optional, tag = "3")]
16736    pub tag_id: ::core::option::Option<u32>,
16737    #[prost(uint32, optional, tag = "4")]
16738    pub d00: ::core::option::Option<u32>,
16739    #[prost(uint32, optional, tag = "5")]
16740    pub d01: ::core::option::Option<u32>,
16741    #[prost(uint32, optional, tag = "6")]
16742    pub d02: ::core::option::Option<u32>,
16743    #[prost(uint32, optional, tag = "7")]
16744    pub d03: ::core::option::Option<u32>,
16745    #[prost(uint32, optional, tag = "8")]
16746    pub d04: ::core::option::Option<u32>,
16747    #[prost(uint32, optional, tag = "9")]
16748    pub d05: ::core::option::Option<u32>,
16749    #[prost(uint32, optional, tag = "10")]
16750    pub d06: ::core::option::Option<u32>,
16751    #[prost(uint32, optional, tag = "11")]
16752    pub d07: ::core::option::Option<u32>,
16753    #[prost(uint32, optional, tag = "12")]
16754    pub d08: ::core::option::Option<u32>,
16755    #[prost(uint32, optional, tag = "13")]
16756    pub d09: ::core::option::Option<u32>,
16757    #[prost(uint32, optional, tag = "14")]
16758    pub d10: ::core::option::Option<u32>,
16759    #[prost(uint32, optional, tag = "15")]
16760    pub d11: ::core::option::Option<u32>,
16761    #[prost(uint32, optional, tag = "16")]
16762    pub d12: ::core::option::Option<u32>,
16763    #[prost(uint32, optional, tag = "17")]
16764    pub d13: ::core::option::Option<u32>,
16765    #[prost(uint32, optional, tag = "18")]
16766    pub d14: ::core::option::Option<u32>,
16767}
16768#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16769pub struct SdeSdePerfCalcCrtcFtraceEvent {
16770    #[prost(uint64, optional, tag = "1")]
16771    pub bw_ctl_ebi: ::core::option::Option<u64>,
16772    #[prost(uint64, optional, tag = "2")]
16773    pub bw_ctl_llcc: ::core::option::Option<u64>,
16774    #[prost(uint64, optional, tag = "3")]
16775    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16776    #[prost(uint32, optional, tag = "4")]
16777    pub core_clk_rate: ::core::option::Option<u32>,
16778    #[prost(uint32, optional, tag = "5")]
16779    pub crtc: ::core::option::Option<u32>,
16780    #[prost(uint64, optional, tag = "6")]
16781    pub ib_ebi: ::core::option::Option<u64>,
16782    #[prost(uint64, optional, tag = "7")]
16783    pub ib_llcc: ::core::option::Option<u64>,
16784    #[prost(uint64, optional, tag = "8")]
16785    pub ib_mnoc: ::core::option::Option<u64>,
16786}
16787#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16788pub struct SdeSdePerfCrtcUpdateFtraceEvent {
16789    #[prost(uint64, optional, tag = "1")]
16790    pub bw_ctl_ebi: ::core::option::Option<u64>,
16791    #[prost(uint64, optional, tag = "2")]
16792    pub bw_ctl_llcc: ::core::option::Option<u64>,
16793    #[prost(uint64, optional, tag = "3")]
16794    pub bw_ctl_mnoc: ::core::option::Option<u64>,
16795    #[prost(uint32, optional, tag = "4")]
16796    pub core_clk_rate: ::core::option::Option<u32>,
16797    #[prost(uint32, optional, tag = "5")]
16798    pub crtc: ::core::option::Option<u32>,
16799    #[prost(int32, optional, tag = "6")]
16800    pub params: ::core::option::Option<i32>,
16801    #[prost(uint64, optional, tag = "7")]
16802    pub per_pipe_ib_ebi: ::core::option::Option<u64>,
16803    #[prost(uint64, optional, tag = "8")]
16804    pub per_pipe_ib_llcc: ::core::option::Option<u64>,
16805    #[prost(uint64, optional, tag = "9")]
16806    pub per_pipe_ib_mnoc: ::core::option::Option<u64>,
16807    #[prost(uint32, optional, tag = "10")]
16808    pub stop_req: ::core::option::Option<u32>,
16809    #[prost(uint32, optional, tag = "11")]
16810    pub update_bus: ::core::option::Option<u32>,
16811    #[prost(uint32, optional, tag = "12")]
16812    pub update_clk: ::core::option::Option<u32>,
16813}
16814#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16815pub struct SdeSdePerfSetQosLutsFtraceEvent {
16816    #[prost(uint32, optional, tag = "1")]
16817    pub fl: ::core::option::Option<u32>,
16818    #[prost(uint32, optional, tag = "2")]
16819    pub fmt: ::core::option::Option<u32>,
16820    #[prost(uint64, optional, tag = "3")]
16821    pub lut: ::core::option::Option<u64>,
16822    #[prost(uint32, optional, tag = "4")]
16823    pub lut_usage: ::core::option::Option<u32>,
16824    #[prost(uint32, optional, tag = "5")]
16825    pub pnum: ::core::option::Option<u32>,
16826    #[prost(uint32, optional, tag = "6")]
16827    pub rt: ::core::option::Option<u32>,
16828}
16829#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16830pub struct SdeSdePerfUpdateBusFtraceEvent {
16831    #[prost(uint64, optional, tag = "1")]
16832    pub ab_quota: ::core::option::Option<u64>,
16833    #[prost(uint32, optional, tag = "2")]
16834    pub bus_id: ::core::option::Option<u32>,
16835    #[prost(int32, optional, tag = "3")]
16836    pub client: ::core::option::Option<i32>,
16837    #[prost(uint64, optional, tag = "4")]
16838    pub ib_quota: ::core::option::Option<u64>,
16839}
16840#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16841pub struct SignalDeliverFtraceEvent {
16842    #[prost(int32, optional, tag = "1")]
16843    pub code: ::core::option::Option<i32>,
16844    #[prost(uint64, optional, tag = "2")]
16845    pub sa_flags: ::core::option::Option<u64>,
16846    #[prost(int32, optional, tag = "3")]
16847    pub sig: ::core::option::Option<i32>,
16848}
16849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16850pub struct SignalGenerateFtraceEvent {
16851    #[prost(int32, optional, tag = "1")]
16852    pub code: ::core::option::Option<i32>,
16853    #[prost(string, optional, tag = "2")]
16854    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16855    #[prost(int32, optional, tag = "3")]
16856    pub group: ::core::option::Option<i32>,
16857    #[prost(int32, optional, tag = "4")]
16858    pub pid: ::core::option::Option<i32>,
16859    #[prost(int32, optional, tag = "5")]
16860    pub result: ::core::option::Option<i32>,
16861    #[prost(int32, optional, tag = "6")]
16862    pub sig: ::core::option::Option<i32>,
16863}
16864#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16865pub struct KfreeSkbFtraceEvent {
16866    #[prost(uint64, optional, tag = "1")]
16867    pub location: ::core::option::Option<u64>,
16868    #[prost(uint32, optional, tag = "2")]
16869    pub protocol: ::core::option::Option<u32>,
16870    #[prost(uint64, optional, tag = "3")]
16871    pub skbaddr: ::core::option::Option<u64>,
16872}
16873#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16874pub struct InetSockSetStateFtraceEvent {
16875    #[prost(uint32, optional, tag = "1")]
16876    pub daddr: ::core::option::Option<u32>,
16877    #[prost(uint32, optional, tag = "2")]
16878    pub dport: ::core::option::Option<u32>,
16879    #[prost(uint32, optional, tag = "3")]
16880    pub family: ::core::option::Option<u32>,
16881    #[prost(int32, optional, tag = "4")]
16882    pub newstate: ::core::option::Option<i32>,
16883    #[prost(int32, optional, tag = "5")]
16884    pub oldstate: ::core::option::Option<i32>,
16885    #[prost(uint32, optional, tag = "6")]
16886    pub protocol: ::core::option::Option<u32>,
16887    #[prost(uint32, optional, tag = "7")]
16888    pub saddr: ::core::option::Option<u32>,
16889    #[prost(uint64, optional, tag = "8")]
16890    pub skaddr: ::core::option::Option<u64>,
16891    #[prost(uint32, optional, tag = "9")]
16892    pub sport: ::core::option::Option<u32>,
16893}
16894#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16895pub struct SyncPtFtraceEvent {
16896    #[prost(string, optional, tag = "1")]
16897    pub timeline: ::core::option::Option<::prost::alloc::string::String>,
16898    #[prost(string, optional, tag = "2")]
16899    pub value: ::core::option::Option<::prost::alloc::string::String>,
16900}
16901#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16902pub struct SyncTimelineFtraceEvent {
16903    #[prost(string, optional, tag = "1")]
16904    pub name: ::core::option::Option<::prost::alloc::string::String>,
16905    #[prost(string, optional, tag = "2")]
16906    pub value: ::core::option::Option<::prost::alloc::string::String>,
16907}
16908#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16909pub struct SyncWaitFtraceEvent {
16910    #[prost(string, optional, tag = "1")]
16911    pub name: ::core::option::Option<::prost::alloc::string::String>,
16912    #[prost(int32, optional, tag = "2")]
16913    pub status: ::core::option::Option<i32>,
16914    #[prost(uint32, optional, tag = "3")]
16915    pub begin: ::core::option::Option<u32>,
16916}
16917#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16918pub struct RssStatThrottledFtraceEvent {
16919    #[prost(uint32, optional, tag = "1")]
16920    pub curr: ::core::option::Option<u32>,
16921    #[prost(int32, optional, tag = "2")]
16922    pub member: ::core::option::Option<i32>,
16923    #[prost(uint32, optional, tag = "3")]
16924    pub mm_id: ::core::option::Option<u32>,
16925    #[prost(int64, optional, tag = "4")]
16926    pub size: ::core::option::Option<i64>,
16927}
16928#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16929pub struct SuspendResumeMinimalFtraceEvent {
16930    #[prost(uint32, optional, tag = "1")]
16931    pub start: ::core::option::Option<u32>,
16932}
16933#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16934pub struct ZeroFtraceEvent {
16935    #[prost(int32, optional, tag = "1")]
16936    pub flag: ::core::option::Option<i32>,
16937    #[prost(string, optional, tag = "2")]
16938    pub name: ::core::option::Option<::prost::alloc::string::String>,
16939    #[prost(int32, optional, tag = "3")]
16940    pub pid: ::core::option::Option<i32>,
16941    #[prost(int64, optional, tag = "4")]
16942    pub value: ::core::option::Option<i64>,
16943}
16944#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16945pub struct TaskNewtaskFtraceEvent {
16946    #[prost(int32, optional, tag = "1")]
16947    pub pid: ::core::option::Option<i32>,
16948    #[prost(string, optional, tag = "2")]
16949    pub comm: ::core::option::Option<::prost::alloc::string::String>,
16950    #[prost(uint64, optional, tag = "3")]
16951    pub clone_flags: ::core::option::Option<u64>,
16952    #[prost(int32, optional, tag = "4")]
16953    pub oom_score_adj: ::core::option::Option<i32>,
16954}
16955#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16956pub struct TaskRenameFtraceEvent {
16957    #[prost(int32, optional, tag = "1")]
16958    pub pid: ::core::option::Option<i32>,
16959    #[prost(string, optional, tag = "2")]
16960    pub oldcomm: ::core::option::Option<::prost::alloc::string::String>,
16961    #[prost(string, optional, tag = "3")]
16962    pub newcomm: ::core::option::Option<::prost::alloc::string::String>,
16963    #[prost(int32, optional, tag = "4")]
16964    pub oom_score_adj: ::core::option::Option<i32>,
16965}
16966#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16967pub struct TcpRetransmitSkbFtraceEvent {
16968    #[prost(uint32, optional, tag = "1")]
16969    pub daddr: ::core::option::Option<u32>,
16970    #[prost(uint32, optional, tag = "2")]
16971    pub dport: ::core::option::Option<u32>,
16972    #[prost(uint32, optional, tag = "3")]
16973    pub saddr: ::core::option::Option<u32>,
16974    #[prost(uint64, optional, tag = "4")]
16975    pub skaddr: ::core::option::Option<u64>,
16976    #[prost(uint64, optional, tag = "5")]
16977    pub skbaddr: ::core::option::Option<u64>,
16978    #[prost(uint32, optional, tag = "6")]
16979    pub sport: ::core::option::Option<u32>,
16980    #[prost(int32, optional, tag = "7")]
16981    pub state: ::core::option::Option<i32>,
16982}
16983#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16984pub struct ThermalTemperatureFtraceEvent {
16985    #[prost(int32, optional, tag = "1")]
16986    pub id: ::core::option::Option<i32>,
16987    #[prost(int32, optional, tag = "2")]
16988    pub temp: ::core::option::Option<i32>,
16989    #[prost(int32, optional, tag = "3")]
16990    pub temp_prev: ::core::option::Option<i32>,
16991    #[prost(string, optional, tag = "4")]
16992    pub thermal_zone: ::core::option::Option<::prost::alloc::string::String>,
16993}
16994#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16995pub struct CdevUpdateFtraceEvent {
16996    #[prost(uint64, optional, tag = "1")]
16997    pub target: ::core::option::Option<u64>,
16998    #[prost(string, optional, tag = "2")]
16999    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
17000}
17001#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17002pub struct ThermalExynosAcpmBulkFtraceEvent {
17003    #[prost(uint32, optional, tag = "1")]
17004    pub tz_id: ::core::option::Option<u32>,
17005    #[prost(uint32, optional, tag = "2")]
17006    pub current_temp: ::core::option::Option<u32>,
17007    #[prost(uint32, optional, tag = "3")]
17008    pub ctrl_temp: ::core::option::Option<u32>,
17009    #[prost(uint32, optional, tag = "4")]
17010    pub cdev_state: ::core::option::Option<u32>,
17011    #[prost(int32, optional, tag = "5")]
17012    pub pid_et_p: ::core::option::Option<i32>,
17013    #[prost(int32, optional, tag = "6")]
17014    pub pid_power_range: ::core::option::Option<i32>,
17015    #[prost(int32, optional, tag = "7")]
17016    pub pid_p: ::core::option::Option<i32>,
17017    #[prost(int32, optional, tag = "8")]
17018    pub pid_i: ::core::option::Option<i32>,
17019    #[prost(int32, optional, tag = "9")]
17020    pub k_p: ::core::option::Option<i32>,
17021    #[prost(int32, optional, tag = "10")]
17022    pub k_i: ::core::option::Option<i32>,
17023    #[prost(uint64, optional, tag = "11")]
17024    pub timestamp: ::core::option::Option<u64>,
17025}
17026#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17027pub struct ThermalExynosAcpmHighOverheadFtraceEvent {
17028    #[prost(int32, optional, tag = "1")]
17029    pub tz_id: ::core::option::Option<i32>,
17030    #[prost(uint32, optional, tag = "2")]
17031    pub current_temp: ::core::option::Option<u32>,
17032    #[prost(uint32, optional, tag = "3")]
17033    pub ctrl_temp: ::core::option::Option<u32>,
17034    #[prost(uint32, optional, tag = "4")]
17035    pub cdev_state: ::core::option::Option<u32>,
17036    #[prost(int32, optional, tag = "5")]
17037    pub pid_et_p: ::core::option::Option<i32>,
17038    #[prost(int32, optional, tag = "6")]
17039    pub k_p: ::core::option::Option<i32>,
17040    #[prost(int32, optional, tag = "7")]
17041    pub k_i: ::core::option::Option<i32>,
17042}
17043#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17044pub struct HrtimerStartFtraceEvent {
17045    #[prost(uint64, optional, tag = "1")]
17046    pub hrtimer: ::core::option::Option<u64>,
17047    #[prost(uint64, optional, tag = "2")]
17048    pub function: ::core::option::Option<u64>,
17049    #[prost(int64, optional, tag = "3")]
17050    pub expires: ::core::option::Option<i64>,
17051    #[prost(int64, optional, tag = "4")]
17052    pub softexpires: ::core::option::Option<i64>,
17053    #[prost(uint32, optional, tag = "5")]
17054    pub mode: ::core::option::Option<u32>,
17055}
17056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17057pub struct HrtimerCancelFtraceEvent {
17058    #[prost(uint64, optional, tag = "1")]
17059    pub hrtimer: ::core::option::Option<u64>,
17060}
17061#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17062pub struct HrtimerExpireEntryFtraceEvent {
17063    #[prost(uint64, optional, tag = "1")]
17064    pub hrtimer: ::core::option::Option<u64>,
17065    #[prost(int64, optional, tag = "2")]
17066    pub now: ::core::option::Option<i64>,
17067    #[prost(uint64, optional, tag = "3")]
17068    pub function: ::core::option::Option<u64>,
17069}
17070#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17071pub struct HrtimerExpireExitFtraceEvent {
17072    #[prost(uint64, optional, tag = "1")]
17073    pub hrtimer: ::core::option::Option<u64>,
17074}
17075#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17076pub struct TimerStartFtraceEvent {
17077    #[prost(uint64, optional, tag = "1")]
17078    pub timer: ::core::option::Option<u64>,
17079    #[prost(uint64, optional, tag = "2")]
17080    pub function: ::core::option::Option<u64>,
17081    #[prost(uint64, optional, tag = "3")]
17082    pub expires: ::core::option::Option<u64>,
17083    #[prost(uint64, optional, tag = "4")]
17084    pub now: ::core::option::Option<u64>,
17085    #[prost(uint32, optional, tag = "5")]
17086    pub deferrable: ::core::option::Option<u32>,
17087    #[prost(uint32, optional, tag = "6")]
17088    pub flags: ::core::option::Option<u32>,
17089    #[prost(uint64, optional, tag = "7")]
17090    pub bucket_expiry: ::core::option::Option<u64>,
17091}
17092#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17093pub struct TimerCancelFtraceEvent {
17094    #[prost(uint64, optional, tag = "1")]
17095    pub timer: ::core::option::Option<u64>,
17096}
17097#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17098pub struct TimerExpireEntryFtraceEvent {
17099    #[prost(uint64, optional, tag = "1")]
17100    pub timer: ::core::option::Option<u64>,
17101    #[prost(uint64, optional, tag = "2")]
17102    pub now: ::core::option::Option<u64>,
17103    #[prost(uint64, optional, tag = "3")]
17104    pub function: ::core::option::Option<u64>,
17105    #[prost(uint64, optional, tag = "4")]
17106    pub baseclk: ::core::option::Option<u64>,
17107}
17108#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17109pub struct TimerExpireExitFtraceEvent {
17110    #[prost(uint64, optional, tag = "1")]
17111    pub timer: ::core::option::Option<u64>,
17112}
17113#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17114pub struct TrustySmcFtraceEvent {
17115    #[prost(uint64, optional, tag = "1")]
17116    pub r0: ::core::option::Option<u64>,
17117    #[prost(uint64, optional, tag = "2")]
17118    pub r1: ::core::option::Option<u64>,
17119    #[prost(uint64, optional, tag = "3")]
17120    pub r2: ::core::option::Option<u64>,
17121    #[prost(uint64, optional, tag = "4")]
17122    pub r3: ::core::option::Option<u64>,
17123}
17124#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17125pub struct TrustySmcDoneFtraceEvent {
17126    #[prost(uint64, optional, tag = "1")]
17127    pub ret: ::core::option::Option<u64>,
17128}
17129#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17130pub struct TrustyStdCall32FtraceEvent {
17131    #[prost(uint64, optional, tag = "1")]
17132    pub r0: ::core::option::Option<u64>,
17133    #[prost(uint64, optional, tag = "2")]
17134    pub r1: ::core::option::Option<u64>,
17135    #[prost(uint64, optional, tag = "3")]
17136    pub r2: ::core::option::Option<u64>,
17137    #[prost(uint64, optional, tag = "4")]
17138    pub r3: ::core::option::Option<u64>,
17139}
17140#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17141pub struct TrustyStdCall32DoneFtraceEvent {
17142    #[prost(int64, optional, tag = "1")]
17143    pub ret: ::core::option::Option<i64>,
17144}
17145#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17146pub struct TrustyShareMemoryFtraceEvent {
17147    #[prost(uint64, optional, tag = "1")]
17148    pub len: ::core::option::Option<u64>,
17149    #[prost(uint32, optional, tag = "2")]
17150    pub lend: ::core::option::Option<u32>,
17151    #[prost(uint32, optional, tag = "3")]
17152    pub nents: ::core::option::Option<u32>,
17153}
17154#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17155pub struct TrustyShareMemoryDoneFtraceEvent {
17156    #[prost(uint64, optional, tag = "1")]
17157    pub handle: ::core::option::Option<u64>,
17158    #[prost(uint64, optional, tag = "2")]
17159    pub len: ::core::option::Option<u64>,
17160    #[prost(uint32, optional, tag = "3")]
17161    pub lend: ::core::option::Option<u32>,
17162    #[prost(uint32, optional, tag = "4")]
17163    pub nents: ::core::option::Option<u32>,
17164    #[prost(int32, optional, tag = "5")]
17165    pub ret: ::core::option::Option<i32>,
17166}
17167#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17168pub struct TrustyReclaimMemoryFtraceEvent {
17169    #[prost(uint64, optional, tag = "1")]
17170    pub id: ::core::option::Option<u64>,
17171}
17172#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17173pub struct TrustyReclaimMemoryDoneFtraceEvent {
17174    #[prost(uint64, optional, tag = "1")]
17175    pub id: ::core::option::Option<u64>,
17176    #[prost(int32, optional, tag = "2")]
17177    pub ret: ::core::option::Option<i32>,
17178}
17179#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17180pub struct TrustyIrqFtraceEvent {
17181    #[prost(int32, optional, tag = "1")]
17182    pub irq: ::core::option::Option<i32>,
17183}
17184#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17185pub struct TrustyIpcHandleEventFtraceEvent {
17186    #[prost(uint32, optional, tag = "1")]
17187    pub chan: ::core::option::Option<u32>,
17188    #[prost(uint32, optional, tag = "2")]
17189    pub event_id: ::core::option::Option<u32>,
17190    #[prost(string, optional, tag = "3")]
17191    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17192}
17193#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17194pub struct TrustyIpcConnectFtraceEvent {
17195    #[prost(uint32, optional, tag = "1")]
17196    pub chan: ::core::option::Option<u32>,
17197    #[prost(string, optional, tag = "2")]
17198    pub port: ::core::option::Option<::prost::alloc::string::String>,
17199    #[prost(int32, optional, tag = "3")]
17200    pub state: ::core::option::Option<i32>,
17201}
17202#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17203pub struct TrustyIpcConnectEndFtraceEvent {
17204    #[prost(uint32, optional, tag = "1")]
17205    pub chan: ::core::option::Option<u32>,
17206    #[prost(int32, optional, tag = "2")]
17207    pub err: ::core::option::Option<i32>,
17208    #[prost(int32, optional, tag = "3")]
17209    pub state: ::core::option::Option<i32>,
17210}
17211#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17212pub struct TrustyIpcWriteFtraceEvent {
17213    #[prost(uint64, optional, tag = "1")]
17214    pub buf_id: ::core::option::Option<u64>,
17215    #[prost(uint32, optional, tag = "2")]
17216    pub chan: ::core::option::Option<u32>,
17217    #[prost(int32, optional, tag = "3")]
17218    pub kind_shm: ::core::option::Option<i32>,
17219    #[prost(int32, optional, tag = "4")]
17220    pub len_or_err: ::core::option::Option<i32>,
17221    #[prost(uint64, optional, tag = "5")]
17222    pub shm_cnt: ::core::option::Option<u64>,
17223    #[prost(string, optional, tag = "6")]
17224    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17225}
17226#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17227pub struct TrustyIpcPollFtraceEvent {
17228    #[prost(uint32, optional, tag = "1")]
17229    pub chan: ::core::option::Option<u32>,
17230    #[prost(uint32, optional, tag = "2")]
17231    pub poll_mask: ::core::option::Option<u32>,
17232    #[prost(string, optional, tag = "3")]
17233    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17234}
17235#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17236pub struct TrustyIpcReadFtraceEvent {
17237    #[prost(uint32, optional, tag = "1")]
17238    pub chan: ::core::option::Option<u32>,
17239    #[prost(string, optional, tag = "2")]
17240    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17241}
17242#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17243pub struct TrustyIpcReadEndFtraceEvent {
17244    #[prost(uint64, optional, tag = "1")]
17245    pub buf_id: ::core::option::Option<u64>,
17246    #[prost(uint32, optional, tag = "2")]
17247    pub chan: ::core::option::Option<u32>,
17248    #[prost(int32, optional, tag = "3")]
17249    pub len_or_err: ::core::option::Option<i32>,
17250    #[prost(uint64, optional, tag = "4")]
17251    pub shm_cnt: ::core::option::Option<u64>,
17252    #[prost(string, optional, tag = "5")]
17253    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17254}
17255#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17256pub struct TrustyIpcRxFtraceEvent {
17257    #[prost(uint64, optional, tag = "1")]
17258    pub buf_id: ::core::option::Option<u64>,
17259    #[prost(uint32, optional, tag = "2")]
17260    pub chan: ::core::option::Option<u32>,
17261    #[prost(string, optional, tag = "3")]
17262    pub srv_name: ::core::option::Option<::prost::alloc::string::String>,
17263}
17264#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17265pub struct TrustyEnqueueNopFtraceEvent {
17266    #[prost(uint32, optional, tag = "1")]
17267    pub arg1: ::core::option::Option<u32>,
17268    #[prost(uint32, optional, tag = "2")]
17269    pub arg2: ::core::option::Option<u32>,
17270    #[prost(uint32, optional, tag = "3")]
17271    pub arg3: ::core::option::Option<u32>,
17272}
17273#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17274pub struct UfshcdCommandFtraceEvent {
17275    #[prost(string, optional, tag = "1")]
17276    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
17277    #[prost(uint32, optional, tag = "2")]
17278    pub doorbell: ::core::option::Option<u32>,
17279    #[prost(uint32, optional, tag = "3")]
17280    pub intr: ::core::option::Option<u32>,
17281    #[prost(uint64, optional, tag = "4")]
17282    pub lba: ::core::option::Option<u64>,
17283    #[prost(uint32, optional, tag = "5")]
17284    pub opcode: ::core::option::Option<u32>,
17285    #[prost(string, optional, tag = "6")]
17286    pub str: ::core::option::Option<::prost::alloc::string::String>,
17287    #[prost(uint32, optional, tag = "7")]
17288    pub tag: ::core::option::Option<u32>,
17289    #[prost(int32, optional, tag = "8")]
17290    pub transfer_len: ::core::option::Option<i32>,
17291    #[prost(uint32, optional, tag = "9")]
17292    pub group_id: ::core::option::Option<u32>,
17293    #[prost(uint32, optional, tag = "10")]
17294    pub str_t: ::core::option::Option<u32>,
17295}
17296#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17297pub struct UfshcdClkGatingFtraceEvent {
17298    #[prost(string, optional, tag = "1")]
17299    pub dev_name: ::core::option::Option<::prost::alloc::string::String>,
17300    #[prost(int32, optional, tag = "2")]
17301    pub state: ::core::option::Option<i32>,
17302}
17303#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17304pub struct V4l2QbufFtraceEvent {
17305    #[prost(uint32, optional, tag = "1")]
17306    pub bytesused: ::core::option::Option<u32>,
17307    #[prost(uint32, optional, tag = "2")]
17308    pub field: ::core::option::Option<u32>,
17309    #[prost(uint32, optional, tag = "3")]
17310    pub flags: ::core::option::Option<u32>,
17311    #[prost(uint32, optional, tag = "4")]
17312    pub index: ::core::option::Option<u32>,
17313    #[prost(int32, optional, tag = "5")]
17314    pub minor: ::core::option::Option<i32>,
17315    #[prost(uint32, optional, tag = "6")]
17316    pub sequence: ::core::option::Option<u32>,
17317    #[prost(uint32, optional, tag = "7")]
17318    pub timecode_flags: ::core::option::Option<u32>,
17319    #[prost(uint32, optional, tag = "8")]
17320    pub timecode_frames: ::core::option::Option<u32>,
17321    #[prost(uint32, optional, tag = "9")]
17322    pub timecode_hours: ::core::option::Option<u32>,
17323    #[prost(uint32, optional, tag = "10")]
17324    pub timecode_minutes: ::core::option::Option<u32>,
17325    #[prost(uint32, optional, tag = "11")]
17326    pub timecode_seconds: ::core::option::Option<u32>,
17327    #[prost(uint32, optional, tag = "12")]
17328    pub timecode_type: ::core::option::Option<u32>,
17329    #[prost(uint32, optional, tag = "13")]
17330    pub timecode_userbits0: ::core::option::Option<u32>,
17331    #[prost(uint32, optional, tag = "14")]
17332    pub timecode_userbits1: ::core::option::Option<u32>,
17333    #[prost(uint32, optional, tag = "15")]
17334    pub timecode_userbits2: ::core::option::Option<u32>,
17335    #[prost(uint32, optional, tag = "16")]
17336    pub timecode_userbits3: ::core::option::Option<u32>,
17337    #[prost(int64, optional, tag = "17")]
17338    pub timestamp: ::core::option::Option<i64>,
17339    #[prost(uint32, optional, tag = "18")]
17340    pub r#type: ::core::option::Option<u32>,
17341}
17342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17343pub struct V4l2DqbufFtraceEvent {
17344    #[prost(uint32, optional, tag = "1")]
17345    pub bytesused: ::core::option::Option<u32>,
17346    #[prost(uint32, optional, tag = "2")]
17347    pub field: ::core::option::Option<u32>,
17348    #[prost(uint32, optional, tag = "3")]
17349    pub flags: ::core::option::Option<u32>,
17350    #[prost(uint32, optional, tag = "4")]
17351    pub index: ::core::option::Option<u32>,
17352    #[prost(int32, optional, tag = "5")]
17353    pub minor: ::core::option::Option<i32>,
17354    #[prost(uint32, optional, tag = "6")]
17355    pub sequence: ::core::option::Option<u32>,
17356    #[prost(uint32, optional, tag = "7")]
17357    pub timecode_flags: ::core::option::Option<u32>,
17358    #[prost(uint32, optional, tag = "8")]
17359    pub timecode_frames: ::core::option::Option<u32>,
17360    #[prost(uint32, optional, tag = "9")]
17361    pub timecode_hours: ::core::option::Option<u32>,
17362    #[prost(uint32, optional, tag = "10")]
17363    pub timecode_minutes: ::core::option::Option<u32>,
17364    #[prost(uint32, optional, tag = "11")]
17365    pub timecode_seconds: ::core::option::Option<u32>,
17366    #[prost(uint32, optional, tag = "12")]
17367    pub timecode_type: ::core::option::Option<u32>,
17368    #[prost(uint32, optional, tag = "13")]
17369    pub timecode_userbits0: ::core::option::Option<u32>,
17370    #[prost(uint32, optional, tag = "14")]
17371    pub timecode_userbits1: ::core::option::Option<u32>,
17372    #[prost(uint32, optional, tag = "15")]
17373    pub timecode_userbits2: ::core::option::Option<u32>,
17374    #[prost(uint32, optional, tag = "16")]
17375    pub timecode_userbits3: ::core::option::Option<u32>,
17376    #[prost(int64, optional, tag = "17")]
17377    pub timestamp: ::core::option::Option<i64>,
17378    #[prost(uint32, optional, tag = "18")]
17379    pub r#type: ::core::option::Option<u32>,
17380}
17381#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17382pub struct Vb2V4l2BufQueueFtraceEvent {
17383    #[prost(uint32, optional, tag = "1")]
17384    pub field: ::core::option::Option<u32>,
17385    #[prost(uint32, optional, tag = "2")]
17386    pub flags: ::core::option::Option<u32>,
17387    #[prost(int32, optional, tag = "3")]
17388    pub minor: ::core::option::Option<i32>,
17389    #[prost(uint32, optional, tag = "4")]
17390    pub sequence: ::core::option::Option<u32>,
17391    #[prost(uint32, optional, tag = "5")]
17392    pub timecode_flags: ::core::option::Option<u32>,
17393    #[prost(uint32, optional, tag = "6")]
17394    pub timecode_frames: ::core::option::Option<u32>,
17395    #[prost(uint32, optional, tag = "7")]
17396    pub timecode_hours: ::core::option::Option<u32>,
17397    #[prost(uint32, optional, tag = "8")]
17398    pub timecode_minutes: ::core::option::Option<u32>,
17399    #[prost(uint32, optional, tag = "9")]
17400    pub timecode_seconds: ::core::option::Option<u32>,
17401    #[prost(uint32, optional, tag = "10")]
17402    pub timecode_type: ::core::option::Option<u32>,
17403    #[prost(uint32, optional, tag = "11")]
17404    pub timecode_userbits0: ::core::option::Option<u32>,
17405    #[prost(uint32, optional, tag = "12")]
17406    pub timecode_userbits1: ::core::option::Option<u32>,
17407    #[prost(uint32, optional, tag = "13")]
17408    pub timecode_userbits2: ::core::option::Option<u32>,
17409    #[prost(uint32, optional, tag = "14")]
17410    pub timecode_userbits3: ::core::option::Option<u32>,
17411    #[prost(int64, optional, tag = "15")]
17412    pub timestamp: ::core::option::Option<i64>,
17413}
17414#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17415pub struct Vb2V4l2BufDoneFtraceEvent {
17416    #[prost(uint32, optional, tag = "1")]
17417    pub field: ::core::option::Option<u32>,
17418    #[prost(uint32, optional, tag = "2")]
17419    pub flags: ::core::option::Option<u32>,
17420    #[prost(int32, optional, tag = "3")]
17421    pub minor: ::core::option::Option<i32>,
17422    #[prost(uint32, optional, tag = "4")]
17423    pub sequence: ::core::option::Option<u32>,
17424    #[prost(uint32, optional, tag = "5")]
17425    pub timecode_flags: ::core::option::Option<u32>,
17426    #[prost(uint32, optional, tag = "6")]
17427    pub timecode_frames: ::core::option::Option<u32>,
17428    #[prost(uint32, optional, tag = "7")]
17429    pub timecode_hours: ::core::option::Option<u32>,
17430    #[prost(uint32, optional, tag = "8")]
17431    pub timecode_minutes: ::core::option::Option<u32>,
17432    #[prost(uint32, optional, tag = "9")]
17433    pub timecode_seconds: ::core::option::Option<u32>,
17434    #[prost(uint32, optional, tag = "10")]
17435    pub timecode_type: ::core::option::Option<u32>,
17436    #[prost(uint32, optional, tag = "11")]
17437    pub timecode_userbits0: ::core::option::Option<u32>,
17438    #[prost(uint32, optional, tag = "12")]
17439    pub timecode_userbits1: ::core::option::Option<u32>,
17440    #[prost(uint32, optional, tag = "13")]
17441    pub timecode_userbits2: ::core::option::Option<u32>,
17442    #[prost(uint32, optional, tag = "14")]
17443    pub timecode_userbits3: ::core::option::Option<u32>,
17444    #[prost(int64, optional, tag = "15")]
17445    pub timestamp: ::core::option::Option<i64>,
17446}
17447#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17448pub struct Vb2V4l2QbufFtraceEvent {
17449    #[prost(uint32, optional, tag = "1")]
17450    pub field: ::core::option::Option<u32>,
17451    #[prost(uint32, optional, tag = "2")]
17452    pub flags: ::core::option::Option<u32>,
17453    #[prost(int32, optional, tag = "3")]
17454    pub minor: ::core::option::Option<i32>,
17455    #[prost(uint32, optional, tag = "4")]
17456    pub sequence: ::core::option::Option<u32>,
17457    #[prost(uint32, optional, tag = "5")]
17458    pub timecode_flags: ::core::option::Option<u32>,
17459    #[prost(uint32, optional, tag = "6")]
17460    pub timecode_frames: ::core::option::Option<u32>,
17461    #[prost(uint32, optional, tag = "7")]
17462    pub timecode_hours: ::core::option::Option<u32>,
17463    #[prost(uint32, optional, tag = "8")]
17464    pub timecode_minutes: ::core::option::Option<u32>,
17465    #[prost(uint32, optional, tag = "9")]
17466    pub timecode_seconds: ::core::option::Option<u32>,
17467    #[prost(uint32, optional, tag = "10")]
17468    pub timecode_type: ::core::option::Option<u32>,
17469    #[prost(uint32, optional, tag = "11")]
17470    pub timecode_userbits0: ::core::option::Option<u32>,
17471    #[prost(uint32, optional, tag = "12")]
17472    pub timecode_userbits1: ::core::option::Option<u32>,
17473    #[prost(uint32, optional, tag = "13")]
17474    pub timecode_userbits2: ::core::option::Option<u32>,
17475    #[prost(uint32, optional, tag = "14")]
17476    pub timecode_userbits3: ::core::option::Option<u32>,
17477    #[prost(int64, optional, tag = "15")]
17478    pub timestamp: ::core::option::Option<i64>,
17479}
17480#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17481pub struct Vb2V4l2DqbufFtraceEvent {
17482    #[prost(uint32, optional, tag = "1")]
17483    pub field: ::core::option::Option<u32>,
17484    #[prost(uint32, optional, tag = "2")]
17485    pub flags: ::core::option::Option<u32>,
17486    #[prost(int32, optional, tag = "3")]
17487    pub minor: ::core::option::Option<i32>,
17488    #[prost(uint32, optional, tag = "4")]
17489    pub sequence: ::core::option::Option<u32>,
17490    #[prost(uint32, optional, tag = "5")]
17491    pub timecode_flags: ::core::option::Option<u32>,
17492    #[prost(uint32, optional, tag = "6")]
17493    pub timecode_frames: ::core::option::Option<u32>,
17494    #[prost(uint32, optional, tag = "7")]
17495    pub timecode_hours: ::core::option::Option<u32>,
17496    #[prost(uint32, optional, tag = "8")]
17497    pub timecode_minutes: ::core::option::Option<u32>,
17498    #[prost(uint32, optional, tag = "9")]
17499    pub timecode_seconds: ::core::option::Option<u32>,
17500    #[prost(uint32, optional, tag = "10")]
17501    pub timecode_type: ::core::option::Option<u32>,
17502    #[prost(uint32, optional, tag = "11")]
17503    pub timecode_userbits0: ::core::option::Option<u32>,
17504    #[prost(uint32, optional, tag = "12")]
17505    pub timecode_userbits1: ::core::option::Option<u32>,
17506    #[prost(uint32, optional, tag = "13")]
17507    pub timecode_userbits2: ::core::option::Option<u32>,
17508    #[prost(uint32, optional, tag = "14")]
17509    pub timecode_userbits3: ::core::option::Option<u32>,
17510    #[prost(int64, optional, tag = "15")]
17511    pub timestamp: ::core::option::Option<i64>,
17512}
17513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17514pub struct VirtioGpuCmdQueueFtraceEvent {
17515    #[prost(uint32, optional, tag = "1")]
17516    pub ctx_id: ::core::option::Option<u32>,
17517    #[prost(int32, optional, tag = "2")]
17518    pub dev: ::core::option::Option<i32>,
17519    #[prost(uint64, optional, tag = "3")]
17520    pub fence_id: ::core::option::Option<u64>,
17521    #[prost(uint32, optional, tag = "4")]
17522    pub flags: ::core::option::Option<u32>,
17523    #[prost(string, optional, tag = "5")]
17524    pub name: ::core::option::Option<::prost::alloc::string::String>,
17525    #[prost(uint32, optional, tag = "6")]
17526    pub num_free: ::core::option::Option<u32>,
17527    #[prost(uint32, optional, tag = "7")]
17528    pub seqno: ::core::option::Option<u32>,
17529    #[prost(uint32, optional, tag = "8")]
17530    pub r#type: ::core::option::Option<u32>,
17531    #[prost(uint32, optional, tag = "9")]
17532    pub vq: ::core::option::Option<u32>,
17533}
17534#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17535pub struct VirtioGpuCmdResponseFtraceEvent {
17536    #[prost(uint32, optional, tag = "1")]
17537    pub ctx_id: ::core::option::Option<u32>,
17538    #[prost(int32, optional, tag = "2")]
17539    pub dev: ::core::option::Option<i32>,
17540    #[prost(uint64, optional, tag = "3")]
17541    pub fence_id: ::core::option::Option<u64>,
17542    #[prost(uint32, optional, tag = "4")]
17543    pub flags: ::core::option::Option<u32>,
17544    #[prost(string, optional, tag = "5")]
17545    pub name: ::core::option::Option<::prost::alloc::string::String>,
17546    #[prost(uint32, optional, tag = "6")]
17547    pub num_free: ::core::option::Option<u32>,
17548    #[prost(uint32, optional, tag = "7")]
17549    pub seqno: ::core::option::Option<u32>,
17550    #[prost(uint32, optional, tag = "8")]
17551    pub r#type: ::core::option::Option<u32>,
17552    #[prost(uint32, optional, tag = "9")]
17553    pub vq: ::core::option::Option<u32>,
17554}
17555#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17556pub struct VirtioVideoCmdFtraceEvent {
17557    #[prost(uint32, optional, tag = "1")]
17558    pub stream_id: ::core::option::Option<u32>,
17559    #[prost(uint32, optional, tag = "2")]
17560    pub r#type: ::core::option::Option<u32>,
17561}
17562#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17563pub struct VirtioVideoCmdDoneFtraceEvent {
17564    #[prost(uint32, optional, tag = "1")]
17565    pub stream_id: ::core::option::Option<u32>,
17566    #[prost(uint32, optional, tag = "2")]
17567    pub r#type: ::core::option::Option<u32>,
17568}
17569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17570pub struct VirtioVideoResourceQueueFtraceEvent {
17571    #[prost(uint32, optional, tag = "1")]
17572    pub data_size0: ::core::option::Option<u32>,
17573    #[prost(uint32, optional, tag = "2")]
17574    pub data_size1: ::core::option::Option<u32>,
17575    #[prost(uint32, optional, tag = "3")]
17576    pub data_size2: ::core::option::Option<u32>,
17577    #[prost(uint32, optional, tag = "4")]
17578    pub data_size3: ::core::option::Option<u32>,
17579    #[prost(uint32, optional, tag = "5")]
17580    pub queue_type: ::core::option::Option<u32>,
17581    #[prost(int32, optional, tag = "6")]
17582    pub resource_id: ::core::option::Option<i32>,
17583    #[prost(int32, optional, tag = "7")]
17584    pub stream_id: ::core::option::Option<i32>,
17585    #[prost(uint64, optional, tag = "8")]
17586    pub timestamp: ::core::option::Option<u64>,
17587}
17588#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17589pub struct VirtioVideoResourceQueueDoneFtraceEvent {
17590    #[prost(uint32, optional, tag = "1")]
17591    pub data_size0: ::core::option::Option<u32>,
17592    #[prost(uint32, optional, tag = "2")]
17593    pub data_size1: ::core::option::Option<u32>,
17594    #[prost(uint32, optional, tag = "3")]
17595    pub data_size2: ::core::option::Option<u32>,
17596    #[prost(uint32, optional, tag = "4")]
17597    pub data_size3: ::core::option::Option<u32>,
17598    #[prost(uint32, optional, tag = "5")]
17599    pub queue_type: ::core::option::Option<u32>,
17600    #[prost(int32, optional, tag = "6")]
17601    pub resource_id: ::core::option::Option<i32>,
17602    #[prost(int32, optional, tag = "7")]
17603    pub stream_id: ::core::option::Option<i32>,
17604    #[prost(uint64, optional, tag = "8")]
17605    pub timestamp: ::core::option::Option<u64>,
17606}
17607#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17608pub struct MmVmscanDirectReclaimBeginFtraceEvent {
17609    #[prost(int32, optional, tag = "1")]
17610    pub order: ::core::option::Option<i32>,
17611    #[prost(int32, optional, tag = "2")]
17612    pub may_writepage: ::core::option::Option<i32>,
17613    #[prost(uint32, optional, tag = "3")]
17614    pub gfp_flags: ::core::option::Option<u32>,
17615}
17616#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17617pub struct MmVmscanDirectReclaimEndFtraceEvent {
17618    #[prost(uint64, optional, tag = "1")]
17619    pub nr_reclaimed: ::core::option::Option<u64>,
17620}
17621#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17622pub struct MmVmscanKswapdWakeFtraceEvent {
17623    #[prost(int32, optional, tag = "1")]
17624    pub nid: ::core::option::Option<i32>,
17625    #[prost(int32, optional, tag = "2")]
17626    pub order: ::core::option::Option<i32>,
17627    #[prost(int32, optional, tag = "3")]
17628    pub zid: ::core::option::Option<i32>,
17629}
17630#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17631pub struct MmVmscanKswapdSleepFtraceEvent {
17632    #[prost(int32, optional, tag = "1")]
17633    pub nid: ::core::option::Option<i32>,
17634}
17635#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17636pub struct MmShrinkSlabStartFtraceEvent {
17637    #[prost(uint64, optional, tag = "1")]
17638    pub cache_items: ::core::option::Option<u64>,
17639    #[prost(uint64, optional, tag = "2")]
17640    pub delta: ::core::option::Option<u64>,
17641    #[prost(uint32, optional, tag = "3")]
17642    pub gfp_flags: ::core::option::Option<u32>,
17643    #[prost(uint64, optional, tag = "4")]
17644    pub lru_pgs: ::core::option::Option<u64>,
17645    #[prost(int64, optional, tag = "5")]
17646    pub nr_objects_to_shrink: ::core::option::Option<i64>,
17647    #[prost(uint64, optional, tag = "6")]
17648    pub pgs_scanned: ::core::option::Option<u64>,
17649    #[prost(uint64, optional, tag = "7")]
17650    pub shr: ::core::option::Option<u64>,
17651    #[prost(uint64, optional, tag = "8")]
17652    pub shrink: ::core::option::Option<u64>,
17653    #[prost(uint64, optional, tag = "9")]
17654    pub total_scan: ::core::option::Option<u64>,
17655    #[prost(int32, optional, tag = "10")]
17656    pub nid: ::core::option::Option<i32>,
17657    #[prost(int32, optional, tag = "11")]
17658    pub priority: ::core::option::Option<i32>,
17659}
17660#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17661pub struct MmShrinkSlabEndFtraceEvent {
17662    #[prost(int64, optional, tag = "1")]
17663    pub new_scan: ::core::option::Option<i64>,
17664    #[prost(int32, optional, tag = "2")]
17665    pub retval: ::core::option::Option<i32>,
17666    #[prost(uint64, optional, tag = "3")]
17667    pub shr: ::core::option::Option<u64>,
17668    #[prost(uint64, optional, tag = "4")]
17669    pub shrink: ::core::option::Option<u64>,
17670    #[prost(int64, optional, tag = "5")]
17671    pub total_scan: ::core::option::Option<i64>,
17672    #[prost(int64, optional, tag = "6")]
17673    pub unused_scan: ::core::option::Option<i64>,
17674    #[prost(int32, optional, tag = "7")]
17675    pub nid: ::core::option::Option<i32>,
17676}
17677#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17678pub struct MmVmscanMemcgReclaimBeginFtraceEvent {
17679    #[prost(int32, optional, tag = "1")]
17680    pub order: ::core::option::Option<i32>,
17681    #[prost(int32, optional, tag = "2")]
17682    pub may_writepage: ::core::option::Option<i32>,
17683    #[prost(uint64, optional, tag = "3")]
17684    pub gfp_flags: ::core::option::Option<u64>,
17685}
17686#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17687pub struct MmVmscanMemcgReclaimEndFtraceEvent {
17688    #[prost(uint64, optional, tag = "1")]
17689    pub nr_reclaimed: ::core::option::Option<u64>,
17690}
17691#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17692pub struct WorkqueueActivateWorkFtraceEvent {
17693    #[prost(uint64, optional, tag = "1")]
17694    pub work: ::core::option::Option<u64>,
17695    #[prost(uint64, optional, tag = "2")]
17696    pub function: ::core::option::Option<u64>,
17697}
17698#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17699pub struct WorkqueueExecuteEndFtraceEvent {
17700    #[prost(uint64, optional, tag = "1")]
17701    pub work: ::core::option::Option<u64>,
17702    #[prost(uint64, optional, tag = "2")]
17703    pub function: ::core::option::Option<u64>,
17704}
17705#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17706pub struct WorkqueueExecuteStartFtraceEvent {
17707    #[prost(uint64, optional, tag = "1")]
17708    pub work: ::core::option::Option<u64>,
17709    #[prost(uint64, optional, tag = "2")]
17710    pub function: ::core::option::Option<u64>,
17711}
17712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17713pub struct WorkqueueQueueWorkFtraceEvent {
17714    #[prost(uint64, optional, tag = "1")]
17715    pub work: ::core::option::Option<u64>,
17716    #[prost(uint64, optional, tag = "2")]
17717    pub function: ::core::option::Option<u64>,
17718    #[prost(int32, optional, tag = "4")]
17719    pub req_cpu: ::core::option::Option<i32>,
17720    #[prost(int32, optional, tag = "5")]
17721    pub cpu: ::core::option::Option<i32>,
17722    #[prost(string, optional, tag = "6")]
17723    pub workqueue: ::core::option::Option<::prost::alloc::string::String>,
17724}
17725#[derive(Clone, PartialEq, ::prost::Message)]
17726pub struct FtraceEvent {
17727    /// Timestamp in nanoseconds using .../tracing/trace_clock.
17728    #[prost(uint64, optional, tag = "1")]
17729    pub timestamp: ::core::option::Option<u64>,
17730    /// Kernel pid (do not confuse with userspace pid aka tgid).
17731    #[prost(uint32, optional, tag = "2")]
17732    pub pid: ::core::option::Option<u32>,
17733    /// Not populated in actual traces. Wire format might change.
17734    /// Placeholder declaration so that the ftrace parsing code accepts the
17735    /// existence of this common field. If this becomes needed for all events:
17736    /// consider merging with common_preempt_count to avoid extra proto tags.
17737    #[prost(uint32, optional, tag = "5")]
17738    pub common_flags: ::core::option::Option<u32>,
17739    #[prost(
17740        oneof = "ftrace_event::Event",
17741        tags = "3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 460, 461, 462, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617"
17742    )]
17743    pub event: ::core::option::Option<ftrace_event::Event>,
17744}
17745/// Nested message and enum types in `FtraceEvent`.
17746pub mod ftrace_event {
17747    #[derive(Clone, PartialEq, ::prost::Oneof)]
17748    pub enum Event {
17749        #[prost(message, tag = "3")]
17750        Print(super::PrintFtraceEvent),
17751        #[prost(message, tag = "4")]
17752        SchedSwitch(super::SchedSwitchFtraceEvent),
17753        /// removed field with id 5;
17754        /// removed field with id 6;
17755        /// removed field with id 7;
17756        /// removed field with id 8;
17757        /// removed field with id 9;
17758        /// removed field with id 10;
17759        #[prost(message, tag = "11")]
17760        CpuFrequency(super::CpuFrequencyFtraceEvent),
17761        #[prost(message, tag = "12")]
17762        CpuFrequencyLimits(super::CpuFrequencyLimitsFtraceEvent),
17763        #[prost(message, tag = "13")]
17764        CpuIdle(super::CpuIdleFtraceEvent),
17765        #[prost(message, tag = "14")]
17766        ClockEnable(super::ClockEnableFtraceEvent),
17767        #[prost(message, tag = "15")]
17768        ClockDisable(super::ClockDisableFtraceEvent),
17769        #[prost(message, tag = "16")]
17770        ClockSetRate(super::ClockSetRateFtraceEvent),
17771        #[prost(message, tag = "17")]
17772        SchedWakeup(super::SchedWakeupFtraceEvent),
17773        #[prost(message, tag = "18")]
17774        SchedBlockedReason(super::SchedBlockedReasonFtraceEvent),
17775        #[prost(message, tag = "19")]
17776        SchedCpuHotplug(super::SchedCpuHotplugFtraceEvent),
17777        #[prost(message, tag = "20")]
17778        SchedWaking(super::SchedWakingFtraceEvent),
17779        #[prost(message, tag = "21")]
17780        IpiEntry(super::IpiEntryFtraceEvent),
17781        #[prost(message, tag = "22")]
17782        IpiExit(super::IpiExitFtraceEvent),
17783        #[prost(message, tag = "23")]
17784        IpiRaise(super::IpiRaiseFtraceEvent),
17785        #[prost(message, tag = "24")]
17786        SoftirqEntry(super::SoftirqEntryFtraceEvent),
17787        #[prost(message, tag = "25")]
17788        SoftirqExit(super::SoftirqExitFtraceEvent),
17789        #[prost(message, tag = "26")]
17790        SoftirqRaise(super::SoftirqRaiseFtraceEvent),
17791        #[prost(message, tag = "27")]
17792        I2cRead(super::I2cReadFtraceEvent),
17793        #[prost(message, tag = "28")]
17794        I2cWrite(super::I2cWriteFtraceEvent),
17795        #[prost(message, tag = "29")]
17796        I2cResult(super::I2cResultFtraceEvent),
17797        #[prost(message, tag = "30")]
17798        I2cReply(super::I2cReplyFtraceEvent),
17799        #[prost(message, tag = "31")]
17800        SmbusRead(super::SmbusReadFtraceEvent),
17801        #[prost(message, tag = "32")]
17802        SmbusWrite(super::SmbusWriteFtraceEvent),
17803        #[prost(message, tag = "33")]
17804        SmbusResult(super::SmbusResultFtraceEvent),
17805        #[prost(message, tag = "34")]
17806        SmbusReply(super::SmbusReplyFtraceEvent),
17807        #[prost(message, tag = "35")]
17808        LowmemoryKill(super::LowmemoryKillFtraceEvent),
17809        #[prost(message, tag = "36")]
17810        IrqHandlerEntry(super::IrqHandlerEntryFtraceEvent),
17811        #[prost(message, tag = "37")]
17812        IrqHandlerExit(super::IrqHandlerExitFtraceEvent),
17813        #[prost(message, tag = "38")]
17814        SyncPt(super::SyncPtFtraceEvent),
17815        #[prost(message, tag = "39")]
17816        SyncTimeline(super::SyncTimelineFtraceEvent),
17817        #[prost(message, tag = "40")]
17818        SyncWait(super::SyncWaitFtraceEvent),
17819        #[prost(message, tag = "41")]
17820        Ext4DaWriteBegin(super::Ext4DaWriteBeginFtraceEvent),
17821        #[prost(message, tag = "42")]
17822        Ext4DaWriteEnd(super::Ext4DaWriteEndFtraceEvent),
17823        #[prost(message, tag = "43")]
17824        Ext4SyncFileEnter(super::Ext4SyncFileEnterFtraceEvent),
17825        #[prost(message, tag = "44")]
17826        Ext4SyncFileExit(super::Ext4SyncFileExitFtraceEvent),
17827        #[prost(message, tag = "45")]
17828        BlockRqIssue(super::BlockRqIssueFtraceEvent),
17829        #[prost(message, tag = "46")]
17830        MmVmscanDirectReclaimBegin(super::MmVmscanDirectReclaimBeginFtraceEvent),
17831        #[prost(message, tag = "47")]
17832        MmVmscanDirectReclaimEnd(super::MmVmscanDirectReclaimEndFtraceEvent),
17833        #[prost(message, tag = "48")]
17834        MmVmscanKswapdWake(super::MmVmscanKswapdWakeFtraceEvent),
17835        #[prost(message, tag = "49")]
17836        MmVmscanKswapdSleep(super::MmVmscanKswapdSleepFtraceEvent),
17837        #[prost(message, tag = "50")]
17838        BinderTransaction(super::BinderTransactionFtraceEvent),
17839        #[prost(message, tag = "51")]
17840        BinderTransactionReceived(super::BinderTransactionReceivedFtraceEvent),
17841        #[prost(message, tag = "52")]
17842        BinderSetPriority(super::BinderSetPriorityFtraceEvent),
17843        #[prost(message, tag = "53")]
17844        BinderLock(super::BinderLockFtraceEvent),
17845        #[prost(message, tag = "54")]
17846        BinderLocked(super::BinderLockedFtraceEvent),
17847        #[prost(message, tag = "55")]
17848        BinderUnlock(super::BinderUnlockFtraceEvent),
17849        #[prost(message, tag = "56")]
17850        WorkqueueActivateWork(super::WorkqueueActivateWorkFtraceEvent),
17851        #[prost(message, tag = "57")]
17852        WorkqueueExecuteEnd(super::WorkqueueExecuteEndFtraceEvent),
17853        #[prost(message, tag = "58")]
17854        WorkqueueExecuteStart(super::WorkqueueExecuteStartFtraceEvent),
17855        #[prost(message, tag = "59")]
17856        WorkqueueQueueWork(super::WorkqueueQueueWorkFtraceEvent),
17857        #[prost(message, tag = "60")]
17858        RegulatorDisable(super::RegulatorDisableFtraceEvent),
17859        #[prost(message, tag = "61")]
17860        RegulatorDisableComplete(super::RegulatorDisableCompleteFtraceEvent),
17861        #[prost(message, tag = "62")]
17862        RegulatorEnable(super::RegulatorEnableFtraceEvent),
17863        #[prost(message, tag = "63")]
17864        RegulatorEnableComplete(super::RegulatorEnableCompleteFtraceEvent),
17865        #[prost(message, tag = "64")]
17866        RegulatorEnableDelay(super::RegulatorEnableDelayFtraceEvent),
17867        #[prost(message, tag = "65")]
17868        RegulatorSetVoltage(super::RegulatorSetVoltageFtraceEvent),
17869        #[prost(message, tag = "66")]
17870        RegulatorSetVoltageComplete(super::RegulatorSetVoltageCompleteFtraceEvent),
17871        #[prost(message, tag = "67")]
17872        CgroupAttachTask(super::CgroupAttachTaskFtraceEvent),
17873        #[prost(message, tag = "68")]
17874        CgroupMkdir(super::CgroupMkdirFtraceEvent),
17875        #[prost(message, tag = "69")]
17876        CgroupRemount(super::CgroupRemountFtraceEvent),
17877        #[prost(message, tag = "70")]
17878        CgroupRmdir(super::CgroupRmdirFtraceEvent),
17879        #[prost(message, tag = "71")]
17880        CgroupTransferTasks(super::CgroupTransferTasksFtraceEvent),
17881        #[prost(message, tag = "72")]
17882        CgroupDestroyRoot(super::CgroupDestroyRootFtraceEvent),
17883        #[prost(message, tag = "73")]
17884        CgroupRelease(super::CgroupReleaseFtraceEvent),
17885        #[prost(message, tag = "74")]
17886        CgroupRename(super::CgroupRenameFtraceEvent),
17887        #[prost(message, tag = "75")]
17888        CgroupSetupRoot(super::CgroupSetupRootFtraceEvent),
17889        #[prost(message, tag = "76")]
17890        MdpCmdKickoff(super::MdpCmdKickoffFtraceEvent),
17891        #[prost(message, tag = "77")]
17892        MdpCommit(super::MdpCommitFtraceEvent),
17893        #[prost(message, tag = "78")]
17894        MdpPerfSetOt(super::MdpPerfSetOtFtraceEvent),
17895        #[prost(message, tag = "79")]
17896        MdpSsppChange(super::MdpSsppChangeFtraceEvent),
17897        #[prost(message, tag = "80")]
17898        TracingMarkWrite(super::TracingMarkWriteFtraceEvent),
17899        #[prost(message, tag = "81")]
17900        MdpCmdPingpongDone(super::MdpCmdPingpongDoneFtraceEvent),
17901        #[prost(message, tag = "82")]
17902        MdpCompareBw(super::MdpCompareBwFtraceEvent),
17903        #[prost(message, tag = "83")]
17904        MdpPerfSetPanicLuts(super::MdpPerfSetPanicLutsFtraceEvent),
17905        #[prost(message, tag = "84")]
17906        MdpSsppSet(super::MdpSsppSetFtraceEvent),
17907        #[prost(message, tag = "85")]
17908        MdpCmdReadptrDone(super::MdpCmdReadptrDoneFtraceEvent),
17909        #[prost(message, tag = "86")]
17910        MdpMisrCrc(super::MdpMisrCrcFtraceEvent),
17911        #[prost(message, tag = "87")]
17912        MdpPerfSetQosLuts(super::MdpPerfSetQosLutsFtraceEvent),
17913        #[prost(message, tag = "88")]
17914        MdpTraceCounter(super::MdpTraceCounterFtraceEvent),
17915        #[prost(message, tag = "89")]
17916        MdpCmdReleaseBw(super::MdpCmdReleaseBwFtraceEvent),
17917        #[prost(message, tag = "90")]
17918        MdpMixerUpdate(super::MdpMixerUpdateFtraceEvent),
17919        #[prost(message, tag = "91")]
17920        MdpPerfSetWmLevels(super::MdpPerfSetWmLevelsFtraceEvent),
17921        #[prost(message, tag = "92")]
17922        MdpVideoUnderrunDone(super::MdpVideoUnderrunDoneFtraceEvent),
17923        #[prost(message, tag = "93")]
17924        MdpCmdWaitPingpong(super::MdpCmdWaitPingpongFtraceEvent),
17925        #[prost(message, tag = "94")]
17926        MdpPerfPrefillCalc(super::MdpPerfPrefillCalcFtraceEvent),
17927        #[prost(message, tag = "95")]
17928        MdpPerfUpdateBus(super::MdpPerfUpdateBusFtraceEvent),
17929        #[prost(message, tag = "96")]
17930        RotatorBwAoAsContext(super::RotatorBwAoAsContextFtraceEvent),
17931        #[prost(message, tag = "97")]
17932        MmFilemapAddToPageCache(super::MmFilemapAddToPageCacheFtraceEvent),
17933        #[prost(message, tag = "98")]
17934        MmFilemapDeleteFromPageCache(super::MmFilemapDeleteFromPageCacheFtraceEvent),
17935        #[prost(message, tag = "99")]
17936        MmCompactionBegin(super::MmCompactionBeginFtraceEvent),
17937        #[prost(message, tag = "100")]
17938        MmCompactionDeferCompaction(super::MmCompactionDeferCompactionFtraceEvent),
17939        #[prost(message, tag = "101")]
17940        MmCompactionDeferred(super::MmCompactionDeferredFtraceEvent),
17941        #[prost(message, tag = "102")]
17942        MmCompactionDeferReset(super::MmCompactionDeferResetFtraceEvent),
17943        #[prost(message, tag = "103")]
17944        MmCompactionEnd(super::MmCompactionEndFtraceEvent),
17945        #[prost(message, tag = "104")]
17946        MmCompactionFinished(super::MmCompactionFinishedFtraceEvent),
17947        #[prost(message, tag = "105")]
17948        MmCompactionIsolateFreepages(super::MmCompactionIsolateFreepagesFtraceEvent),
17949        #[prost(message, tag = "106")]
17950        MmCompactionIsolateMigratepages(
17951            super::MmCompactionIsolateMigratepagesFtraceEvent,
17952        ),
17953        #[prost(message, tag = "107")]
17954        MmCompactionKcompactdSleep(super::MmCompactionKcompactdSleepFtraceEvent),
17955        #[prost(message, tag = "108")]
17956        MmCompactionKcompactdWake(super::MmCompactionKcompactdWakeFtraceEvent),
17957        #[prost(message, tag = "109")]
17958        MmCompactionMigratepages(super::MmCompactionMigratepagesFtraceEvent),
17959        #[prost(message, tag = "110")]
17960        MmCompactionSuitable(super::MmCompactionSuitableFtraceEvent),
17961        #[prost(message, tag = "111")]
17962        MmCompactionTryToCompactPages(super::MmCompactionTryToCompactPagesFtraceEvent),
17963        #[prost(message, tag = "112")]
17964        MmCompactionWakeupKcompactd(super::MmCompactionWakeupKcompactdFtraceEvent),
17965        #[prost(message, tag = "113")]
17966        SuspendResume(super::SuspendResumeFtraceEvent),
17967        #[prost(message, tag = "114")]
17968        SchedWakeupNew(super::SchedWakeupNewFtraceEvent),
17969        #[prost(message, tag = "115")]
17970        BlockBioBackmerge(super::BlockBioBackmergeFtraceEvent),
17971        #[prost(message, tag = "116")]
17972        BlockBioBounce(super::BlockBioBounceFtraceEvent),
17973        #[prost(message, tag = "117")]
17974        BlockBioComplete(super::BlockBioCompleteFtraceEvent),
17975        #[prost(message, tag = "118")]
17976        BlockBioFrontmerge(super::BlockBioFrontmergeFtraceEvent),
17977        #[prost(message, tag = "119")]
17978        BlockBioQueue(super::BlockBioQueueFtraceEvent),
17979        #[prost(message, tag = "120")]
17980        BlockBioRemap(super::BlockBioRemapFtraceEvent),
17981        #[prost(message, tag = "121")]
17982        BlockDirtyBuffer(super::BlockDirtyBufferFtraceEvent),
17983        #[prost(message, tag = "122")]
17984        BlockGetrq(super::BlockGetrqFtraceEvent),
17985        #[prost(message, tag = "123")]
17986        BlockPlug(super::BlockPlugFtraceEvent),
17987        #[prost(message, tag = "124")]
17988        BlockRqAbort(super::BlockRqAbortFtraceEvent),
17989        #[prost(message, tag = "125")]
17990        BlockRqComplete(super::BlockRqCompleteFtraceEvent),
17991        #[prost(message, tag = "126")]
17992        BlockRqInsert(super::BlockRqInsertFtraceEvent),
17993        /// removed field with id 127;
17994        #[prost(message, tag = "128")]
17995        BlockRqRemap(super::BlockRqRemapFtraceEvent),
17996        #[prost(message, tag = "129")]
17997        BlockRqRequeue(super::BlockRqRequeueFtraceEvent),
17998        #[prost(message, tag = "130")]
17999        BlockSleeprq(super::BlockSleeprqFtraceEvent),
18000        #[prost(message, tag = "131")]
18001        BlockSplit(super::BlockSplitFtraceEvent),
18002        #[prost(message, tag = "132")]
18003        BlockTouchBuffer(super::BlockTouchBufferFtraceEvent),
18004        #[prost(message, tag = "133")]
18005        BlockUnplug(super::BlockUnplugFtraceEvent),
18006        #[prost(message, tag = "134")]
18007        Ext4AllocDaBlocks(super::Ext4AllocDaBlocksFtraceEvent),
18008        #[prost(message, tag = "135")]
18009        Ext4AllocateBlocks(super::Ext4AllocateBlocksFtraceEvent),
18010        #[prost(message, tag = "136")]
18011        Ext4AllocateInode(super::Ext4AllocateInodeFtraceEvent),
18012        #[prost(message, tag = "137")]
18013        Ext4BeginOrderedTruncate(super::Ext4BeginOrderedTruncateFtraceEvent),
18014        #[prost(message, tag = "138")]
18015        Ext4CollapseRange(super::Ext4CollapseRangeFtraceEvent),
18016        #[prost(message, tag = "139")]
18017        Ext4DaReleaseSpace(super::Ext4DaReleaseSpaceFtraceEvent),
18018        #[prost(message, tag = "140")]
18019        Ext4DaReserveSpace(super::Ext4DaReserveSpaceFtraceEvent),
18020        #[prost(message, tag = "141")]
18021        Ext4DaUpdateReserveSpace(super::Ext4DaUpdateReserveSpaceFtraceEvent),
18022        #[prost(message, tag = "142")]
18023        Ext4DaWritePages(super::Ext4DaWritePagesFtraceEvent),
18024        #[prost(message, tag = "143")]
18025        Ext4DaWritePagesExtent(super::Ext4DaWritePagesExtentFtraceEvent),
18026        #[prost(message, tag = "144")]
18027        Ext4DirectIoEnter(super::Ext4DirectIoEnterFtraceEvent),
18028        #[prost(message, tag = "145")]
18029        Ext4DirectIoExit(super::Ext4DirectIoExitFtraceEvent),
18030        #[prost(message, tag = "146")]
18031        Ext4DiscardBlocks(super::Ext4DiscardBlocksFtraceEvent),
18032        #[prost(message, tag = "147")]
18033        Ext4DiscardPreallocations(super::Ext4DiscardPreallocationsFtraceEvent),
18034        #[prost(message, tag = "148")]
18035        Ext4DropInode(super::Ext4DropInodeFtraceEvent),
18036        #[prost(message, tag = "149")]
18037        Ext4EsCacheExtent(super::Ext4EsCacheExtentFtraceEvent),
18038        #[prost(message, tag = "150")]
18039        Ext4EsFindDelayedExtentRangeEnter(
18040            super::Ext4EsFindDelayedExtentRangeEnterFtraceEvent,
18041        ),
18042        #[prost(message, tag = "151")]
18043        Ext4EsFindDelayedExtentRangeExit(
18044            super::Ext4EsFindDelayedExtentRangeExitFtraceEvent,
18045        ),
18046        #[prost(message, tag = "152")]
18047        Ext4EsInsertExtent(super::Ext4EsInsertExtentFtraceEvent),
18048        #[prost(message, tag = "153")]
18049        Ext4EsLookupExtentEnter(super::Ext4EsLookupExtentEnterFtraceEvent),
18050        #[prost(message, tag = "154")]
18051        Ext4EsLookupExtentExit(super::Ext4EsLookupExtentExitFtraceEvent),
18052        #[prost(message, tag = "155")]
18053        Ext4EsRemoveExtent(super::Ext4EsRemoveExtentFtraceEvent),
18054        #[prost(message, tag = "156")]
18055        Ext4EsShrink(super::Ext4EsShrinkFtraceEvent),
18056        #[prost(message, tag = "157")]
18057        Ext4EsShrinkCount(super::Ext4EsShrinkCountFtraceEvent),
18058        #[prost(message, tag = "158")]
18059        Ext4EsShrinkScanEnter(super::Ext4EsShrinkScanEnterFtraceEvent),
18060        #[prost(message, tag = "159")]
18061        Ext4EsShrinkScanExit(super::Ext4EsShrinkScanExitFtraceEvent),
18062        #[prost(message, tag = "160")]
18063        Ext4EvictInode(super::Ext4EvictInodeFtraceEvent),
18064        #[prost(message, tag = "161")]
18065        Ext4ExtConvertToInitializedEnter(
18066            super::Ext4ExtConvertToInitializedEnterFtraceEvent,
18067        ),
18068        #[prost(message, tag = "162")]
18069        Ext4ExtConvertToInitializedFastpath(
18070            super::Ext4ExtConvertToInitializedFastpathFtraceEvent,
18071        ),
18072        #[prost(message, tag = "163")]
18073        Ext4ExtHandleUnwrittenExtents(super::Ext4ExtHandleUnwrittenExtentsFtraceEvent),
18074        #[prost(message, tag = "164")]
18075        Ext4ExtInCache(super::Ext4ExtInCacheFtraceEvent),
18076        #[prost(message, tag = "165")]
18077        Ext4ExtLoadExtent(super::Ext4ExtLoadExtentFtraceEvent),
18078        #[prost(message, tag = "166")]
18079        Ext4ExtMapBlocksEnter(super::Ext4ExtMapBlocksEnterFtraceEvent),
18080        #[prost(message, tag = "167")]
18081        Ext4ExtMapBlocksExit(super::Ext4ExtMapBlocksExitFtraceEvent),
18082        #[prost(message, tag = "168")]
18083        Ext4ExtPutInCache(super::Ext4ExtPutInCacheFtraceEvent),
18084        #[prost(message, tag = "169")]
18085        Ext4ExtRemoveSpace(super::Ext4ExtRemoveSpaceFtraceEvent),
18086        #[prost(message, tag = "170")]
18087        Ext4ExtRemoveSpaceDone(super::Ext4ExtRemoveSpaceDoneFtraceEvent),
18088        #[prost(message, tag = "171")]
18089        Ext4ExtRmIdx(super::Ext4ExtRmIdxFtraceEvent),
18090        #[prost(message, tag = "172")]
18091        Ext4ExtRmLeaf(super::Ext4ExtRmLeafFtraceEvent),
18092        #[prost(message, tag = "173")]
18093        Ext4ExtShowExtent(super::Ext4ExtShowExtentFtraceEvent),
18094        #[prost(message, tag = "174")]
18095        Ext4FallocateEnter(super::Ext4FallocateEnterFtraceEvent),
18096        #[prost(message, tag = "175")]
18097        Ext4FallocateExit(super::Ext4FallocateExitFtraceEvent),
18098        #[prost(message, tag = "176")]
18099        Ext4FindDelallocRange(super::Ext4FindDelallocRangeFtraceEvent),
18100        #[prost(message, tag = "177")]
18101        Ext4Forget(super::Ext4ForgetFtraceEvent),
18102        #[prost(message, tag = "178")]
18103        Ext4FreeBlocks(super::Ext4FreeBlocksFtraceEvent),
18104        #[prost(message, tag = "179")]
18105        Ext4FreeInode(super::Ext4FreeInodeFtraceEvent),
18106        #[prost(message, tag = "180")]
18107        Ext4GetImpliedClusterAllocExit(super::Ext4GetImpliedClusterAllocExitFtraceEvent),
18108        #[prost(message, tag = "181")]
18109        Ext4GetReservedClusterAlloc(super::Ext4GetReservedClusterAllocFtraceEvent),
18110        #[prost(message, tag = "182")]
18111        Ext4IndMapBlocksEnter(super::Ext4IndMapBlocksEnterFtraceEvent),
18112        #[prost(message, tag = "183")]
18113        Ext4IndMapBlocksExit(super::Ext4IndMapBlocksExitFtraceEvent),
18114        #[prost(message, tag = "184")]
18115        Ext4InsertRange(super::Ext4InsertRangeFtraceEvent),
18116        #[prost(message, tag = "185")]
18117        Ext4Invalidatepage(super::Ext4InvalidatepageFtraceEvent),
18118        #[prost(message, tag = "186")]
18119        Ext4JournalStart(super::Ext4JournalStartFtraceEvent),
18120        #[prost(message, tag = "187")]
18121        Ext4JournalStartReserved(super::Ext4JournalStartReservedFtraceEvent),
18122        #[prost(message, tag = "188")]
18123        Ext4JournalledInvalidatepage(super::Ext4JournalledInvalidatepageFtraceEvent),
18124        #[prost(message, tag = "189")]
18125        Ext4JournalledWriteEnd(super::Ext4JournalledWriteEndFtraceEvent),
18126        #[prost(message, tag = "190")]
18127        Ext4LoadInode(super::Ext4LoadInodeFtraceEvent),
18128        #[prost(message, tag = "191")]
18129        Ext4LoadInodeBitmap(super::Ext4LoadInodeBitmapFtraceEvent),
18130        #[prost(message, tag = "192")]
18131        Ext4MarkInodeDirty(super::Ext4MarkInodeDirtyFtraceEvent),
18132        #[prost(message, tag = "193")]
18133        Ext4MbBitmapLoad(super::Ext4MbBitmapLoadFtraceEvent),
18134        #[prost(message, tag = "194")]
18135        Ext4MbBuddyBitmapLoad(super::Ext4MbBuddyBitmapLoadFtraceEvent),
18136        #[prost(message, tag = "195")]
18137        Ext4MbDiscardPreallocations(super::Ext4MbDiscardPreallocationsFtraceEvent),
18138        #[prost(message, tag = "196")]
18139        Ext4MbNewGroupPa(super::Ext4MbNewGroupPaFtraceEvent),
18140        #[prost(message, tag = "197")]
18141        Ext4MbNewInodePa(super::Ext4MbNewInodePaFtraceEvent),
18142        #[prost(message, tag = "198")]
18143        Ext4MbReleaseGroupPa(super::Ext4MbReleaseGroupPaFtraceEvent),
18144        #[prost(message, tag = "199")]
18145        Ext4MbReleaseInodePa(super::Ext4MbReleaseInodePaFtraceEvent),
18146        #[prost(message, tag = "200")]
18147        Ext4MballocAlloc(super::Ext4MballocAllocFtraceEvent),
18148        #[prost(message, tag = "201")]
18149        Ext4MballocDiscard(super::Ext4MballocDiscardFtraceEvent),
18150        #[prost(message, tag = "202")]
18151        Ext4MballocFree(super::Ext4MballocFreeFtraceEvent),
18152        #[prost(message, tag = "203")]
18153        Ext4MballocPrealloc(super::Ext4MballocPreallocFtraceEvent),
18154        #[prost(message, tag = "204")]
18155        Ext4OtherInodeUpdateTime(super::Ext4OtherInodeUpdateTimeFtraceEvent),
18156        #[prost(message, tag = "205")]
18157        Ext4PunchHole(super::Ext4PunchHoleFtraceEvent),
18158        #[prost(message, tag = "206")]
18159        Ext4ReadBlockBitmapLoad(super::Ext4ReadBlockBitmapLoadFtraceEvent),
18160        #[prost(message, tag = "207")]
18161        Ext4Readpage(super::Ext4ReadpageFtraceEvent),
18162        #[prost(message, tag = "208")]
18163        Ext4Releasepage(super::Ext4ReleasepageFtraceEvent),
18164        #[prost(message, tag = "209")]
18165        Ext4RemoveBlocks(super::Ext4RemoveBlocksFtraceEvent),
18166        #[prost(message, tag = "210")]
18167        Ext4RequestBlocks(super::Ext4RequestBlocksFtraceEvent),
18168        #[prost(message, tag = "211")]
18169        Ext4RequestInode(super::Ext4RequestInodeFtraceEvent),
18170        #[prost(message, tag = "212")]
18171        Ext4SyncFs(super::Ext4SyncFsFtraceEvent),
18172        #[prost(message, tag = "213")]
18173        Ext4TrimAllFree(super::Ext4TrimAllFreeFtraceEvent),
18174        #[prost(message, tag = "214")]
18175        Ext4TrimExtent(super::Ext4TrimExtentFtraceEvent),
18176        #[prost(message, tag = "215")]
18177        Ext4TruncateEnter(super::Ext4TruncateEnterFtraceEvent),
18178        #[prost(message, tag = "216")]
18179        Ext4TruncateExit(super::Ext4TruncateExitFtraceEvent),
18180        #[prost(message, tag = "217")]
18181        Ext4UnlinkEnter(super::Ext4UnlinkEnterFtraceEvent),
18182        #[prost(message, tag = "218")]
18183        Ext4UnlinkExit(super::Ext4UnlinkExitFtraceEvent),
18184        #[prost(message, tag = "219")]
18185        Ext4WriteBegin(super::Ext4WriteBeginFtraceEvent),
18186        /// removed field with id 220;
18187        /// removed field with id 221;
18188        /// removed field with id 222;
18189        /// removed field with id 223;
18190        /// removed field with id 224;
18191        /// removed field with id 225;
18192        /// removed field with id 226;
18193        /// removed field with id 227;
18194        /// removed field with id 228;
18195        /// removed field with id 229;
18196        #[prost(message, tag = "230")]
18197        Ext4WriteEnd(super::Ext4WriteEndFtraceEvent),
18198        #[prost(message, tag = "231")]
18199        Ext4Writepage(super::Ext4WritepageFtraceEvent),
18200        #[prost(message, tag = "232")]
18201        Ext4Writepages(super::Ext4WritepagesFtraceEvent),
18202        #[prost(message, tag = "233")]
18203        Ext4WritepagesResult(super::Ext4WritepagesResultFtraceEvent),
18204        #[prost(message, tag = "234")]
18205        Ext4ZeroRange(super::Ext4ZeroRangeFtraceEvent),
18206        #[prost(message, tag = "235")]
18207        TaskNewtask(super::TaskNewtaskFtraceEvent),
18208        #[prost(message, tag = "236")]
18209        TaskRename(super::TaskRenameFtraceEvent),
18210        #[prost(message, tag = "237")]
18211        SchedProcessExec(super::SchedProcessExecFtraceEvent),
18212        #[prost(message, tag = "238")]
18213        SchedProcessExit(super::SchedProcessExitFtraceEvent),
18214        #[prost(message, tag = "239")]
18215        SchedProcessFork(super::SchedProcessForkFtraceEvent),
18216        #[prost(message, tag = "240")]
18217        SchedProcessFree(super::SchedProcessFreeFtraceEvent),
18218        #[prost(message, tag = "241")]
18219        SchedProcessHang(super::SchedProcessHangFtraceEvent),
18220        #[prost(message, tag = "242")]
18221        SchedProcessWait(super::SchedProcessWaitFtraceEvent),
18222        #[prost(message, tag = "243")]
18223        F2fsDoSubmitBio(super::F2fsDoSubmitBioFtraceEvent),
18224        #[prost(message, tag = "244")]
18225        F2fsEvictInode(super::F2fsEvictInodeFtraceEvent),
18226        #[prost(message, tag = "245")]
18227        F2fsFallocate(super::F2fsFallocateFtraceEvent),
18228        #[prost(message, tag = "246")]
18229        F2fsGetDataBlock(super::F2fsGetDataBlockFtraceEvent),
18230        #[prost(message, tag = "247")]
18231        F2fsGetVictim(super::F2fsGetVictimFtraceEvent),
18232        #[prost(message, tag = "248")]
18233        F2fsIget(super::F2fsIgetFtraceEvent),
18234        #[prost(message, tag = "249")]
18235        F2fsIgetExit(super::F2fsIgetExitFtraceEvent),
18236        #[prost(message, tag = "250")]
18237        F2fsNewInode(super::F2fsNewInodeFtraceEvent),
18238        #[prost(message, tag = "251")]
18239        F2fsReadpage(super::F2fsReadpageFtraceEvent),
18240        #[prost(message, tag = "252")]
18241        F2fsReserveNewBlock(super::F2fsReserveNewBlockFtraceEvent),
18242        #[prost(message, tag = "253")]
18243        F2fsSetPageDirty(super::F2fsSetPageDirtyFtraceEvent),
18244        #[prost(message, tag = "254")]
18245        F2fsSubmitWritePage(super::F2fsSubmitWritePageFtraceEvent),
18246        #[prost(message, tag = "255")]
18247        F2fsSyncFileEnter(super::F2fsSyncFileEnterFtraceEvent),
18248        #[prost(message, tag = "256")]
18249        F2fsSyncFileExit(super::F2fsSyncFileExitFtraceEvent),
18250        #[prost(message, tag = "257")]
18251        F2fsSyncFs(super::F2fsSyncFsFtraceEvent),
18252        #[prost(message, tag = "258")]
18253        F2fsTruncate(super::F2fsTruncateFtraceEvent),
18254        #[prost(message, tag = "259")]
18255        F2fsTruncateBlocksEnter(super::F2fsTruncateBlocksEnterFtraceEvent),
18256        #[prost(message, tag = "260")]
18257        F2fsTruncateBlocksExit(super::F2fsTruncateBlocksExitFtraceEvent),
18258        #[prost(message, tag = "261")]
18259        F2fsTruncateDataBlocksRange(super::F2fsTruncateDataBlocksRangeFtraceEvent),
18260        #[prost(message, tag = "262")]
18261        F2fsTruncateInodeBlocksEnter(super::F2fsTruncateInodeBlocksEnterFtraceEvent),
18262        #[prost(message, tag = "263")]
18263        F2fsTruncateInodeBlocksExit(super::F2fsTruncateInodeBlocksExitFtraceEvent),
18264        #[prost(message, tag = "264")]
18265        F2fsTruncateNode(super::F2fsTruncateNodeFtraceEvent),
18266        #[prost(message, tag = "265")]
18267        F2fsTruncateNodesEnter(super::F2fsTruncateNodesEnterFtraceEvent),
18268        #[prost(message, tag = "266")]
18269        F2fsTruncateNodesExit(super::F2fsTruncateNodesExitFtraceEvent),
18270        #[prost(message, tag = "267")]
18271        F2fsTruncatePartialNodes(super::F2fsTruncatePartialNodesFtraceEvent),
18272        #[prost(message, tag = "268")]
18273        F2fsUnlinkEnter(super::F2fsUnlinkEnterFtraceEvent),
18274        #[prost(message, tag = "269")]
18275        F2fsUnlinkExit(super::F2fsUnlinkExitFtraceEvent),
18276        #[prost(message, tag = "270")]
18277        F2fsVmPageMkwrite(super::F2fsVmPageMkwriteFtraceEvent),
18278        #[prost(message, tag = "271")]
18279        F2fsWriteBegin(super::F2fsWriteBeginFtraceEvent),
18280        #[prost(message, tag = "272")]
18281        F2fsWriteCheckpoint(super::F2fsWriteCheckpointFtraceEvent),
18282        #[prost(message, tag = "273")]
18283        F2fsWriteEnd(super::F2fsWriteEndFtraceEvent),
18284        #[prost(message, tag = "274")]
18285        AllocPagesIommuEnd(super::AllocPagesIommuEndFtraceEvent),
18286        #[prost(message, tag = "275")]
18287        AllocPagesIommuFail(super::AllocPagesIommuFailFtraceEvent),
18288        #[prost(message, tag = "276")]
18289        AllocPagesIommuStart(super::AllocPagesIommuStartFtraceEvent),
18290        #[prost(message, tag = "277")]
18291        AllocPagesSysEnd(super::AllocPagesSysEndFtraceEvent),
18292        #[prost(message, tag = "278")]
18293        AllocPagesSysFail(super::AllocPagesSysFailFtraceEvent),
18294        #[prost(message, tag = "279")]
18295        AllocPagesSysStart(super::AllocPagesSysStartFtraceEvent),
18296        #[prost(message, tag = "280")]
18297        DmaAllocContiguousRetry(super::DmaAllocContiguousRetryFtraceEvent),
18298        #[prost(message, tag = "281")]
18299        IommuMapRange(super::IommuMapRangeFtraceEvent),
18300        #[prost(message, tag = "282")]
18301        IommuSecPtblMapRangeEnd(super::IommuSecPtblMapRangeEndFtraceEvent),
18302        #[prost(message, tag = "283")]
18303        IommuSecPtblMapRangeStart(super::IommuSecPtblMapRangeStartFtraceEvent),
18304        #[prost(message, tag = "284")]
18305        IonAllocBufferEnd(super::IonAllocBufferEndFtraceEvent),
18306        #[prost(message, tag = "285")]
18307        IonAllocBufferFail(super::IonAllocBufferFailFtraceEvent),
18308        #[prost(message, tag = "286")]
18309        IonAllocBufferFallback(super::IonAllocBufferFallbackFtraceEvent),
18310        #[prost(message, tag = "287")]
18311        IonAllocBufferStart(super::IonAllocBufferStartFtraceEvent),
18312        #[prost(message, tag = "288")]
18313        IonCpAllocRetry(super::IonCpAllocRetryFtraceEvent),
18314        #[prost(message, tag = "289")]
18315        IonCpSecureBufferEnd(super::IonCpSecureBufferEndFtraceEvent),
18316        #[prost(message, tag = "290")]
18317        IonCpSecureBufferStart(super::IonCpSecureBufferStartFtraceEvent),
18318        #[prost(message, tag = "291")]
18319        IonPrefetching(super::IonPrefetchingFtraceEvent),
18320        #[prost(message, tag = "292")]
18321        IonSecureCmaAddToPoolEnd(super::IonSecureCmaAddToPoolEndFtraceEvent),
18322        #[prost(message, tag = "293")]
18323        IonSecureCmaAddToPoolStart(super::IonSecureCmaAddToPoolStartFtraceEvent),
18324        #[prost(message, tag = "294")]
18325        IonSecureCmaAllocateEnd(super::IonSecureCmaAllocateEndFtraceEvent),
18326        #[prost(message, tag = "295")]
18327        IonSecureCmaAllocateStart(super::IonSecureCmaAllocateStartFtraceEvent),
18328        #[prost(message, tag = "296")]
18329        IonSecureCmaShrinkPoolEnd(super::IonSecureCmaShrinkPoolEndFtraceEvent),
18330        #[prost(message, tag = "297")]
18331        IonSecureCmaShrinkPoolStart(super::IonSecureCmaShrinkPoolStartFtraceEvent),
18332        #[prost(message, tag = "298")]
18333        Kfree(super::KfreeFtraceEvent),
18334        #[prost(message, tag = "299")]
18335        Kmalloc(super::KmallocFtraceEvent),
18336        #[prost(message, tag = "300")]
18337        KmallocNode(super::KmallocNodeFtraceEvent),
18338        #[prost(message, tag = "301")]
18339        KmemCacheAlloc(super::KmemCacheAllocFtraceEvent),
18340        #[prost(message, tag = "302")]
18341        KmemCacheAllocNode(super::KmemCacheAllocNodeFtraceEvent),
18342        #[prost(message, tag = "303")]
18343        KmemCacheFree(super::KmemCacheFreeFtraceEvent),
18344        #[prost(message, tag = "304")]
18345        MigratePagesEnd(super::MigratePagesEndFtraceEvent),
18346        #[prost(message, tag = "305")]
18347        MigratePagesStart(super::MigratePagesStartFtraceEvent),
18348        #[prost(message, tag = "306")]
18349        MigrateRetry(super::MigrateRetryFtraceEvent),
18350        #[prost(message, tag = "307")]
18351        MmPageAlloc(super::MmPageAllocFtraceEvent),
18352        #[prost(message, tag = "308")]
18353        MmPageAllocExtfrag(super::MmPageAllocExtfragFtraceEvent),
18354        #[prost(message, tag = "309")]
18355        MmPageAllocZoneLocked(super::MmPageAllocZoneLockedFtraceEvent),
18356        #[prost(message, tag = "310")]
18357        MmPageFree(super::MmPageFreeFtraceEvent),
18358        #[prost(message, tag = "311")]
18359        MmPageFreeBatched(super::MmPageFreeBatchedFtraceEvent),
18360        #[prost(message, tag = "312")]
18361        MmPagePcpuDrain(super::MmPagePcpuDrainFtraceEvent),
18362        #[prost(message, tag = "313")]
18363        RssStat(super::RssStatFtraceEvent),
18364        #[prost(message, tag = "314")]
18365        IonHeapShrink(super::IonHeapShrinkFtraceEvent),
18366        #[prost(message, tag = "315")]
18367        IonHeapGrow(super::IonHeapGrowFtraceEvent),
18368        #[prost(message, tag = "316")]
18369        FenceInit(super::FenceInitFtraceEvent),
18370        #[prost(message, tag = "317")]
18371        FenceDestroy(super::FenceDestroyFtraceEvent),
18372        #[prost(message, tag = "318")]
18373        FenceEnableSignal(super::FenceEnableSignalFtraceEvent),
18374        #[prost(message, tag = "319")]
18375        FenceSignaled(super::FenceSignaledFtraceEvent),
18376        #[prost(message, tag = "320")]
18377        ClkEnable(super::ClkEnableFtraceEvent),
18378        #[prost(message, tag = "321")]
18379        ClkDisable(super::ClkDisableFtraceEvent),
18380        #[prost(message, tag = "322")]
18381        ClkSetRate(super::ClkSetRateFtraceEvent),
18382        #[prost(message, tag = "323")]
18383        BinderTransactionAllocBuf(super::BinderTransactionAllocBufFtraceEvent),
18384        #[prost(message, tag = "324")]
18385        SignalDeliver(super::SignalDeliverFtraceEvent),
18386        #[prost(message, tag = "325")]
18387        SignalGenerate(super::SignalGenerateFtraceEvent),
18388        #[prost(message, tag = "326")]
18389        OomScoreAdjUpdate(super::OomScoreAdjUpdateFtraceEvent),
18390        #[prost(message, tag = "327")]
18391        Generic(super::GenericFtraceEvent),
18392        #[prost(message, tag = "328")]
18393        MmEventRecord(super::MmEventRecordFtraceEvent),
18394        #[prost(message, tag = "329")]
18395        SysEnter(super::SysEnterFtraceEvent),
18396        #[prost(message, tag = "330")]
18397        SysExit(super::SysExitFtraceEvent),
18398        #[prost(message, tag = "331")]
18399        Zero(super::ZeroFtraceEvent),
18400        #[prost(message, tag = "332")]
18401        GpuFrequency(super::GpuFrequencyFtraceEvent),
18402        #[prost(message, tag = "333")]
18403        SdeTracingMarkWrite(super::SdeTracingMarkWriteFtraceEvent),
18404        #[prost(message, tag = "334")]
18405        MarkVictim(super::MarkVictimFtraceEvent),
18406        #[prost(message, tag = "335")]
18407        IonStat(super::IonStatFtraceEvent),
18408        #[prost(message, tag = "336")]
18409        IonBufferCreate(super::IonBufferCreateFtraceEvent),
18410        #[prost(message, tag = "337")]
18411        IonBufferDestroy(super::IonBufferDestroyFtraceEvent),
18412        #[prost(message, tag = "338")]
18413        ScmCallStart(super::ScmCallStartFtraceEvent),
18414        #[prost(message, tag = "339")]
18415        ScmCallEnd(super::ScmCallEndFtraceEvent),
18416        #[prost(message, tag = "340")]
18417        GpuMemTotal(super::GpuMemTotalFtraceEvent),
18418        #[prost(message, tag = "341")]
18419        ThermalTemperature(super::ThermalTemperatureFtraceEvent),
18420        #[prost(message, tag = "342")]
18421        CdevUpdate(super::CdevUpdateFtraceEvent),
18422        #[prost(message, tag = "343")]
18423        CpuhpExit(super::CpuhpExitFtraceEvent),
18424        #[prost(message, tag = "344")]
18425        CpuhpMultiEnter(super::CpuhpMultiEnterFtraceEvent),
18426        #[prost(message, tag = "345")]
18427        CpuhpEnter(super::CpuhpEnterFtraceEvent),
18428        #[prost(message, tag = "346")]
18429        CpuhpLatency(super::CpuhpLatencyFtraceEvent),
18430        #[prost(message, tag = "347")]
18431        FastrpcDmaStat(super::FastrpcDmaStatFtraceEvent),
18432        #[prost(message, tag = "348")]
18433        DpuTracingMarkWrite(super::DpuTracingMarkWriteFtraceEvent),
18434        #[prost(message, tag = "349")]
18435        G2dTracingMarkWrite(super::G2dTracingMarkWriteFtraceEvent),
18436        #[prost(message, tag = "350")]
18437        MaliTracingMarkWrite(super::MaliTracingMarkWriteFtraceEvent),
18438        #[prost(message, tag = "351")]
18439        DmaHeapStat(super::DmaHeapStatFtraceEvent),
18440        #[prost(message, tag = "352")]
18441        CpuhpPause(super::CpuhpPauseFtraceEvent),
18442        #[prost(message, tag = "353")]
18443        SchedPiSetprio(super::SchedPiSetprioFtraceEvent),
18444        #[prost(message, tag = "354")]
18445        SdeSdeEvtlog(super::SdeSdeEvtlogFtraceEvent),
18446        #[prost(message, tag = "355")]
18447        SdeSdePerfCalcCrtc(super::SdeSdePerfCalcCrtcFtraceEvent),
18448        #[prost(message, tag = "356")]
18449        SdeSdePerfCrtcUpdate(super::SdeSdePerfCrtcUpdateFtraceEvent),
18450        #[prost(message, tag = "357")]
18451        SdeSdePerfSetQosLuts(super::SdeSdePerfSetQosLutsFtraceEvent),
18452        #[prost(message, tag = "358")]
18453        SdeSdePerfUpdateBus(super::SdeSdePerfUpdateBusFtraceEvent),
18454        #[prost(message, tag = "359")]
18455        RssStatThrottled(super::RssStatThrottledFtraceEvent),
18456        #[prost(message, tag = "360")]
18457        NetifReceiveSkb(super::NetifReceiveSkbFtraceEvent),
18458        #[prost(message, tag = "361")]
18459        NetDevXmit(super::NetDevXmitFtraceEvent),
18460        #[prost(message, tag = "362")]
18461        InetSockSetState(super::InetSockSetStateFtraceEvent),
18462        #[prost(message, tag = "363")]
18463        TcpRetransmitSkb(super::TcpRetransmitSkbFtraceEvent),
18464        #[prost(message, tag = "364")]
18465        CrosEcSensorhubData(super::CrosEcSensorhubDataFtraceEvent),
18466        #[prost(message, tag = "365")]
18467        NapiGroReceiveEntry(super::NapiGroReceiveEntryFtraceEvent),
18468        #[prost(message, tag = "366")]
18469        NapiGroReceiveExit(super::NapiGroReceiveExitFtraceEvent),
18470        #[prost(message, tag = "367")]
18471        KfreeSkb(super::KfreeSkbFtraceEvent),
18472        #[prost(message, tag = "368")]
18473        KvmAccessFault(super::KvmAccessFaultFtraceEvent),
18474        #[prost(message, tag = "369")]
18475        KvmAckIrq(super::KvmAckIrqFtraceEvent),
18476        #[prost(message, tag = "370")]
18477        KvmAgeHva(super::KvmAgeHvaFtraceEvent),
18478        #[prost(message, tag = "371")]
18479        KvmAgePage(super::KvmAgePageFtraceEvent),
18480        #[prost(message, tag = "372")]
18481        KvmArmClearDebug(super::KvmArmClearDebugFtraceEvent),
18482        #[prost(message, tag = "373")]
18483        KvmArmSetDreg32(super::KvmArmSetDreg32FtraceEvent),
18484        #[prost(message, tag = "374")]
18485        KvmArmSetRegset(super::KvmArmSetRegsetFtraceEvent),
18486        #[prost(message, tag = "375")]
18487        KvmArmSetupDebug(super::KvmArmSetupDebugFtraceEvent),
18488        #[prost(message, tag = "376")]
18489        KvmEntry(super::KvmEntryFtraceEvent),
18490        #[prost(message, tag = "377")]
18491        KvmExit(super::KvmExitFtraceEvent),
18492        #[prost(message, tag = "378")]
18493        KvmFpu(super::KvmFpuFtraceEvent),
18494        #[prost(message, tag = "379")]
18495        KvmGetTimerMap(super::KvmGetTimerMapFtraceEvent),
18496        #[prost(message, tag = "380")]
18497        KvmGuestFault(super::KvmGuestFaultFtraceEvent),
18498        #[prost(message, tag = "381")]
18499        KvmHandleSysReg(super::KvmHandleSysRegFtraceEvent),
18500        #[prost(message, tag = "382")]
18501        KvmHvcArm64(super::KvmHvcArm64FtraceEvent),
18502        #[prost(message, tag = "383")]
18503        KvmIrqLine(super::KvmIrqLineFtraceEvent),
18504        #[prost(message, tag = "384")]
18505        KvmMmio(super::KvmMmioFtraceEvent),
18506        #[prost(message, tag = "385")]
18507        KvmMmioEmulate(super::KvmMmioEmulateFtraceEvent),
18508        #[prost(message, tag = "386")]
18509        KvmSetGuestDebug(super::KvmSetGuestDebugFtraceEvent),
18510        #[prost(message, tag = "387")]
18511        KvmSetIrq(super::KvmSetIrqFtraceEvent),
18512        #[prost(message, tag = "388")]
18513        KvmSetSpteHva(super::KvmSetSpteHvaFtraceEvent),
18514        #[prost(message, tag = "389")]
18515        KvmSetWayFlush(super::KvmSetWayFlushFtraceEvent),
18516        #[prost(message, tag = "390")]
18517        KvmSysAccess(super::KvmSysAccessFtraceEvent),
18518        #[prost(message, tag = "391")]
18519        KvmTestAgeHva(super::KvmTestAgeHvaFtraceEvent),
18520        #[prost(message, tag = "392")]
18521        KvmTimerEmulate(super::KvmTimerEmulateFtraceEvent),
18522        #[prost(message, tag = "393")]
18523        KvmTimerHrtimerExpire(super::KvmTimerHrtimerExpireFtraceEvent),
18524        #[prost(message, tag = "394")]
18525        KvmTimerRestoreState(super::KvmTimerRestoreStateFtraceEvent),
18526        #[prost(message, tag = "395")]
18527        KvmTimerSaveState(super::KvmTimerSaveStateFtraceEvent),
18528        #[prost(message, tag = "396")]
18529        KvmTimerUpdateIrq(super::KvmTimerUpdateIrqFtraceEvent),
18530        #[prost(message, tag = "397")]
18531        KvmToggleCache(super::KvmToggleCacheFtraceEvent),
18532        #[prost(message, tag = "398")]
18533        KvmUnmapHvaRange(super::KvmUnmapHvaRangeFtraceEvent),
18534        #[prost(message, tag = "399")]
18535        KvmUserspaceExit(super::KvmUserspaceExitFtraceEvent),
18536        #[prost(message, tag = "400")]
18537        KvmVcpuWakeup(super::KvmVcpuWakeupFtraceEvent),
18538        #[prost(message, tag = "401")]
18539        KvmWfxArm64(super::KvmWfxArm64FtraceEvent),
18540        #[prost(message, tag = "402")]
18541        TrapReg(super::TrapRegFtraceEvent),
18542        #[prost(message, tag = "403")]
18543        VgicUpdateIrqPending(super::VgicUpdateIrqPendingFtraceEvent),
18544        #[prost(message, tag = "404")]
18545        WakeupSourceActivate(super::WakeupSourceActivateFtraceEvent),
18546        #[prost(message, tag = "405")]
18547        WakeupSourceDeactivate(super::WakeupSourceDeactivateFtraceEvent),
18548        #[prost(message, tag = "406")]
18549        UfshcdCommand(super::UfshcdCommandFtraceEvent),
18550        #[prost(message, tag = "407")]
18551        UfshcdClkGating(super::UfshcdClkGatingFtraceEvent),
18552        #[prost(message, tag = "408")]
18553        Console(super::ConsoleFtraceEvent),
18554        #[prost(message, tag = "409")]
18555        DrmVblankEvent(super::DrmVblankEventFtraceEvent),
18556        #[prost(message, tag = "410")]
18557        DrmVblankEventDelivered(super::DrmVblankEventDeliveredFtraceEvent),
18558        #[prost(message, tag = "411")]
18559        DrmSchedJob(super::DrmSchedJobFtraceEvent),
18560        #[prost(message, tag = "412")]
18561        DrmRunJob(super::DrmRunJobFtraceEvent),
18562        #[prost(message, tag = "413")]
18563        DrmSchedProcessJob(super::DrmSchedProcessJobFtraceEvent),
18564        #[prost(message, tag = "414")]
18565        DmaFenceInit(super::DmaFenceInitFtraceEvent),
18566        #[prost(message, tag = "415")]
18567        DmaFenceEmit(super::DmaFenceEmitFtraceEvent),
18568        #[prost(message, tag = "416")]
18569        DmaFenceSignaled(super::DmaFenceSignaledFtraceEvent),
18570        #[prost(message, tag = "417")]
18571        DmaFenceWaitStart(super::DmaFenceWaitStartFtraceEvent),
18572        #[prost(message, tag = "418")]
18573        DmaFenceWaitEnd(super::DmaFenceWaitEndFtraceEvent),
18574        #[prost(message, tag = "419")]
18575        F2fsIostat(super::F2fsIostatFtraceEvent),
18576        #[prost(message, tag = "420")]
18577        F2fsIostatLatency(super::F2fsIostatLatencyFtraceEvent),
18578        #[prost(message, tag = "421")]
18579        SchedCpuUtilCfs(super::SchedCpuUtilCfsFtraceEvent),
18580        #[prost(message, tag = "422")]
18581        V4l2Qbuf(super::V4l2QbufFtraceEvent),
18582        #[prost(message, tag = "423")]
18583        V4l2Dqbuf(super::V4l2DqbufFtraceEvent),
18584        #[prost(message, tag = "424")]
18585        Vb2V4l2BufQueue(super::Vb2V4l2BufQueueFtraceEvent),
18586        #[prost(message, tag = "425")]
18587        Vb2V4l2BufDone(super::Vb2V4l2BufDoneFtraceEvent),
18588        #[prost(message, tag = "426")]
18589        Vb2V4l2Qbuf(super::Vb2V4l2QbufFtraceEvent),
18590        #[prost(message, tag = "427")]
18591        Vb2V4l2Dqbuf(super::Vb2V4l2DqbufFtraceEvent),
18592        #[prost(message, tag = "428")]
18593        DsiCmdFifoStatus(super::DsiCmdFifoStatusFtraceEvent),
18594        #[prost(message, tag = "429")]
18595        DsiRx(super::DsiRxFtraceEvent),
18596        #[prost(message, tag = "430")]
18597        DsiTx(super::DsiTxFtraceEvent),
18598        #[prost(message, tag = "431")]
18599        AndroidFsDatareadEnd(super::AndroidFsDatareadEndFtraceEvent),
18600        #[prost(message, tag = "432")]
18601        AndroidFsDatareadStart(super::AndroidFsDatareadStartFtraceEvent),
18602        #[prost(message, tag = "433")]
18603        AndroidFsDatawriteEnd(super::AndroidFsDatawriteEndFtraceEvent),
18604        #[prost(message, tag = "434")]
18605        AndroidFsDatawriteStart(super::AndroidFsDatawriteStartFtraceEvent),
18606        #[prost(message, tag = "435")]
18607        AndroidFsFsyncEnd(super::AndroidFsFsyncEndFtraceEvent),
18608        #[prost(message, tag = "436")]
18609        AndroidFsFsyncStart(super::AndroidFsFsyncStartFtraceEvent),
18610        #[prost(message, tag = "437")]
18611        FuncgraphEntry(super::FuncgraphEntryFtraceEvent),
18612        #[prost(message, tag = "438")]
18613        FuncgraphExit(super::FuncgraphExitFtraceEvent),
18614        #[prost(message, tag = "439")]
18615        VirtioVideoCmd(super::VirtioVideoCmdFtraceEvent),
18616        #[prost(message, tag = "440")]
18617        VirtioVideoCmdDone(super::VirtioVideoCmdDoneFtraceEvent),
18618        #[prost(message, tag = "441")]
18619        VirtioVideoResourceQueue(super::VirtioVideoResourceQueueFtraceEvent),
18620        #[prost(message, tag = "442")]
18621        VirtioVideoResourceQueueDone(super::VirtioVideoResourceQueueDoneFtraceEvent),
18622        #[prost(message, tag = "443")]
18623        MmShrinkSlabStart(super::MmShrinkSlabStartFtraceEvent),
18624        #[prost(message, tag = "444")]
18625        MmShrinkSlabEnd(super::MmShrinkSlabEndFtraceEvent),
18626        #[prost(message, tag = "445")]
18627        TrustySmc(super::TrustySmcFtraceEvent),
18628        #[prost(message, tag = "446")]
18629        TrustySmcDone(super::TrustySmcDoneFtraceEvent),
18630        #[prost(message, tag = "447")]
18631        TrustyStdCall32(super::TrustyStdCall32FtraceEvent),
18632        #[prost(message, tag = "448")]
18633        TrustyStdCall32Done(super::TrustyStdCall32DoneFtraceEvent),
18634        #[prost(message, tag = "449")]
18635        TrustyShareMemory(super::TrustyShareMemoryFtraceEvent),
18636        #[prost(message, tag = "450")]
18637        TrustyShareMemoryDone(super::TrustyShareMemoryDoneFtraceEvent),
18638        #[prost(message, tag = "451")]
18639        TrustyReclaimMemory(super::TrustyReclaimMemoryFtraceEvent),
18640        #[prost(message, tag = "452")]
18641        TrustyReclaimMemoryDone(super::TrustyReclaimMemoryDoneFtraceEvent),
18642        #[prost(message, tag = "453")]
18643        TrustyIrq(super::TrustyIrqFtraceEvent),
18644        #[prost(message, tag = "454")]
18645        TrustyIpcHandleEvent(super::TrustyIpcHandleEventFtraceEvent),
18646        #[prost(message, tag = "455")]
18647        TrustyIpcConnect(super::TrustyIpcConnectFtraceEvent),
18648        #[prost(message, tag = "456")]
18649        TrustyIpcConnectEnd(super::TrustyIpcConnectEndFtraceEvent),
18650        #[prost(message, tag = "457")]
18651        TrustyIpcWrite(super::TrustyIpcWriteFtraceEvent),
18652        #[prost(message, tag = "458")]
18653        TrustyIpcPoll(super::TrustyIpcPollFtraceEvent),
18654        /// removed field with id 459;
18655        #[prost(message, tag = "460")]
18656        TrustyIpcRead(super::TrustyIpcReadFtraceEvent),
18657        #[prost(message, tag = "461")]
18658        TrustyIpcReadEnd(super::TrustyIpcReadEndFtraceEvent),
18659        #[prost(message, tag = "462")]
18660        TrustyIpcRx(super::TrustyIpcRxFtraceEvent),
18661        /// removed field with id 463;
18662        #[prost(message, tag = "464")]
18663        TrustyEnqueueNop(super::TrustyEnqueueNopFtraceEvent),
18664        #[prost(message, tag = "465")]
18665        CmaAllocStart(super::CmaAllocStartFtraceEvent),
18666        #[prost(message, tag = "466")]
18667        CmaAllocInfo(super::CmaAllocInfoFtraceEvent),
18668        #[prost(message, tag = "467")]
18669        LwisTracingMarkWrite(super::LwisTracingMarkWriteFtraceEvent),
18670        #[prost(message, tag = "468")]
18671        VirtioGpuCmdQueue(super::VirtioGpuCmdQueueFtraceEvent),
18672        #[prost(message, tag = "469")]
18673        VirtioGpuCmdResponse(super::VirtioGpuCmdResponseFtraceEvent),
18674        #[prost(message, tag = "470")]
18675        MaliMaliKcpuCqsSet(super::MaliMaliKcpucqssetFtraceEvent),
18676        #[prost(message, tag = "471")]
18677        MaliMaliKcpuCqsWaitStart(super::MaliMaliKcpucqswaitstartFtraceEvent),
18678        #[prost(message, tag = "472")]
18679        MaliMaliKcpuCqsWaitEnd(super::MaliMaliKcpucqswaitendFtraceEvent),
18680        #[prost(message, tag = "473")]
18681        MaliMaliKcpuFenceSignal(super::MaliMaliKcpufencesignalFtraceEvent),
18682        #[prost(message, tag = "474")]
18683        MaliMaliKcpuFenceWaitStart(super::MaliMaliKcpufencewaitstartFtraceEvent),
18684        #[prost(message, tag = "475")]
18685        MaliMaliKcpuFenceWaitEnd(super::MaliMaliKcpufencewaitendFtraceEvent),
18686        #[prost(message, tag = "476")]
18687        HypEnter(super::HypEnterFtraceEvent),
18688        #[prost(message, tag = "477")]
18689        HypExit(super::HypExitFtraceEvent),
18690        #[prost(message, tag = "478")]
18691        HostHcall(super::HostHcallFtraceEvent),
18692        #[prost(message, tag = "479")]
18693        HostSmc(super::HostSmcFtraceEvent),
18694        #[prost(message, tag = "480")]
18695        HostMemAbort(super::HostMemAbortFtraceEvent),
18696        #[prost(message, tag = "481")]
18697        SuspendResumeMinimal(super::SuspendResumeMinimalFtraceEvent),
18698        #[prost(message, tag = "482")]
18699        MaliMaliCsfInterruptStart(super::MaliMaliCsfinterruptstartFtraceEvent),
18700        #[prost(message, tag = "483")]
18701        MaliMaliCsfInterruptEnd(super::MaliMaliCsfinterruptendFtraceEvent),
18702        #[prost(message, tag = "484")]
18703        SamsungTracingMarkWrite(super::SamsungTracingMarkWriteFtraceEvent),
18704        #[prost(message, tag = "485")]
18705        BinderCommand(super::BinderCommandFtraceEvent),
18706        #[prost(message, tag = "486")]
18707        BinderReturn(super::BinderReturnFtraceEvent),
18708        #[prost(message, tag = "487")]
18709        SchedSwitchWithCtrs(super::SchedSwitchWithCtrsFtraceEvent),
18710        #[prost(message, tag = "488")]
18711        GpuWorkPeriod(super::GpuWorkPeriodFtraceEvent),
18712        #[prost(message, tag = "489")]
18713        RpmStatus(super::RpmStatusFtraceEvent),
18714        #[prost(message, tag = "490")]
18715        PanelWriteGeneric(super::PanelWriteGenericFtraceEvent),
18716        #[prost(message, tag = "491")]
18717        SchedMigrateTask(super::SchedMigrateTaskFtraceEvent),
18718        #[prost(message, tag = "492")]
18719        DpuDsiCmdFifoStatus(super::DpuDsiCmdFifoStatusFtraceEvent),
18720        #[prost(message, tag = "493")]
18721        DpuDsiRx(super::DpuDsiRxFtraceEvent),
18722        #[prost(message, tag = "494")]
18723        DpuDsiTx(super::DpuDsiTxFtraceEvent),
18724        #[prost(message, tag = "495")]
18725        F2fsBackgroundGc(super::F2fsBackgroundGcFtraceEvent),
18726        #[prost(message, tag = "496")]
18727        F2fsGcBegin(super::F2fsGcBeginFtraceEvent),
18728        #[prost(message, tag = "497")]
18729        F2fsGcEnd(super::F2fsGcEndFtraceEvent),
18730        #[prost(message, tag = "498")]
18731        FastrpcDmaFree(super::FastrpcDmaFreeFtraceEvent),
18732        #[prost(message, tag = "499")]
18733        FastrpcDmaAlloc(super::FastrpcDmaAllocFtraceEvent),
18734        #[prost(message, tag = "500")]
18735        FastrpcDmaUnmap(super::FastrpcDmaUnmapFtraceEvent),
18736        #[prost(message, tag = "501")]
18737        FastrpcDmaMap(super::FastrpcDmaMapFtraceEvent),
18738        #[prost(message, tag = "502")]
18739        GoogleIccEvent(super::GoogleIccEventFtraceEvent),
18740        #[prost(message, tag = "503")]
18741        GoogleIrmEvent(super::GoogleIrmEventFtraceEvent),
18742        #[prost(message, tag = "504")]
18743        DevicePmCallbackStart(super::DevicePmCallbackStartFtraceEvent),
18744        #[prost(message, tag = "505")]
18745        DevicePmCallbackEnd(super::DevicePmCallbackEndFtraceEvent),
18746        #[prost(message, tag = "506")]
18747        ThermalExynosAcpmBulk(super::ThermalExynosAcpmBulkFtraceEvent),
18748        #[prost(message, tag = "507")]
18749        ThermalExynosAcpmHighOverhead(super::ThermalExynosAcpmHighOverheadFtraceEvent),
18750        #[prost(message, tag = "508")]
18751        DcvshFreq(super::DcvshFreqFtraceEvent),
18752        #[prost(message, tag = "509")]
18753        KgslGpuFrequency(super::KgslGpuFrequencyFtraceEvent),
18754        #[prost(message, tag = "510")]
18755        MaliMaliPmMcuHctlCoresDownScaleNotifyPend(
18756            super::MaliMaliPmmcuhctlcoresdownscalenotifypendFtraceEvent,
18757        ),
18758        #[prost(message, tag = "511")]
18759        MaliMaliPmMcuHctlCoresNotifyPend(
18760            super::MaliMaliPmmcuhctlcoresnotifypendFtraceEvent,
18761        ),
18762        #[prost(message, tag = "512")]
18763        MaliMaliPmMcuHctlCoreInactivePend(
18764            super::MaliMaliPmmcuhctlcoreinactivependFtraceEvent,
18765        ),
18766        #[prost(message, tag = "513")]
18767        MaliMaliPmMcuHctlMcuOnRecheck(super::MaliMaliPmmcuhctlmcuonrecheckFtraceEvent),
18768        #[prost(message, tag = "514")]
18769        MaliMaliPmMcuHctlShadersCoreOffPend(
18770            super::MaliMaliPmmcuhctlshaderscoreoffpendFtraceEvent,
18771        ),
18772        #[prost(message, tag = "515")]
18773        MaliMaliPmMcuHctlShadersPendOff(
18774            super::MaliMaliPmmcuhctlshaderspendoffFtraceEvent,
18775        ),
18776        #[prost(message, tag = "516")]
18777        MaliMaliPmMcuHctlShadersPendOn(super::MaliMaliPmmcuhctlshaderspendonFtraceEvent),
18778        #[prost(message, tag = "517")]
18779        MaliMaliPmMcuHctlShadersReadyOff(
18780            super::MaliMaliPmmcuhctlshadersreadyoffFtraceEvent,
18781        ),
18782        #[prost(message, tag = "518")]
18783        MaliMaliPmMcuInSleep(super::MaliMaliPmmcuinsleepFtraceEvent),
18784        #[prost(message, tag = "519")]
18785        MaliMaliPmMcuOff(super::MaliMaliPmmcuoffFtraceEvent),
18786        #[prost(message, tag = "520")]
18787        MaliMaliPmMcuOn(super::MaliMaliPmmcuonFtraceEvent),
18788        #[prost(message, tag = "521")]
18789        MaliMaliPmMcuOnCoreAttrUpdatePend(
18790            super::MaliMaliPmmcuoncoreattrupdatependFtraceEvent,
18791        ),
18792        #[prost(message, tag = "522")]
18793        MaliMaliPmMcuOnGlbReinitPend(super::MaliMaliPmmcuonglbreinitpendFtraceEvent),
18794        #[prost(message, tag = "523")]
18795        MaliMaliPmMcuOnHalt(super::MaliMaliPmmcuonhaltFtraceEvent),
18796        #[prost(message, tag = "524")]
18797        MaliMaliPmMcuOnHwcntDisable(super::MaliMaliPmmcuonhwcntdisableFtraceEvent),
18798        #[prost(message, tag = "525")]
18799        MaliMaliPmMcuOnHwcntEnable(super::MaliMaliPmmcuonhwcntenableFtraceEvent),
18800        #[prost(message, tag = "526")]
18801        MaliMaliPmMcuOnPendHalt(super::MaliMaliPmmcuonpendhaltFtraceEvent),
18802        #[prost(message, tag = "527")]
18803        MaliMaliPmMcuOnPendSleep(super::MaliMaliPmmcuonpendsleepFtraceEvent),
18804        #[prost(message, tag = "528")]
18805        MaliMaliPmMcuOnSleepInitiate(super::MaliMaliPmmcuonsleepinitiateFtraceEvent),
18806        #[prost(message, tag = "529")]
18807        MaliMaliPmMcuPendOff(super::MaliMaliPmmcupendoffFtraceEvent),
18808        #[prost(message, tag = "530")]
18809        MaliMaliPmMcuPendOnReload(super::MaliMaliPmmcupendonreloadFtraceEvent),
18810        #[prost(message, tag = "531")]
18811        MaliMaliPmMcuPowerDown(super::MaliMaliPmmcupowerdownFtraceEvent),
18812        #[prost(message, tag = "532")]
18813        MaliMaliPmMcuResetWait(super::MaliMaliPmmcuresetwaitFtraceEvent),
18814        #[prost(message, tag = "533")]
18815        BclIrqTrigger(super::BclIrqTriggerFtraceEvent),
18816        #[prost(message, tag = "534")]
18817        KgslAdrenoCmdbatchQueued(super::KgslAdrenoCmdbatchQueuedFtraceEvent),
18818        #[prost(message, tag = "535")]
18819        KgslAdrenoCmdbatchSubmitted(super::KgslAdrenoCmdbatchSubmittedFtraceEvent),
18820        #[prost(message, tag = "536")]
18821        KgslAdrenoCmdbatchSync(super::KgslAdrenoCmdbatchSyncFtraceEvent),
18822        #[prost(message, tag = "537")]
18823        KgslAdrenoCmdbatchRetired(super::KgslAdrenoCmdbatchRetiredFtraceEvent),
18824        #[prost(message, tag = "538")]
18825        PixelMmKswapdWake(super::PixelMmKswapdWakeFtraceEvent),
18826        #[prost(message, tag = "539")]
18827        PixelMmKswapdDone(super::PixelMmKswapdDoneFtraceEvent),
18828        #[prost(message, tag = "540")]
18829        SchedWakeupTaskAttr(super::SchedWakeupTaskAttrFtraceEvent),
18830        #[prost(message, tag = "541")]
18831        DevfreqFrequency(super::DevfreqFrequencyFtraceEvent),
18832        #[prost(message, tag = "542")]
18833        KprobeEvent(super::KprobeEvent),
18834        #[prost(message, tag = "543")]
18835        ParamSetValueCpm(super::ParamSetValueCpmFtraceEvent),
18836        #[prost(message, tag = "544")]
18837        DoSysOpen(super::DoSysOpenFtraceEvent),
18838        #[prost(message, tag = "545")]
18839        OpenExec(super::OpenExecFtraceEvent),
18840        #[prost(message, tag = "546")]
18841        BlockIoStart(super::BlockIoStartFtraceEvent),
18842        #[prost(message, tag = "547")]
18843        BlockIoDone(super::BlockIoDoneFtraceEvent),
18844        #[prost(message, tag = "548")]
18845        MaliGpuPowerState(super::MaliGpuPowerStateFtraceEvent),
18846        #[prost(message, tag = "549")]
18847        DpuDispDpuUnderrun(super::DpuDispDpuUnderrunFtraceEvent),
18848        #[prost(message, tag = "550")]
18849        DpuDispVblankIrqEnable(super::DpuDispVblankIrqEnableFtraceEvent),
18850        #[prost(message, tag = "551")]
18851        HrtimerStart(super::HrtimerStartFtraceEvent),
18852        #[prost(message, tag = "552")]
18853        HrtimerCancel(super::HrtimerCancelFtraceEvent),
18854        #[prost(message, tag = "553")]
18855        HrtimerExpireEntry(super::HrtimerExpireEntryFtraceEvent),
18856        #[prost(message, tag = "554")]
18857        HrtimerExpireExit(super::HrtimerExpireExitFtraceEvent),
18858        #[prost(message, tag = "555")]
18859        TimerStart(super::TimerStartFtraceEvent),
18860        #[prost(message, tag = "556")]
18861        TimerCancel(super::TimerCancelFtraceEvent),
18862        #[prost(message, tag = "557")]
18863        TimerExpireEntry(super::TimerExpireEntryFtraceEvent),
18864        #[prost(message, tag = "558")]
18865        TimerExpireExit(super::TimerExpireExitFtraceEvent),
18866        #[prost(message, tag = "559")]
18867        LocalTimerEntry(super::LocalTimerEntryFtraceEvent),
18868        #[prost(message, tag = "560")]
18869        LocalTimerExit(super::LocalTimerExitFtraceEvent),
18870        #[prost(message, tag = "561")]
18871        Dwc3AllocRequest(super::Dwc3AllocRequestFtraceEvent),
18872        #[prost(message, tag = "562")]
18873        Dwc3CompleteTrb(super::Dwc3CompleteTrbFtraceEvent),
18874        #[prost(message, tag = "563")]
18875        Dwc3CtrlReq(super::Dwc3CtrlReqFtraceEvent),
18876        #[prost(message, tag = "564")]
18877        Dwc3EpDequeue(super::Dwc3EpDequeueFtraceEvent),
18878        #[prost(message, tag = "565")]
18879        Dwc3EpQueue(super::Dwc3EpQueueFtraceEvent),
18880        #[prost(message, tag = "566")]
18881        Dwc3Event(super::Dwc3EventFtraceEvent),
18882        #[prost(message, tag = "567")]
18883        Dwc3FreeRequest(super::Dwc3FreeRequestFtraceEvent),
18884        #[prost(message, tag = "568")]
18885        Dwc3GadgetEpCmd(super::Dwc3GadgetEpCmdFtraceEvent),
18886        #[prost(message, tag = "569")]
18887        Dwc3GadgetEpDisable(super::Dwc3GadgetEpDisableFtraceEvent),
18888        #[prost(message, tag = "570")]
18889        Dwc3GadgetEpEnable(super::Dwc3GadgetEpEnableFtraceEvent),
18890        #[prost(message, tag = "571")]
18891        Dwc3GadgetGenericCmd(super::Dwc3GadgetGenericCmdFtraceEvent),
18892        #[prost(message, tag = "572")]
18893        Dwc3GadgetGiveback(super::Dwc3GadgetGivebackFtraceEvent),
18894        #[prost(message, tag = "573")]
18895        Dwc3PrepareTrb(super::Dwc3PrepareTrbFtraceEvent),
18896        #[prost(message, tag = "574")]
18897        Dwc3Readl(super::Dwc3ReadlFtraceEvent),
18898        #[prost(message, tag = "575")]
18899        Dwc3Writel(super::Dwc3WritelFtraceEvent),
18900        #[prost(message, tag = "576")]
18901        CmaAllocFinish(super::CmaAllocFinishFtraceEvent),
18902        #[prost(message, tag = "577")]
18903        MmAllocContigMigrateRangeInfo(super::MmAllocContigMigrateRangeInfoFtraceEvent),
18904        #[prost(message, tag = "578")]
18905        HostFfaCall(super::HostFfaCallFtraceEvent),
18906        #[prost(message, tag = "579")]
18907        DmabufRssStat(super::DmabufRssStatFtraceEvent),
18908        #[prost(message, tag = "580")]
18909        IommuIdmap(super::IommuIdmapFtraceEvent),
18910        #[prost(message, tag = "581")]
18911        PsciMemProtect(super::PsciMemProtectFtraceEvent),
18912        #[prost(message, tag = "582")]
18913        HypervisorHostHcall(super::HypervisorHostHcallFtraceEvent),
18914        #[prost(message, tag = "583")]
18915        HypervisorHostSmc(super::HypervisorHostSmcFtraceEvent),
18916        #[prost(message, tag = "584")]
18917        HypervisorHypExit(super::HypervisorHypExitFtraceEvent),
18918        #[prost(message, tag = "585")]
18919        HypervisorIommuIdmap(super::HypervisorIommuIdmapFtraceEvent),
18920        #[prost(message, tag = "586")]
18921        HypervisorPsciMemProtect(super::HypervisorPsciMemProtectFtraceEvent),
18922        #[prost(message, tag = "587")]
18923        HypervisorHostMemAbort(super::HypervisorHostMemAbortFtraceEvent),
18924        #[prost(message, tag = "588")]
18925        HypervisorHypEnter(super::HypervisorHypEnterFtraceEvent),
18926        #[prost(message, tag = "589")]
18927        HypervisorIommuIdmapComplete(super::HypervisorIommuIdmapCompleteFtraceEvent),
18928        #[prost(message, tag = "590")]
18929        HypervisorVcpuIllegalTrap(super::HypervisorVcpuIllegalTrapFtraceEvent),
18930        #[prost(message, tag = "591")]
18931        DrmSchedJobAddDep(super::DrmSchedJobAddDepFtraceEvent),
18932        #[prost(message, tag = "592")]
18933        DrmSchedJobDone(super::DrmSchedJobDoneFtraceEvent),
18934        #[prost(message, tag = "593")]
18935        DrmSchedJobQueue(super::DrmSchedJobQueueFtraceEvent),
18936        #[prost(message, tag = "594")]
18937        DrmSchedJobRun(super::DrmSchedJobRunFtraceEvent),
18938        #[prost(message, tag = "595")]
18939        DrmSchedJobUnschedulable(super::DrmSchedJobUnschedulableFtraceEvent),
18940        #[prost(message, tag = "596")]
18941        FwtpPerfettoCounter(super::FwtpPerfettoCounterFtraceEvent),
18942        #[prost(message, tag = "597")]
18943        ScsiDispatchCmdError(super::ScsiDispatchCmdErrorFtraceEvent),
18944        #[prost(message, tag = "598")]
18945        ScsiDispatchCmdTimeout(super::ScsiDispatchCmdTimeoutFtraceEvent),
18946        #[prost(message, tag = "599")]
18947        ScsiEhWakeup(super::ScsiEhWakeupFtraceEvent),
18948        #[prost(message, tag = "600")]
18949        FwtpPerfettoSlice(super::FwtpPerfettoSliceFtraceEvent),
18950        #[prost(message, tag = "601")]
18951        GpuPowerState(super::GpuPowerStateFtraceEvent),
18952        #[prost(message, tag = "602")]
18953        GramCollision(super::GramCollisionFtraceEvent),
18954        #[prost(message, tag = "603")]
18955        F2fsLockElapsedTime(super::F2fsLockElapsedTimeFtraceEvent),
18956        #[prost(message, tag = "604")]
18957        SchedGroupTracker(super::SchedGroupTrackerFtraceEvent),
18958        #[prost(message, tag = "605")]
18959        DpuDispFrameDoneTimeout(super::DpuDispFrameDoneTimeoutFtraceEvent),
18960        #[prost(message, tag = "606")]
18961        DpuDispFrameStartTimeout(super::DpuDispFrameStartTimeoutFtraceEvent),
18962        #[prost(message, tag = "607")]
18963        MmVmscanMemcgReclaimBegin(super::MmVmscanMemcgReclaimBeginFtraceEvent),
18964        #[prost(message, tag = "608")]
18965        MmVmscanMemcgReclaimEnd(super::MmVmscanMemcgReclaimEndFtraceEvent),
18966        #[prost(message, tag = "609")]
18967        DpuDispFrameDoneMissing(super::DpuDispFrameDoneMissingFtraceEvent),
18968        #[prost(message, tag = "610")]
18969        DpuDispFrameStartMissing(super::DpuDispFrameStartMissingFtraceEvent),
18970        #[prost(message, tag = "611")]
18971        PanelSettingsFull(super::PanelSettingsFullFtraceEvent),
18972        #[prost(message, tag = "612")]
18973        PanelSettingsLite(super::PanelSettingsLiteFtraceEvent),
18974        #[prost(message, tag = "613")]
18975        DpuDispDpuLineUnderrun(super::DpuDispDpuLineUnderrunFtraceEvent),
18976        #[prost(message, tag = "614")]
18977        PsciDomainIdleExit(super::PsciDomainIdleExitFtraceEvent),
18978        #[prost(message, tag = "615")]
18979        PsciDomainIdleEnter(super::PsciDomainIdleEnterFtraceEvent),
18980        #[prost(message, tag = "616")]
18981        LongIrq(super::LongIrqFtraceEvent),
18982        #[prost(message, tag = "617")]
18983        LongSoftirq(super::LongSoftirqFtraceEvent),
18984    }
18985}
18986/// Per-CPU kernel buffer stats for the ftrace data source gathered from
18987/// /sys/kernel/tracing/per_cpu/cpuX/stats.
18988#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18989pub struct FtraceCpuStats {
18990    /// CPU index.
18991    #[prost(uint64, optional, tag = "1")]
18992    pub cpu: ::core::option::Option<u64>,
18993    /// Number of entries currently in the kernel buffer.
18994    #[prost(uint64, optional, tag = "2")]
18995    pub entries: ::core::option::Option<u64>,
18996    /// Number of events lost in kernel buffers due to overwriting of old events
18997    /// before userspace had a chance to drain them. Valid if the buffer is in
18998    /// "overwrite" mode, otherwise see |dropped_events|.
18999    #[prost(uint64, optional, tag = "3")]
19000    pub overrun: ::core::option::Option<u64>,
19001    /// This should always be zero. If not the buffer size is way too small or
19002    /// something went wrong with the tracer. Quoting the kernel: "number of
19003    /// commits failing due to the buffer wrapping around while there are
19004    /// uncommitted events, such as during an interrupt storm".
19005    #[prost(uint64, optional, tag = "4")]
19006    pub commit_overrun: ::core::option::Option<u64>,
19007    /// Size of entries currently in the kernel buffer (see |entries|) in bytes.
19008    /// The field should be named "bytes", but is misnamed for historical reasons.
19009    /// This value has known inaccuracies before Linux v6.6:
19010    /// <https://github.com/torvalds/linux/commit/45d99ea>
19011    #[prost(uint64, optional, tag = "5")]
19012    pub bytes_read: ::core::option::Option<u64>,
19013    /// The timestamp for the oldest event still in the ring buffer.
19014    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
19015    #[prost(double, optional, tag = "6")]
19016    pub oldest_event_ts: ::core::option::Option<f64>,
19017    /// The current timestamp.
19018    /// Unit: seconds for typical trace clocks (i.e. not tsc/counter).
19019    #[prost(double, optional, tag = "7")]
19020    pub now_ts: ::core::option::Option<f64>,
19021    /// If the kernel buffer has overwrite mode disabled, this will show the number
19022    /// of new events that were lost because the buffer was full. This is similar
19023    /// to |overrun| but only for the overwrite=false case.
19024    #[prost(uint64, optional, tag = "8")]
19025    pub dropped_events: ::core::option::Option<u64>,
19026    /// The number of events read (consumed) from the buffer by userspace.
19027    #[prost(uint64, optional, tag = "9")]
19028    pub read_events: ::core::option::Option<u64>,
19029}
19030/// Kprobe statistical data, gathered from /sys/kernel/tracing/kprobe_profile.
19031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19032pub struct FtraceKprobeStats {
19033    /// Cumulative number of kprobe events generated for this function
19034    #[prost(int64, optional, tag = "1")]
19035    pub hits: ::core::option::Option<i64>,
19036    /// Cumulative number of kprobe events that could not be generated for this
19037    /// function and were missed.  This happens when too much nesting
19038    /// happens between a kprobe and its kretprobe, overflowing the
19039    /// maxactives buffer.
19040    #[prost(int64, optional, tag = "2")]
19041    pub misses: ::core::option::Option<i64>,
19042}
19043/// Errors and kernel buffer stats for the ftrace data source.
19044#[derive(Clone, PartialEq, ::prost::Message)]
19045pub struct FtraceStats {
19046    /// A pair of FtraceStats is written on every trace flush:
19047    /// * START_OF_TRACE - stats recorded at the beginning of the trace.
19048    /// * END_OF_TRACE - stats recorded during the flush. In other words shortly
19049    ///                   before this packet was written. For simple traces this
19050    ///                   will be once at the end of the trace.
19051    #[prost(enumeration = "ftrace_stats::Phase", optional, tag = "1")]
19052    pub phase: ::core::option::Option<i32>,
19053    /// Per-CPU stats (one entry for each CPU).
19054    #[prost(message, repeated, tag = "2")]
19055    pub cpu_stats: ::prost::alloc::vec::Vec<FtraceCpuStats>,
19056    /// When FtraceConfig.symbolize_ksyms = true, this records the number of
19057    /// symbols parsed from /proc/kallsyms, whether they have been seen in the
19058    /// trace or not. It can be used to debug kptr_restrict or security-related
19059    /// errors.
19060    /// Note: this will be valid only when phase = END_OF_TRACE. The symbolizer is
19061    /// initialized. When START_OF_TRACE is emitted it is not ready yet.
19062    #[prost(uint32, optional, tag = "3")]
19063    pub kernel_symbols_parsed: ::core::option::Option<u32>,
19064    /// The memory used by the kernel symbolizer (KernelSymbolMap.size_bytes()).
19065    #[prost(uint32, optional, tag = "4")]
19066    pub kernel_symbols_mem_kb: ::core::option::Option<u32>,
19067    /// Atrace errors (even non-fatal ones) are reported here. A typical example is
19068    /// one or more atrace categories not available on the device.
19069    #[prost(string, optional, tag = "5")]
19070    pub atrace_errors: ::core::option::Option<::prost::alloc::string::String>,
19071    /// Error message due to exclusivity violation of a single-tenant feature.
19072    #[prost(string, optional, tag = "13")]
19073    pub exclusive_feature_error: ::core::option::Option<::prost::alloc::string::String>,
19074    /// Ftrace events requested by the config but not present on device.
19075    #[prost(string, repeated, tag = "6")]
19076    pub unknown_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19077    /// Ftrace events requested by the config and present on device, but which we
19078    /// failed to enable due to permissions, or due to a conflicting option
19079    /// (currently FtraceConfig.disable_generic_events).
19080    #[prost(string, repeated, tag = "7")]
19081    pub failed_ftrace_events: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19082    /// The data source was configured to preserve existing events in the ftrace
19083    /// buffer before the start of the trace.
19084    #[prost(bool, optional, tag = "8")]
19085    pub preserve_ftrace_buffer: ::core::option::Option<bool>,
19086    /// Unique errors encountered during reading and parsing of the raw ftrace
19087    /// data. Ring buffer ABI related errors will also be recorded in the
19088    /// affected FtraceEventBundles with a timestamp.
19089    /// Any traces with entries in this field should be investigated, as they
19090    /// indicate a bug in perfetto or the kernel.
19091    #[prost(enumeration = "FtraceParseStatus", repeated, packed = "false", tag = "9")]
19092    pub ftrace_parse_errors: ::prost::alloc::vec::Vec<i32>,
19093    /// Kprobe profile stats for functions hits and misses
19094    #[prost(message, optional, tag = "10")]
19095    pub kprobe_stats: ::core::option::Option<FtraceKprobeStats>,
19096    /// Per-cpu buffer size as returned by buffer_size_kb in pages (rounded up).
19097    /// Added in: perfetto v52.
19098    #[prost(uint32, optional, tag = "11")]
19099    pub cpu_buffer_size_pages: ::core::option::Option<u32>,
19100    /// Per-cpu buffer size as cached by our implementation (ftrace muxer), based
19101    /// on the value we're writing into the tracefs control file. Might not be
19102    /// exactly equal to |cpu_buffer_size_pages| due to the kernel allocating extra
19103    /// scratch pages (and/or other factors). Added in: perfetto v52.
19104    #[prost(uint32, optional, tag = "12")]
19105    pub cached_cpu_buffer_size_pages: ::core::option::Option<u32>,
19106}
19107/// Nested message and enum types in `FtraceStats`.
19108pub mod ftrace_stats {
19109    #[derive(
19110        Clone,
19111        Copy,
19112        Debug,
19113        PartialEq,
19114        Eq,
19115        Hash,
19116        PartialOrd,
19117        Ord,
19118        ::prost::Enumeration
19119    )]
19120    #[repr(i32)]
19121    pub enum Phase {
19122        Unspecified = 0,
19123        StartOfTrace = 1,
19124        EndOfTrace = 2,
19125    }
19126    impl Phase {
19127        /// String value of the enum field names used in the ProtoBuf definition.
19128        ///
19129        /// The values are not transformed in any way and thus are considered stable
19130        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19131        pub fn as_str_name(&self) -> &'static str {
19132            match self {
19133                Self::Unspecified => "UNSPECIFIED",
19134                Self::StartOfTrace => "START_OF_TRACE",
19135                Self::EndOfTrace => "END_OF_TRACE",
19136            }
19137        }
19138        /// Creates an enum from field names used in the ProtoBuf definition.
19139        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19140            match value {
19141                "UNSPECIFIED" => Some(Self::Unspecified),
19142                "START_OF_TRACE" => Some(Self::StartOfTrace),
19143                "END_OF_TRACE" => Some(Self::EndOfTrace),
19144                _ => None,
19145            }
19146        }
19147    }
19148}
19149/// The result of tracing one or more ftrace data pages from a single per-cpu
19150/// kernel ring buffer. If collating multiple pages' worth of events, all of
19151/// them come from contiguous pages, with no kernel data loss in between.
19152#[derive(Clone, PartialEq, ::prost::Message)]
19153pub struct FtraceEventBundle {
19154    #[prost(uint32, optional, tag = "1")]
19155    pub cpu: ::core::option::Option<u32>,
19156    #[prost(message, repeated, tag = "2")]
19157    pub event: ::prost::alloc::vec::Vec<FtraceEvent>,
19158    /// Set to true if there was data loss between the last time we've read from
19159    /// the corresponding per-cpu kernel buffer, and the earliest event recorded
19160    /// in this bundle.
19161    #[prost(bool, optional, tag = "3")]
19162    pub lost_events: ::core::option::Option<bool>,
19163    #[prost(message, optional, tag = "4")]
19164    pub compact_sched: ::core::option::Option<ftrace_event_bundle::CompactSched>,
19165    /// Perfetto will by default try to use the boottime ("boot") clock for ftrace
19166    /// timestamps as that counts during suspend, is available to userspace, and
19167    /// is coherent across cpus.
19168    ///
19169    /// If this field is set, it means that a different clock was used during
19170    /// recording. Either because the boot clock is unavailable (e.g. old kernels
19171    /// before 3.x), or the trace config has set an incompatible option
19172    /// (use_monotonic_raw_clock / preserve_ftrace_buffer). In that case,
19173    /// trace_processor will do best-effort clock alignment using timestamp pairs
19174    /// from |ftrace_timestamp| and |boot_timestamp| fields. This field is omitted
19175    /// when the ftrace clock is "boot", as that is the default assumption.
19176    ///
19177    /// Some clocks (local/global) are technically per-cpu, but we make a
19178    /// simplifying assumption that they are global, as their inter-cpu skew
19179    /// should be reasonably bounded on modern systems.
19180    ///
19181    /// Added in: perfetto v19. Android T (13).
19182    #[prost(enumeration = "FtraceClock", optional, tag = "5")]
19183    pub ftrace_clock: ::core::option::Option<i32>,
19184    /// The timestamp according to the ftrace clock, taken at the same instant as
19185    /// |boot_timestamp|. Note: timestamping is done at buffer read time, so it
19186    /// will be in the future relative to the data covered by this bundle.
19187    /// Implementation note: Populated by reading the 'now ts:' field in
19188    /// tracefs/per_cpu/cpu0/stat.
19189    ///
19190    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
19191    #[prost(int64, optional, tag = "6")]
19192    pub ftrace_timestamp: ::core::option::Option<i64>,
19193    /// The timestamp according to CLOCK_BOOTTIME, taken at the same instant as
19194    /// |ftrace_timestamp|.
19195    ///
19196    /// Set only if |ftrace_clock| != FTRACE_CLOCK_UNSPECIFIED.
19197    #[prost(int64, optional, tag = "7")]
19198    pub boot_timestamp: ::core::option::Option<i64>,
19199    #[prost(message, repeated, tag = "8")]
19200    pub error: ::prost::alloc::vec::Vec<ftrace_event_bundle::FtraceError>,
19201    /// Superseded by |previous_bundle_end_timestamp| in perfetto v47+. The
19202    /// primary difference is that this field tracked the last timestamp read from
19203    /// the per-cpu buffer, while the newer field tracks events that get
19204    /// serialised into the trace.
19205    /// Added in: perfetto v44.
19206    #[prost(uint64, optional, tag = "9")]
19207    pub last_read_event_timestamp: ::core::option::Option<u64>,
19208    /// The timestamp (using ftrace clock) of the last event written into this
19209    /// data source on this cpu. In other words: the last event in the previous
19210    /// bundle.
19211    /// Lets the trace processing find an initial timestamp after which ftrace
19212    /// data is known to be valid across all cpus. Of particular importance when
19213    /// the perfetto trace buffer is a ring buffer as well, as the overwriting of
19214    /// oldest bundles can skew the first valid timestamp per cpu significantly.
19215    /// Added in: perfetto v47.
19216    #[prost(uint64, optional, tag = "10")]
19217    pub previous_bundle_end_timestamp: ::core::option::Option<u64>,
19218    #[prost(message, repeated, tag = "11")]
19219    pub generic_event_descriptors: ::prost::alloc::vec::Vec<
19220        ftrace_event_bundle::GenericEventDescriptor,
19221    >,
19222    /// Written only on android builds if the config sets |debug_ftrace_abi|.
19223    /// Contains the raw ring buffer tracing page that the implementation could
19224    /// not parse.
19225    /// Addded in: perfetto v50.
19226    #[prost(bytes = "vec", optional, tag = "512")]
19227    pub broken_abi_trace_page: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19228}
19229/// Nested message and enum types in `FtraceEventBundle`.
19230pub mod ftrace_event_bundle {
19231    /// Optionally-enabled compact encoding of a batch of scheduling events. Only
19232    /// a subset of events & their fields is recorded.
19233    /// All fields (except comms) are stored in a structure-of-arrays form, one
19234    /// entry in each repeated field per event.
19235    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19236    pub struct CompactSched {
19237        /// Interned table of unique strings for this bundle.
19238        #[prost(string, repeated, tag = "5")]
19239        pub intern_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
19240        /// Delta-encoded timestamps across all sched_switch events within this
19241        /// bundle. The first is absolute, each next one is relative to its
19242        /// predecessor.
19243        #[prost(uint64, repeated, tag = "1")]
19244        pub switch_timestamp: ::prost::alloc::vec::Vec<u64>,
19245        #[prost(int64, repeated, tag = "2")]
19246        pub switch_prev_state: ::prost::alloc::vec::Vec<i64>,
19247        #[prost(int32, repeated, tag = "3")]
19248        pub switch_next_pid: ::prost::alloc::vec::Vec<i32>,
19249        #[prost(int32, repeated, tag = "4")]
19250        pub switch_next_prio: ::prost::alloc::vec::Vec<i32>,
19251        /// One per event, index into |intern_table| corresponding to the
19252        /// next_comm field of the event.
19253        #[prost(uint32, repeated, tag = "6")]
19254        pub switch_next_comm_index: ::prost::alloc::vec::Vec<u32>,
19255        /// Delta-encoded timestamps across all sched_waking events within this
19256        /// bundle. The first is absolute, each next one is relative to its
19257        /// predecessor.
19258        #[prost(uint64, repeated, tag = "7")]
19259        pub waking_timestamp: ::prost::alloc::vec::Vec<u64>,
19260        #[prost(int32, repeated, tag = "8")]
19261        pub waking_pid: ::prost::alloc::vec::Vec<i32>,
19262        #[prost(int32, repeated, tag = "9")]
19263        pub waking_target_cpu: ::prost::alloc::vec::Vec<i32>,
19264        #[prost(int32, repeated, tag = "10")]
19265        pub waking_prio: ::prost::alloc::vec::Vec<i32>,
19266        /// One per event, index into |intern_table| corresponding to the
19267        /// comm field of the event.
19268        #[prost(uint32, repeated, tag = "11")]
19269        pub waking_comm_index: ::prost::alloc::vec::Vec<u32>,
19270        #[prost(uint32, repeated, tag = "12")]
19271        pub waking_common_flags: ::prost::alloc::vec::Vec<u32>,
19272    }
19273    /// Errors encountered during parsing of the raw ftrace data. In case of ring
19274    /// buffer layout errors, the parser skips the rest of the offending kernel
19275    /// buffer page and continues from the next page.
19276    /// See also FtraceStats.ftrace_parse_errors, which collates all unique errors
19277    /// seen within the duration of the trace (even if the affected bundles get
19278    /// overwritten in ring buffer mode).
19279    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19280    pub struct FtraceError {
19281        /// Timestamp of the data that we're unable to parse, in the ftrace clock
19282        /// domain. Currently, we use the base timestamp of the tracing page
19283        /// containing the bad record rather than the time of the record itself.
19284        #[prost(uint64, optional, tag = "1")]
19285        pub timestamp: ::core::option::Option<u64>,
19286        #[prost(enumeration = "super::FtraceParseStatus", optional, tag = "2")]
19287        pub status: ::core::option::Option<i32>,
19288    }
19289    /// Describes the serialised |FtraceEvent| protos for events not known at
19290    /// compile time, when using the |denser_generic_event_encoding| option.
19291    /// Addded in: perfetto v50.
19292    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19293    pub struct GenericEventDescriptor {
19294        /// submessage id within FtraceEvent described by |event_descriptor|.
19295        #[prost(int32, optional, tag = "1")]
19296        pub field_id: ::core::option::Option<i32>,
19297        /// optional: the event's group, e.g. "sched" for "sched/sched_switch".
19298        /// The event name itself is in |event_descriptor.name|.
19299        #[prost(string, optional, tag = "3")]
19300        pub group_name: ::core::option::Option<::prost::alloc::string::String>,
19301        /// serialised DescriptorProto.
19302        #[prost(bytes = "vec", optional, tag = "2")]
19303        pub event_descriptor: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19304    }
19305}
19306/// GenericGpuFrequencyEvent is the standard proto to capture GPU
19307/// frequency change events in a generic kernel implementation.
19308#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19309pub struct GenericGpuFrequencyEvent {
19310    /// GPU on which the frequency change occurred.
19311    #[prost(uint32, optional, tag = "1")]
19312    pub gpu_id: ::core::option::Option<u32>,
19313    /// Frequency (kHz) of the GPU.
19314    #[prost(uint32, optional, tag = "2")]
19315    pub frequency_khz: ::core::option::Option<u32>,
19316}
19317/// GenericKernelCpuFrequencyEvent is the standard proto to capture CPU
19318/// frequency change events in a generic kernel implementation.
19319#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19320pub struct GenericKernelCpuFrequencyEvent {
19321    /// CPU in which the event occurred.
19322    #[prost(int32, optional, tag = "1")]
19323    pub cpu: ::core::option::Option<i32>,
19324    /// Frequency (Hz) of the CPU.
19325    #[prost(int64, optional, tag = "2")]
19326    pub freq_hz: ::core::option::Option<i64>,
19327}
19328/// GenericKernelTaskStateEvent is the standard proto to capture thread state
19329/// change events in a generic kernel implementation. This is mainly for the
19330/// case where scheduler events are not directly supported in the kernel's
19331/// tracing mechanism.
19332///
19333/// By capturing these task state events Perfetto is able to infer higher-level
19334/// events such as context switches and task waking events, providing as much
19335/// parity as possible with established tracing frameworks such as
19336/// Linux's ftrace.
19337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19338pub struct GenericKernelTaskStateEvent {
19339    /// CPU in which the event occurred.
19340    /// This field is only relevant with the TASK_STATE_RUNNING state. There is
19341    /// no specific meaning to the cpu field in a non-running state event.
19342    #[prost(int32, optional, tag = "1")]
19343    pub cpu: ::core::option::Option<i32>,
19344    /// Command name for the thread.
19345    #[prost(string, optional, tag = "2")]
19346    pub comm: ::core::option::Option<::prost::alloc::string::String>,
19347    /// Thread id.
19348    #[prost(int64, optional, tag = "3")]
19349    pub tid: ::core::option::Option<i64>,
19350    /// New state of the thread.
19351    #[prost(
19352        enumeration = "generic_kernel_task_state_event::TaskStateEnum",
19353        optional,
19354        tag = "4"
19355    )]
19356    pub state: ::core::option::Option<i32>,
19357    /// Priority of the thread.
19358    /// This value is OS agnostic and should only be interpreted based on the
19359    /// kernel who emitted the message.
19360    #[prost(int32, optional, tag = "5")]
19361    pub prio: ::core::option::Option<i32>,
19362}
19363/// Nested message and enum types in `GenericKernelTaskStateEvent`.
19364pub mod generic_kernel_task_state_event {
19365    /// TaskStateEnum represents the valid states of a thread.
19366    /// These states are a generic representation of the actual thread state and
19367    /// don't necessarily map one-to-one to the states the actual OS kernel
19368    /// tracks internally.
19369    ///
19370    /// Note: Consecutive TASK_STATE_RUNNING states for the same TID is considered
19371    /// an error resulting in potential data loss.
19372    #[derive(
19373        Clone,
19374        Copy,
19375        Debug,
19376        PartialEq,
19377        Eq,
19378        Hash,
19379        PartialOrd,
19380        Ord,
19381        ::prost::Enumeration
19382    )]
19383    #[repr(i32)]
19384    pub enum TaskStateEnum {
19385        TaskStateUnknown = 0,
19386        TaskStateCreated = 1,
19387        TaskStateRunnable = 2,
19388        TaskStateRunning = 3,
19389        TaskStateInterruptibleSleep = 4,
19390        TaskStateUninterruptibleSleep = 5,
19391        TaskStateStopped = 6,
19392        TaskStateDead = 7,
19393        TaskStateDestroyed = 8,
19394    }
19395    impl TaskStateEnum {
19396        /// String value of the enum field names used in the ProtoBuf definition.
19397        ///
19398        /// The values are not transformed in any way and thus are considered stable
19399        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19400        pub fn as_str_name(&self) -> &'static str {
19401            match self {
19402                Self::TaskStateUnknown => "TASK_STATE_UNKNOWN",
19403                Self::TaskStateCreated => "TASK_STATE_CREATED",
19404                Self::TaskStateRunnable => "TASK_STATE_RUNNABLE",
19405                Self::TaskStateRunning => "TASK_STATE_RUNNING",
19406                Self::TaskStateInterruptibleSleep => "TASK_STATE_INTERRUPTIBLE_SLEEP",
19407                Self::TaskStateUninterruptibleSleep => "TASK_STATE_UNINTERRUPTIBLE_SLEEP",
19408                Self::TaskStateStopped => "TASK_STATE_STOPPED",
19409                Self::TaskStateDead => "TASK_STATE_DEAD",
19410                Self::TaskStateDestroyed => "TASK_STATE_DESTROYED",
19411            }
19412        }
19413        /// Creates an enum from field names used in the ProtoBuf definition.
19414        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19415            match value {
19416                "TASK_STATE_UNKNOWN" => Some(Self::TaskStateUnknown),
19417                "TASK_STATE_CREATED" => Some(Self::TaskStateCreated),
19418                "TASK_STATE_RUNNABLE" => Some(Self::TaskStateRunnable),
19419                "TASK_STATE_RUNNING" => Some(Self::TaskStateRunning),
19420                "TASK_STATE_INTERRUPTIBLE_SLEEP" => {
19421                    Some(Self::TaskStateInterruptibleSleep)
19422                }
19423                "TASK_STATE_UNINTERRUPTIBLE_SLEEP" => {
19424                    Some(Self::TaskStateUninterruptibleSleep)
19425                }
19426                "TASK_STATE_STOPPED" => Some(Self::TaskStateStopped),
19427                "TASK_STATE_DEAD" => Some(Self::TaskStateDead),
19428                "TASK_STATE_DESTROYED" => Some(Self::TaskStateDestroyed),
19429                _ => None,
19430            }
19431        }
19432    }
19433}
19434/// GenericKernelTaskRenameEvent is the standard proto to capture the renaming
19435/// of a thread.
19436#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19437pub struct GenericKernelTaskRenameEvent {
19438    /// Thread id.
19439    #[prost(int64, optional, tag = "1")]
19440    pub tid: ::core::option::Option<i64>,
19441    /// New command name for the thread.
19442    #[prost(string, optional, tag = "2")]
19443    pub comm: ::core::option::Option<::prost::alloc::string::String>,
19444}
19445/// Metadata about the processes and threads in the trace.
19446/// The main goal of this proto is to provide a generic kernel
19447/// implementation a mechanism to outline its process structure.
19448#[derive(Clone, PartialEq, ::prost::Message)]
19449pub struct GenericKernelProcessTree {
19450    /// List of processes and threads in the kernel. These lists are incremental
19451    /// and not exhaustive. A process and its threads might show up separately in
19452    /// different ProcessTree messages. A thread might not show up at all, if
19453    /// no sched switch activity was detected, for instance:
19454    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{tid: 11, pid: 10}\] }
19455    /// #1 { threads: \[{tid: 12, pid: 10}\] }
19456    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{tid: 13, pid: 10}\] }
19457    #[prost(message, repeated, tag = "1")]
19458    pub processes: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Process>,
19459    #[prost(message, repeated, tag = "2")]
19460    pub threads: ::prost::alloc::vec::Vec<generic_kernel_process_tree::Thread>,
19461}
19462/// Nested message and enum types in `GenericKernelProcessTree`.
19463pub mod generic_kernel_process_tree {
19464    /// Representation of a thread.
19465    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19466    pub struct Thread {
19467        /// Thread id.
19468        #[prost(int64, optional, tag = "1")]
19469        pub tid: ::core::option::Option<i64>,
19470        /// Id of the parent process.
19471        #[prost(int64, optional, tag = "2")]
19472        pub pid: ::core::option::Option<i64>,
19473        /// The command name of the thread.
19474        #[prost(string, optional, tag = "3")]
19475        pub comm: ::core::option::Option<::prost::alloc::string::String>,
19476        /// True if thread is the main thread.
19477        #[prost(bool, optional, tag = "4")]
19478        pub is_main_thread: ::core::option::Option<bool>,
19479        /// True if thread is an idle thread.
19480        #[prost(bool, optional, tag = "5")]
19481        pub is_idle: ::core::option::Option<bool>,
19482    }
19483    /// Representation of a process.
19484    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19485    pub struct Process {
19486        /// Process id.
19487        #[prost(int64, optional, tag = "1")]
19488        pub pid: ::core::option::Option<i64>,
19489        /// Parent process id.
19490        #[prost(int64, optional, tag = "2")]
19491        pub ppid: ::core::option::Option<i64>,
19492        /// The command line of the process.
19493        /// If the cmdline has spaces in it, then we use the characters from
19494        /// position 0 to the first instance of the space char (' ') as the name
19495        /// of the process. If no spaces are present, then the entire cmdline is
19496        /// used as the name.
19497        #[prost(string, optional, tag = "3")]
19498        pub cmdline: ::core::option::Option<::prost::alloc::string::String>,
19499    }
19500}
19501/// Events for emitting information about GPU counters.
19502///
19503/// There are two "modes" to use these protos:
19504///    1) Using GpuCounterDescriptor. This is the simplest way to use this proto
19505///       but has the limitation that counter ids are*global* so must only be
19506///       emitted by a single producer or requires coordination between different
19507///       producers. This is the mechanism which *must* be used by Android OEMS
19508///       to be complaint with CDD/CTS tests.
19509///    2) Using InternedGpuCounterDescriptor. This is generally recommended for
19510///       more complex use-cases involving multiple producers, multiple GPUs etc.
19511#[derive(Clone, PartialEq, ::prost::Message)]
19512pub struct GpuCounterEvent {
19513    #[prost(message, repeated, tag = "2")]
19514    pub counters: ::prost::alloc::vec::Vec<gpu_counter_event::GpuCounter>,
19515    /// Identifier for GPU in a multi-gpu device.
19516    ///
19517    /// If `counter_descriptor_iid` is specified, the `gpu_id` in
19518    /// `InternedGpuCounterDescriptor` takes precedence over this field.
19519    #[prost(int32, optional, tag = "3")]
19520    pub gpu_id: ::core::option::Option<i32>,
19521    /// The specification for the GPU counters. Gives them information like the
19522    /// name of the counter, unit etc.
19523    #[prost(oneof = "gpu_counter_event::Desc", tags = "1, 4")]
19524    pub desc: ::core::option::Option<gpu_counter_event::Desc>,
19525}
19526/// Nested message and enum types in `GpuCounterEvent`.
19527pub mod gpu_counter_event {
19528    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
19529    pub struct GpuCounter {
19530        /// required. Identifier for counter.
19531        #[prost(uint32, optional, tag = "1")]
19532        pub counter_id: ::core::option::Option<u32>,
19533        /// required. Value of the counter.
19534        #[prost(oneof = "gpu_counter::Value", tags = "2, 3")]
19535        pub value: ::core::option::Option<gpu_counter::Value>,
19536    }
19537    /// Nested message and enum types in `GpuCounter`.
19538    pub mod gpu_counter {
19539        /// required. Value of the counter.
19540        #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
19541        pub enum Value {
19542            #[prost(int64, tag = "2")]
19543            IntValue(i64),
19544            #[prost(double, tag = "3")]
19545            DoubleValue(f64),
19546        }
19547    }
19548    /// The specification for the GPU counters. Gives them information like the
19549    /// name of the counter, unit etc.
19550    #[derive(Clone, PartialEq, ::prost::Oneof)]
19551    pub enum Desc {
19552        /// Must be specified on first trace packet of each session if using mode 1.
19553        /// (e.g. if you're an Android GPU vendor).
19554        #[prost(message, tag = "1")]
19555        CounterDescriptor(super::GpuCounterDescriptor),
19556        /// ID to a InternedGpuCounterDescriptor in InternedData. Must be specified
19557        /// on first trace packet of the trusted sequence if using mode 2.
19558        #[prost(uint64, tag = "4")]
19559        CounterDescriptorIid(u64),
19560    }
19561}
19562/// Interned GPU counter descriptor for sequence-scoped counter specs.
19563#[derive(Clone, PartialEq, ::prost::Message)]
19564pub struct InternedGpuCounterDescriptor {
19565    #[prost(uint64, optional, tag = "1")]
19566    pub iid: ::core::option::Option<u64>,
19567    #[prost(message, optional, tag = "2")]
19568    pub counter_descriptor: ::core::option::Option<GpuCounterDescriptor>,
19569    /// optional. Identifier for GPU in a multi-gpu device.
19570    #[prost(int32, optional, tag = "3")]
19571    pub gpu_id: ::core::option::Option<i32>,
19572}
19573/// Message for logging events GPU data producer.
19574#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19575pub struct GpuLog {
19576    #[prost(enumeration = "gpu_log::Severity", optional, tag = "1")]
19577    pub severity: ::core::option::Option<i32>,
19578    #[prost(string, optional, tag = "2")]
19579    pub tag: ::core::option::Option<::prost::alloc::string::String>,
19580    #[prost(string, optional, tag = "3")]
19581    pub log_message: ::core::option::Option<::prost::alloc::string::String>,
19582}
19583/// Nested message and enum types in `GpuLog`.
19584pub mod gpu_log {
19585    #[derive(
19586        Clone,
19587        Copy,
19588        Debug,
19589        PartialEq,
19590        Eq,
19591        Hash,
19592        PartialOrd,
19593        Ord,
19594        ::prost::Enumeration
19595    )]
19596    #[repr(i32)]
19597    pub enum Severity {
19598        LogSeverityUnspecified = 0,
19599        LogSeverityVerbose = 1,
19600        LogSeverityDebug = 2,
19601        LogSeverityInfo = 3,
19602        LogSeverityWarning = 4,
19603        LogSeverityError = 5,
19604    }
19605    impl Severity {
19606        /// String value of the enum field names used in the ProtoBuf definition.
19607        ///
19608        /// The values are not transformed in any way and thus are considered stable
19609        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19610        pub fn as_str_name(&self) -> &'static str {
19611            match self {
19612                Self::LogSeverityUnspecified => "LOG_SEVERITY_UNSPECIFIED",
19613                Self::LogSeverityVerbose => "LOG_SEVERITY_VERBOSE",
19614                Self::LogSeverityDebug => "LOG_SEVERITY_DEBUG",
19615                Self::LogSeverityInfo => "LOG_SEVERITY_INFO",
19616                Self::LogSeverityWarning => "LOG_SEVERITY_WARNING",
19617                Self::LogSeverityError => "LOG_SEVERITY_ERROR",
19618            }
19619        }
19620        /// Creates an enum from field names used in the ProtoBuf definition.
19621        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19622            match value {
19623                "LOG_SEVERITY_UNSPECIFIED" => Some(Self::LogSeverityUnspecified),
19624                "LOG_SEVERITY_VERBOSE" => Some(Self::LogSeverityVerbose),
19625                "LOG_SEVERITY_DEBUG" => Some(Self::LogSeverityDebug),
19626                "LOG_SEVERITY_INFO" => Some(Self::LogSeverityInfo),
19627                "LOG_SEVERITY_WARNING" => Some(Self::LogSeverityWarning),
19628                "LOG_SEVERITY_ERROR" => Some(Self::LogSeverityError),
19629                _ => None,
19630            }
19631        }
19632    }
19633}
19634/// Generated by Android's GpuService.
19635#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19636pub struct GpuMemTotalEvent {
19637    #[prost(uint32, optional, tag = "1")]
19638    pub gpu_id: ::core::option::Option<u32>,
19639    #[prost(uint32, optional, tag = "2")]
19640    pub pid: ::core::option::Option<u32>,
19641    #[prost(uint64, optional, tag = "3")]
19642    pub size: ::core::option::Option<u64>,
19643}
19644/// next id: 22
19645#[derive(Clone, PartialEq, ::prost::Message)]
19646pub struct GpuRenderStageEvent {
19647    /// required. Unique ID for the event.
19648    #[prost(uint64, optional, tag = "1")]
19649    pub event_id: ::core::option::Option<u64>,
19650    /// optional. Duration of the event in nanoseconds. If unset, this is a
19651    /// single time point event.
19652    #[prost(uint64, optional, tag = "2")]
19653    pub duration: ::core::option::Option<u64>,
19654    /// required. ID to a hardware queue description in the specifications.
19655    /// InternedGpuRenderStageSpecification
19656    #[prost(uint64, optional, tag = "13")]
19657    pub hw_queue_iid: ::core::option::Option<u64>,
19658    /// required. ID to a render stage description in the specifications.
19659    /// InternedGpuRenderStageSpecification
19660    #[prost(uint64, optional, tag = "14")]
19661    pub stage_iid: ::core::option::Option<u64>,
19662    /// optional. Identifier for GPU in a multi-gpu device.
19663    #[prost(int32, optional, tag = "11")]
19664    pub gpu_id: ::core::option::Option<i32>,
19665    /// required. Graphics context for the event.
19666    /// For OpenGL, this is the GL context.
19667    /// For Vulkan, this is the VkDevice.
19668    #[prost(uint64, optional, tag = "5")]
19669    pub context: ::core::option::Option<u64>,
19670    /// optional. The render target for this event.
19671    /// For OpenGL, this is the GL frame buffer handle.
19672    /// For Vulkan, this is the VkFrameBuffer handle.
19673    #[prost(uint64, optional, tag = "8")]
19674    pub render_target_handle: ::core::option::Option<u64>,
19675    /// optional. Submission ID generated by the UMD.
19676    /// For OpenGL, the ID should map to an API submission (e.g., glFlush,
19677    /// glFinish, eglSwapBufffers) event.  The set of submissions to the HW due
19678    /// to a single API submission should share the same ID.
19679    /// For Vulkan, it should map 1:1 with a vkQueueSubmit.
19680    #[prost(uint32, optional, tag = "10")]
19681    pub submission_id: ::core::option::Option<u32>,
19682    #[prost(message, repeated, tag = "6")]
19683    pub extra_data: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraData>,
19684    /// optional. The Vulkan render pass handle.
19685    #[prost(uint64, optional, tag = "9")]
19686    pub render_pass_handle: ::core::option::Option<u64>,
19687    /// optional. An ID for the render pass instance. This is used to correlate
19688    /// different events on different queues produced by the same Vulkan render
19689    /// pass instance.
19690    #[prost(uint64, optional, tag = "16")]
19691    pub render_pass_instance_id: ::core::option::Option<u64>,
19692    /// optional. A bit mask representing which render subpasses contributed to
19693    /// this render stage event.  Subpass index 0 is represented by setting the
19694    /// LSB of the mask.  Additional mask can be added for subpass index greater
19695    /// than 63.
19696    #[prost(uint64, repeated, packed = "false", tag = "15")]
19697    pub render_subpass_index_mask: ::prost::alloc::vec::Vec<u64>,
19698    /// optional. The Vulkan command buffer handle.
19699    #[prost(uint64, optional, tag = "12")]
19700    pub command_buffer_handle: ::core::option::Option<u64>,
19701    /// Event IDs of other GpuRenderStageEvents that this event
19702    /// had to wait on before it could run.
19703    #[prost(uint64, repeated, packed = "false", tag = "18")]
19704    pub event_wait_ids: ::prost::alloc::vec::Vec<u64>,
19705    /// optional. ID to a compute kernel description in the interned data.
19706    /// InternedComputeKernel
19707    #[prost(uint64, optional, tag = "19")]
19708    pub kernel_iid: ::core::option::Option<u64>,
19709    /// optional. Compute kernel launch parameters for this event.
19710    #[prost(message, optional, tag = "21")]
19711    pub launch: ::core::option::Option<gpu_render_stage_event::ComputeKernelLaunch>,
19712    /// Deprecated.  Use hw_queue_iid and stage_iid to refer to
19713    /// InternedGpuRenderStageSpecification instead.
19714    #[deprecated]
19715    #[prost(message, optional, tag = "7")]
19716    pub specifications: ::core::option::Option<gpu_render_stage_event::Specifications>,
19717    /// Deprecated. Use hw_queue_iid instead;
19718    #[deprecated]
19719    #[prost(int32, optional, tag = "3")]
19720    pub hw_queue_id: ::core::option::Option<i32>,
19721    /// Deprecated. Use stage_iid instead;
19722    #[deprecated]
19723    #[prost(int32, optional, tag = "4")]
19724    pub stage_id: ::core::option::Option<i32>,
19725    /// optional. Custom name for this render stage event. When set, this
19726    /// provides a name for the stage instead of using the name from the stage
19727    /// specification.
19728    #[prost(oneof = "gpu_render_stage_event::NameField", tags = "17, 20")]
19729    pub name_field: ::core::option::Option<gpu_render_stage_event::NameField>,
19730}
19731/// Nested message and enum types in `GpuRenderStageEvent`.
19732pub mod gpu_render_stage_event {
19733    /// optional. Additional data for the user. This may include attributes for
19734    /// the event like resource ids, shaders, etc.
19735    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19736    pub struct ExtraData {
19737        #[prost(string, optional, tag = "1")]
19738        pub name: ::core::option::Option<::prost::alloc::string::String>,
19739        #[prost(string, optional, tag = "2")]
19740        pub value: ::core::option::Option<::prost::alloc::string::String>,
19741    }
19742    /// 3D unsigned integer vector for grid and workgroup dimensions.
19743    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19744    pub struct Dim3 {
19745        #[prost(uint32, optional, tag = "1")]
19746        pub x: ::core::option::Option<u32>,
19747        #[prost(uint32, optional, tag = "2")]
19748        pub y: ::core::option::Option<u32>,
19749        #[prost(uint32, optional, tag = "3")]
19750        pub z: ::core::option::Option<u32>,
19751    }
19752    /// Typed key/value argument for extending compute kernel descriptions
19753    /// and launch parameters with custom data.
19754    #[derive(Clone, PartialEq, ::prost::Message)]
19755    pub struct ExtraComputeArg {
19756        #[prost(oneof = "extra_compute_arg::NameField", tags = "1, 2")]
19757        pub name_field: ::core::option::Option<extra_compute_arg::NameField>,
19758        #[prost(oneof = "extra_compute_arg::Value", tags = "3, 4, 5, 6, 7")]
19759        pub value: ::core::option::Option<extra_compute_arg::Value>,
19760    }
19761    /// Nested message and enum types in `ExtraComputeArg`.
19762    pub mod extra_compute_arg {
19763        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19764        pub enum NameField {
19765            /// Interned InternedComputeArgName.
19766            #[prost(uint64, tag = "1")]
19767            NameIid(u64),
19768            /// Non-interned variant.
19769            #[prost(string, tag = "2")]
19770            Name(::prost::alloc::string::String),
19771        }
19772        #[derive(Clone, PartialEq, ::prost::Oneof)]
19773        pub enum Value {
19774            #[prost(int64, tag = "3")]
19775            IntValue(i64),
19776            #[prost(uint64, tag = "4")]
19777            UintValue(u64),
19778            #[prost(double, tag = "5")]
19779            DoubleValue(f64),
19780            #[prost(string, tag = "6")]
19781            StringValue(::prost::alloc::string::String),
19782            /// Interned InternedString via debug_annotation_string_values.
19783            #[prost(uint64, tag = "7")]
19784            StringValueIid(u64),
19785        }
19786    }
19787    /// Compute kernel launch parameters for a single dispatch.
19788    #[derive(Clone, PartialEq, ::prost::Message)]
19789    pub struct ComputeKernelLaunch {
19790        /// Grid dimensions (number of workgroups in each dimension).
19791        #[prost(message, optional, tag = "1")]
19792        pub grid_size: ::core::option::Option<Dim3>,
19793        /// Workgroup dimensions (number of threads per workgroup in each dimension).
19794        #[prost(message, optional, tag = "2")]
19795        pub workgroup_size: ::core::option::Option<Dim3>,
19796        /// Additional typed launch parameters (e.g. registers_per_thread,
19797        /// shared_mem_dynamic, shared_mem_static).
19798        #[prost(message, repeated, tag = "3")]
19799        pub args: ::prost::alloc::vec::Vec<ExtraComputeArg>,
19800    }
19801    /// Deprecated.  Use InternedGpuRenderStageSpecification instead.
19802    /// The first trace packet of each session should include a Specifications
19803    /// to enumerate *all* IDs that will be used. The timestamp of this packet
19804    /// must be earlier than all other packets. Only one packet with Specifications
19805    /// is expected.
19806    #[derive(Clone, PartialEq, ::prost::Message)]
19807    pub struct Specifications {
19808        #[prost(message, optional, tag = "1")]
19809        pub context_spec: ::core::option::Option<specifications::ContextSpec>,
19810        /// Labels to categorize the hw Queue this event goes on.
19811        #[prost(message, repeated, tag = "2")]
19812        pub hw_queue: ::prost::alloc::vec::Vec<specifications::Description>,
19813        /// Labels to categorize render stage(binning, render, compute etc).
19814        #[prost(message, repeated, tag = "3")]
19815        pub stage: ::prost::alloc::vec::Vec<specifications::Description>,
19816    }
19817    /// Nested message and enum types in `Specifications`.
19818    pub mod specifications {
19819        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19820        pub struct ContextSpec {
19821            #[prost(uint64, optional, tag = "1")]
19822            pub context: ::core::option::Option<u64>,
19823            #[prost(int32, optional, tag = "2")]
19824            pub pid: ::core::option::Option<i32>,
19825        }
19826        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19827        pub struct Description {
19828            #[prost(string, optional, tag = "1")]
19829            pub name: ::core::option::Option<::prost::alloc::string::String>,
19830            #[prost(string, optional, tag = "2")]
19831            pub description: ::core::option::Option<::prost::alloc::string::String>,
19832        }
19833    }
19834    /// optional. Custom name for this render stage event. When set, this
19835    /// provides a name for the stage instead of using the name from the stage
19836    /// specification.
19837    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
19838    pub enum NameField {
19839        #[prost(string, tag = "17")]
19840        Name(::prost::alloc::string::String),
19841        /// Interned event name. Refers to EventName in InternedData.
19842        #[prost(uint64, tag = "20")]
19843        NameIid(u64),
19844    }
19845}
19846/// The iid is the numeric value of either the GL Context or the VkDevice
19847/// handle.
19848#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19849pub struct InternedGraphicsContext {
19850    #[prost(uint64, optional, tag = "1")]
19851    pub iid: ::core::option::Option<u64>,
19852    #[prost(int32, optional, tag = "2")]
19853    pub pid: ::core::option::Option<i32>,
19854    #[prost(enumeration = "interned_graphics_context::Api", optional, tag = "3")]
19855    pub api: ::core::option::Option<i32>,
19856}
19857/// Nested message and enum types in `InternedGraphicsContext`.
19858pub mod interned_graphics_context {
19859    #[derive(
19860        Clone,
19861        Copy,
19862        Debug,
19863        PartialEq,
19864        Eq,
19865        Hash,
19866        PartialOrd,
19867        Ord,
19868        ::prost::Enumeration
19869    )]
19870    #[repr(i32)]
19871    pub enum Api {
19872        Undefined = 0,
19873        OpenGl = 1,
19874        Vulkan = 2,
19875        OpenCl = 3,
19876        Cuda = 4,
19877        Hip = 5,
19878    }
19879    impl Api {
19880        /// String value of the enum field names used in the ProtoBuf definition.
19881        ///
19882        /// The values are not transformed in any way and thus are considered stable
19883        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19884        pub fn as_str_name(&self) -> &'static str {
19885            match self {
19886                Self::Undefined => "UNDEFINED",
19887                Self::OpenGl => "OPEN_GL",
19888                Self::Vulkan => "VULKAN",
19889                Self::OpenCl => "OPEN_CL",
19890                Self::Cuda => "CUDA",
19891                Self::Hip => "HIP",
19892            }
19893        }
19894        /// Creates an enum from field names used in the ProtoBuf definition.
19895        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19896            match value {
19897                "UNDEFINED" => Some(Self::Undefined),
19898                "OPEN_GL" => Some(Self::OpenGl),
19899                "VULKAN" => Some(Self::Vulkan),
19900                "OPEN_CL" => Some(Self::OpenCl),
19901                "CUDA" => Some(Self::Cuda),
19902                "HIP" => Some(Self::Hip),
19903                _ => None,
19904            }
19905        }
19906    }
19907}
19908#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19909pub struct InternedGpuRenderStageSpecification {
19910    #[prost(uint64, optional, tag = "1")]
19911    pub iid: ::core::option::Option<u64>,
19912    #[prost(string, optional, tag = "2")]
19913    pub name: ::core::option::Option<::prost::alloc::string::String>,
19914    #[prost(string, optional, tag = "3")]
19915    pub description: ::core::option::Option<::prost::alloc::string::String>,
19916    #[prost(
19917        enumeration = "interned_gpu_render_stage_specification::RenderStageCategory",
19918        optional,
19919        tag = "4"
19920    )]
19921    pub category: ::core::option::Option<i32>,
19922}
19923/// Nested message and enum types in `InternedGpuRenderStageSpecification`.
19924pub mod interned_gpu_render_stage_specification {
19925    #[derive(
19926        Clone,
19927        Copy,
19928        Debug,
19929        PartialEq,
19930        Eq,
19931        Hash,
19932        PartialOrd,
19933        Ord,
19934        ::prost::Enumeration
19935    )]
19936    #[repr(i32)]
19937    pub enum RenderStageCategory {
19938        Other = 0,
19939        Graphics = 1,
19940        Compute = 2,
19941    }
19942    impl RenderStageCategory {
19943        /// String value of the enum field names used in the ProtoBuf definition.
19944        ///
19945        /// The values are not transformed in any way and thus are considered stable
19946        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19947        pub fn as_str_name(&self) -> &'static str {
19948            match self {
19949                Self::Other => "OTHER",
19950                Self::Graphics => "GRAPHICS",
19951                Self::Compute => "COMPUTE",
19952            }
19953        }
19954        /// Creates an enum from field names used in the ProtoBuf definition.
19955        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19956            match value {
19957                "OTHER" => Some(Self::Other),
19958                "GRAPHICS" => Some(Self::Graphics),
19959                "COMPUTE" => Some(Self::Compute),
19960                _ => None,
19961            }
19962        }
19963    }
19964}
19965#[derive(Clone, PartialEq, ::prost::Message)]
19966pub struct InternedComputeKernel {
19967    #[prost(uint64, optional, tag = "1")]
19968    pub iid: ::core::option::Option<u64>,
19969    #[prost(string, optional, tag = "2")]
19970    pub name: ::core::option::Option<::prost::alloc::string::String>,
19971    #[prost(string, optional, tag = "3")]
19972    pub demangled_name: ::core::option::Option<::prost::alloc::string::String>,
19973    #[prost(string, optional, tag = "4")]
19974    pub arch: ::core::option::Option<::prost::alloc::string::String>,
19975    /// Additional typed kernel attributes (e.g. static resource limits).
19976    #[prost(message, repeated, tag = "5")]
19977    pub args: ::prost::alloc::vec::Vec<gpu_render_stage_event::ExtraComputeArg>,
19978}
19979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19980pub struct InternedComputeArgName {
19981    #[prost(uint64, optional, tag = "1")]
19982    pub iid: ::core::option::Option<u64>,
19983    #[prost(string, optional, tag = "2")]
19984    pub name: ::core::option::Option<::prost::alloc::string::String>,
19985}
19986/// Message for recording the Vulkan call.
19987#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19988pub struct VulkanApiEvent {
19989    #[prost(oneof = "vulkan_api_event::Event", tags = "1, 2")]
19990    pub event: ::core::option::Option<vulkan_api_event::Event>,
19991}
19992/// Nested message and enum types in `VulkanApiEvent`.
19993pub mod vulkan_api_event {
19994    /// For recording vkSetDebugUtilsObjectNameEXT and
19995    /// vkDebugMarkerSetObjectNameEXT
19996    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19997    pub struct VkDebugUtilsObjectName {
19998        #[prost(uint32, optional, tag = "1")]
19999        pub pid: ::core::option::Option<u32>,
20000        #[prost(uint64, optional, tag = "2")]
20001        pub vk_device: ::core::option::Option<u64>,
20002        /// VkObjectType.  Value must match
20003        /// <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkObjectType.html.>
20004        #[prost(int32, optional, tag = "3")]
20005        pub object_type: ::core::option::Option<i32>,
20006        #[prost(uint64, optional, tag = "4")]
20007        pub object: ::core::option::Option<u64>,
20008        #[prost(string, optional, tag = "5")]
20009        pub object_name: ::core::option::Option<::prost::alloc::string::String>,
20010    }
20011    /// For recording vkQueueSubmit call.
20012    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20013    pub struct VkQueueSubmit {
20014        #[prost(uint64, optional, tag = "1")]
20015        pub duration_ns: ::core::option::Option<u64>,
20016        #[prost(uint32, optional, tag = "2")]
20017        pub pid: ::core::option::Option<u32>,
20018        #[prost(uint32, optional, tag = "3")]
20019        pub tid: ::core::option::Option<u32>,
20020        #[prost(uint64, optional, tag = "4")]
20021        pub vk_queue: ::core::option::Option<u64>,
20022        #[prost(uint64, repeated, packed = "false", tag = "5")]
20023        pub vk_command_buffers: ::prost::alloc::vec::Vec<u64>,
20024        /// Submission ID.  An identifier unique to each vkQueueSubmit call.  This
20025        /// submission_id must match GpuRenderStageEvent.submission_id if the
20026        /// GpuRenderStageEvent is created due to this vkQueueSubmit.
20027        #[prost(uint32, optional, tag = "6")]
20028        pub submission_id: ::core::option::Option<u32>,
20029    }
20030    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20031    pub enum Event {
20032        #[prost(message, tag = "1")]
20033        VkDebugUtilsObjectName(VkDebugUtilsObjectName),
20034        #[prost(message, tag = "2")]
20035        VkQueueSubmit(VkQueueSubmit),
20036    }
20037}
20038/// All the information that cannot be sent within a VulkanMemoryEvent message,
20039/// are sent as annotations to the main memory event. One example is the
20040/// properties of the object that consumes the allocated memory, for example, a
20041/// buffer or an image.
20042/// key_iid and string_iid are both interned strings. Original string value is
20043/// stored in vulkan_memory_keys from
20044/// protos/perfetto/trace/interned_data/interned_data.proto.
20045#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20046pub struct VulkanMemoryEventAnnotation {
20047    #[prost(uint64, optional, tag = "1")]
20048    pub key_iid: ::core::option::Option<u64>,
20049    #[prost(oneof = "vulkan_memory_event_annotation::Value", tags = "2, 3, 4")]
20050    pub value: ::core::option::Option<vulkan_memory_event_annotation::Value>,
20051}
20052/// Nested message and enum types in `VulkanMemoryEventAnnotation`.
20053pub mod vulkan_memory_event_annotation {
20054    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
20055    pub enum Value {
20056        #[prost(int64, tag = "2")]
20057        IntValue(i64),
20058        #[prost(double, tag = "3")]
20059        DoubleValue(f64),
20060        #[prost(uint64, tag = "4")]
20061        StringIid(u64),
20062    }
20063}
20064/// Each VulkanMemoryEvent encompasses information regarding one single function
20065/// call that results in reserving, binding or freeing host or GPU memory. There
20066/// is a special message type, ANNOTATIONS, which is used to communicate
20067/// information that are not directly related to a memory event, nonetheless are
20068/// essential to understand the memory usage. An example is the size and memory
20069/// types of the memory heaps.
20070///
20071/// Next reserved id: 10 (up to 15).
20072/// Next id: 21.
20073#[derive(Clone, PartialEq, ::prost::Message)]
20074pub struct VulkanMemoryEvent {
20075    #[prost(enumeration = "vulkan_memory_event::Source", optional, tag = "1")]
20076    pub source: ::core::option::Option<i32>,
20077    #[prost(enumeration = "vulkan_memory_event::Operation", optional, tag = "2")]
20078    pub operation: ::core::option::Option<i32>,
20079    #[prost(int64, optional, tag = "3")]
20080    pub timestamp: ::core::option::Option<i64>,
20081    #[prost(uint32, optional, tag = "4")]
20082    pub pid: ::core::option::Option<u32>,
20083    #[prost(fixed64, optional, tag = "5")]
20084    pub memory_address: ::core::option::Option<u64>,
20085    #[prost(uint64, optional, tag = "6")]
20086    pub memory_size: ::core::option::Option<u64>,
20087    /// Interned string. Original string value is stored in function_names from
20088    /// protos/perfetto/trace/interned_data/interned_data.proto.
20089    #[prost(uint64, optional, tag = "7")]
20090    pub caller_iid: ::core::option::Option<u64>,
20091    #[prost(enumeration = "vulkan_memory_event::AllocationScope", optional, tag = "8")]
20092    pub allocation_scope: ::core::option::Option<i32>,
20093    /// Extra related information, e.g., create configs, etc.
20094    #[prost(message, repeated, tag = "9")]
20095    pub annotations: ::prost::alloc::vec::Vec<VulkanMemoryEventAnnotation>,
20096    /// Field IDs used for device memory (low sampling rate)
20097    #[prost(fixed64, optional, tag = "16")]
20098    pub device: ::core::option::Option<u64>,
20099    #[prost(fixed64, optional, tag = "17")]
20100    pub device_memory: ::core::option::Option<u64>,
20101    #[prost(uint32, optional, tag = "18")]
20102    pub memory_type: ::core::option::Option<u32>,
20103    #[prost(uint32, optional, tag = "19")]
20104    pub heap: ::core::option::Option<u32>,
20105    #[prost(fixed64, optional, tag = "20")]
20106    pub object_handle: ::core::option::Option<u64>,
20107}
20108/// Nested message and enum types in `VulkanMemoryEvent`.
20109pub mod vulkan_memory_event {
20110    #[derive(
20111        Clone,
20112        Copy,
20113        Debug,
20114        PartialEq,
20115        Eq,
20116        Hash,
20117        PartialOrd,
20118        Ord,
20119        ::prost::Enumeration
20120    )]
20121    #[repr(i32)]
20122    pub enum Source {
20123        Unspecified = 0,
20124        Driver = 1,
20125        Device = 2,
20126        DeviceMemory = 3,
20127        Buffer = 4,
20128        Image = 5,
20129    }
20130    impl Source {
20131        /// String value of the enum field names used in the ProtoBuf definition.
20132        ///
20133        /// The values are not transformed in any way and thus are considered stable
20134        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20135        pub fn as_str_name(&self) -> &'static str {
20136            match self {
20137                Self::Unspecified => "SOURCE_UNSPECIFIED",
20138                Self::Driver => "SOURCE_DRIVER",
20139                Self::Device => "SOURCE_DEVICE",
20140                Self::DeviceMemory => "SOURCE_DEVICE_MEMORY",
20141                Self::Buffer => "SOURCE_BUFFER",
20142                Self::Image => "SOURCE_IMAGE",
20143            }
20144        }
20145        /// Creates an enum from field names used in the ProtoBuf definition.
20146        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20147            match value {
20148                "SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
20149                "SOURCE_DRIVER" => Some(Self::Driver),
20150                "SOURCE_DEVICE" => Some(Self::Device),
20151                "SOURCE_DEVICE_MEMORY" => Some(Self::DeviceMemory),
20152                "SOURCE_BUFFER" => Some(Self::Buffer),
20153                "SOURCE_IMAGE" => Some(Self::Image),
20154                _ => None,
20155            }
20156        }
20157    }
20158    #[derive(
20159        Clone,
20160        Copy,
20161        Debug,
20162        PartialEq,
20163        Eq,
20164        Hash,
20165        PartialOrd,
20166        Ord,
20167        ::prost::Enumeration
20168    )]
20169    #[repr(i32)]
20170    pub enum Operation {
20171        OpUnspecified = 0,
20172        /// alloc, create
20173        OpCreate = 1,
20174        /// free, destroy(non-bound)
20175        OpDestroy = 2,
20176        /// bind buffer and image
20177        OpBind = 3,
20178        /// destroy (bound)
20179        OpDestroyBound = 4,
20180        /// only annotations
20181        OpAnnotations = 5,
20182    }
20183    impl Operation {
20184        /// String value of the enum field names used in the ProtoBuf definition.
20185        ///
20186        /// The values are not transformed in any way and thus are considered stable
20187        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20188        pub fn as_str_name(&self) -> &'static str {
20189            match self {
20190                Self::OpUnspecified => "OP_UNSPECIFIED",
20191                Self::OpCreate => "OP_CREATE",
20192                Self::OpDestroy => "OP_DESTROY",
20193                Self::OpBind => "OP_BIND",
20194                Self::OpDestroyBound => "OP_DESTROY_BOUND",
20195                Self::OpAnnotations => "OP_ANNOTATIONS",
20196            }
20197        }
20198        /// Creates an enum from field names used in the ProtoBuf definition.
20199        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20200            match value {
20201                "OP_UNSPECIFIED" => Some(Self::OpUnspecified),
20202                "OP_CREATE" => Some(Self::OpCreate),
20203                "OP_DESTROY" => Some(Self::OpDestroy),
20204                "OP_BIND" => Some(Self::OpBind),
20205                "OP_DESTROY_BOUND" => Some(Self::OpDestroyBound),
20206                "OP_ANNOTATIONS" => Some(Self::OpAnnotations),
20207                _ => None,
20208            }
20209        }
20210    }
20211    #[derive(
20212        Clone,
20213        Copy,
20214        Debug,
20215        PartialEq,
20216        Eq,
20217        Hash,
20218        PartialOrd,
20219        Ord,
20220        ::prost::Enumeration
20221    )]
20222    #[repr(i32)]
20223    pub enum AllocationScope {
20224        ScopeUnspecified = 0,
20225        ScopeCommand = 1,
20226        ScopeObject = 2,
20227        ScopeCache = 3,
20228        ScopeDevice = 4,
20229        ScopeInstance = 5,
20230    }
20231    impl AllocationScope {
20232        /// String value of the enum field names used in the ProtoBuf definition.
20233        ///
20234        /// The values are not transformed in any way and thus are considered stable
20235        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20236        pub fn as_str_name(&self) -> &'static str {
20237            match self {
20238                Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
20239                Self::ScopeCommand => "SCOPE_COMMAND",
20240                Self::ScopeObject => "SCOPE_OBJECT",
20241                Self::ScopeCache => "SCOPE_CACHE",
20242                Self::ScopeDevice => "SCOPE_DEVICE",
20243                Self::ScopeInstance => "SCOPE_INSTANCE",
20244            }
20245        }
20246        /// Creates an enum from field names used in the ProtoBuf definition.
20247        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20248            match value {
20249                "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
20250                "SCOPE_COMMAND" => Some(Self::ScopeCommand),
20251                "SCOPE_OBJECT" => Some(Self::ScopeObject),
20252                "SCOPE_CACHE" => Some(Self::ScopeCache),
20253                "SCOPE_DEVICE" => Some(Self::ScopeDevice),
20254                "SCOPE_INSTANCE" => Some(Self::ScopeInstance),
20255                _ => None,
20256            }
20257        }
20258    }
20259}
20260/// The interning fields in this file can refer to 2 different intern tables,
20261/// depending on the message they are used in. If the interned fields are present
20262/// in ProfilePacket proto, then the intern tables included in the ProfilePacket
20263/// should be used. If the intered fields are present in the
20264/// StreamingProfilePacket proto, then the intern tables included in all of the
20265/// previous InternedData message with same sequence ID should be used.
20266/// TODO(fmayer): Move to the intern tables to a common location.
20267#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20268pub struct InternedString {
20269    /// Interning key. Starts from 1, 0 is the same as "not set".
20270    #[prost(uint64, optional, tag = "1")]
20271    pub iid: ::core::option::Option<u64>,
20272    /// The actual string.
20273    #[prost(bytes = "vec", optional, tag = "2")]
20274    pub str: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20275}
20276/// Source line info.
20277#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20278pub struct Line {
20279    #[prost(string, optional, tag = "1")]
20280    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20281    #[prost(string, optional, tag = "2")]
20282    pub source_file_name: ::core::option::Option<::prost::alloc::string::String>,
20283    #[prost(uint32, optional, tag = "3")]
20284    pub line_number: ::core::option::Option<u32>,
20285}
20286/// Symbols for a given address in a module.
20287#[derive(Clone, PartialEq, ::prost::Message)]
20288pub struct AddressSymbols {
20289    #[prost(uint64, optional, tag = "1")]
20290    pub address: ::core::option::Option<u64>,
20291    /// Source lines that correspond to this address.
20292    ///
20293    /// These are repeated because when inlining happens, multiple functions'
20294    /// frames can be at a single address. Imagine function Foo calling the
20295    /// std::vector<int> constructor, which gets inlined at 0xf00. We then get
20296    /// both Foo and the std::vector<int> constructor when we symbolize the
20297    /// address.
20298    #[prost(message, repeated, tag = "2")]
20299    pub lines: ::prost::alloc::vec::Vec<Line>,
20300}
20301/// Symbols for addresses seen in a module.
20302/// Used in re-symbolisation of complete traces.
20303#[derive(Clone, PartialEq, ::prost::Message)]
20304pub struct ModuleSymbols {
20305    /// Fully qualified path to the mapping.
20306    /// E.g. /system/lib64/libc.so.
20307    #[prost(string, optional, tag = "1")]
20308    pub path: ::core::option::Option<::prost::alloc::string::String>,
20309    /// .note.gnu.build-id on Linux (not hex encoded).
20310    /// uuid on MacOS.
20311    /// Module GUID on Windows.
20312    #[prost(string, optional, tag = "2")]
20313    pub build_id: ::core::option::Option<::prost::alloc::string::String>,
20314    #[prost(message, repeated, tag = "3")]
20315    pub address_symbols: ::prost::alloc::vec::Vec<AddressSymbols>,
20316}
20317#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20318pub struct Mapping {
20319    /// Interning key.
20320    /// Starts from 1, 0 is the same as "not set".
20321    #[prost(uint64, optional, tag = "1")]
20322    pub iid: ::core::option::Option<u64>,
20323    /// Interning key.
20324    /// Starts from 1, 0 is the same as "not set".
20325    #[prost(uint64, optional, tag = "2")]
20326    pub build_id: ::core::option::Option<u64>,
20327    /// The linker may create multiple memory mappings for the same shared
20328    /// library.
20329    /// This is so that the ELF header is mapped as read only, while the
20330    /// executable memory is mapped as executable only.
20331    /// The details of this depend on the linker, a possible mapping of an ELF
20332    /// file is this:
20333    ///          +----------------------+
20334    /// ELF     |xxxxxxxxxyyyyyyyyyyyyy|
20335    ///          +---------+------------+
20336    ///          |         |
20337    ///          | read    | executable
20338    ///          v mapping v mapping
20339    ///          +----------------------+
20340    /// Memory  |xxxxxxxxx|yyyyyyyyyyyy|
20341    ///          +------------------+---+
20342    ///          ^         ^        ^
20343    ///          +         +        +
20344    ///        start     exact    relpc
20345    ///        offset   offset    0x1800
20346    ///        0x0000   0x1000
20347    ///
20348    /// exact_offset is the offset into the library file of this mapping.
20349    /// start_offset is the offset into the library file of the first mapping
20350    /// for that library. For native libraries (.so files) this should be 0.
20351    ///
20352    /// This is not set on Android 10.
20353    #[prost(uint64, optional, tag = "8")]
20354    pub exact_offset: ::core::option::Option<u64>,
20355    #[prost(uint64, optional, tag = "3")]
20356    pub start_offset: ::core::option::Option<u64>,
20357    #[prost(uint64, optional, tag = "4")]
20358    pub start: ::core::option::Option<u64>,
20359    #[prost(uint64, optional, tag = "5")]
20360    pub end: ::core::option::Option<u64>,
20361    /// Libunwindstack-specific concept, not to be confused with bionic linker's
20362    /// notion of load_bias. Needed to correct relative pc addresses (as produced
20363    /// by libunwindstack) when doing offline resymbolisation.
20364    ///
20365    /// For an executable ELF PT_LOAD segment, this is:
20366    ///    p_vaddr - p_offset
20367    ///
20368    /// Where p_offset means that the code is at that offset into the ELF file on
20369    /// disk. While p_vaddr is the offset at which the code gets *mapped*, relative
20370    /// to where the linker loads the ELF into the address space. For most ELFs,
20371    /// the two values are identical and therefore load_bias is zero.
20372    #[prost(uint64, optional, tag = "6")]
20373    pub load_bias: ::core::option::Option<u64>,
20374    /// E.g. \["system", "lib64", "libc.so"\]
20375    /// id of string.
20376    #[prost(uint64, repeated, packed = "false", tag = "7")]
20377    pub path_string_ids: ::prost::alloc::vec::Vec<u64>,
20378}
20379#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20380pub struct Frame {
20381    /// Interning key. Starts from 1, 0 is the same as "not set".
20382    #[prost(uint64, optional, tag = "1")]
20383    pub iid: ::core::option::Option<u64>,
20384    /// E.g. "fopen"
20385    /// id of string.
20386    #[prost(uint64, optional, tag = "2")]
20387    pub function_name_id: ::core::option::Option<u64>,
20388    /// The mapping in which this frame's instruction pointer resides.
20389    /// iid of Mapping.iid.
20390    ///
20391    /// If set (non-zero), rel_pc MUST also be set. If mapping_id is 0 (not set),
20392    /// this frame has no associated memory mapping (e.g., symbolized frames
20393    /// without address information).
20394    ///
20395    /// Starts from 1, 0 is the same as "not set".
20396    #[prost(uint64, optional, tag = "3")]
20397    pub mapping_id: ::core::option::Option<u64>,
20398    /// Instruction pointer relative to the start of the mapping.
20399    /// MUST be set if mapping_id is set (non-zero). Ignored if mapping_id is 0.
20400    #[prost(uint64, optional, tag = "4")]
20401    pub rel_pc: ::core::option::Option<u64>,
20402    /// Source file path for this frame.
20403    /// This is typically set during online symbolization when symbol information
20404    /// is available at trace collection time. If not set, source file paths may be
20405    /// added later via offline symbolization (see ModuleSymbols).
20406    ///
20407    /// Starts from 1, 0 is the same as "not set".
20408    ///
20409    /// iid of InternedData.source_paths.
20410    #[prost(uint64, optional, tag = "5")]
20411    pub source_path_iid: ::core::option::Option<u64>,
20412    /// Line number in the source file for this frame.
20413    /// This is typically set during online symbolization when symbol information
20414    /// is available at trace collection time. If not set, line numbers may be
20415    /// added later via offline symbolization (see ModuleSymbols).
20416    #[prost(uint32, optional, tag = "6")]
20417    pub line_number: ::core::option::Option<u32>,
20418    #[prost(oneof = "frame::KindField", tags = "7, 8")]
20419    pub kind_field: ::core::option::Option<frame::KindField>,
20420}
20421/// Nested message and enum types in `Frame`.
20422pub mod frame {
20423    /// The kind of code this frame represents, for categorization (e.g. coloring
20424    /// a flamegraph, or telling interpreted Python frames apart from native and
20425    /// GC frames in one mixed stack). Set the well-known `kind` when one fits,
20426    /// otherwise set `kind_str` to a custom label. The well-known enum is
20427    /// append-only and language-neutral; language-specific labels go in kind_str.
20428    #[derive(
20429        Clone,
20430        Copy,
20431        Debug,
20432        PartialEq,
20433        Eq,
20434        Hash,
20435        PartialOrd,
20436        Ord,
20437        ::prost::Enumeration
20438    )]
20439    #[repr(i32)]
20440    pub enum Kind {
20441        Unknown = 0,
20442        Native = 1,
20443        Kernel = 2,
20444        Interpreted = 3,
20445        Jit = 4,
20446        Gc = 5,
20447        Runtime = 6,
20448    }
20449    impl Kind {
20450        /// String value of the enum field names used in the ProtoBuf definition.
20451        ///
20452        /// The values are not transformed in any way and thus are considered stable
20453        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20454        pub fn as_str_name(&self) -> &'static str {
20455            match self {
20456                Self::Unknown => "KIND_UNKNOWN",
20457                Self::Native => "KIND_NATIVE",
20458                Self::Kernel => "KIND_KERNEL",
20459                Self::Interpreted => "KIND_INTERPRETED",
20460                Self::Jit => "KIND_JIT",
20461                Self::Gc => "KIND_GC",
20462                Self::Runtime => "KIND_RUNTIME",
20463            }
20464        }
20465        /// Creates an enum from field names used in the ProtoBuf definition.
20466        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20467            match value {
20468                "KIND_UNKNOWN" => Some(Self::Unknown),
20469                "KIND_NATIVE" => Some(Self::Native),
20470                "KIND_KERNEL" => Some(Self::Kernel),
20471                "KIND_INTERPRETED" => Some(Self::Interpreted),
20472                "KIND_JIT" => Some(Self::Jit),
20473                "KIND_GC" => Some(Self::Gc),
20474                "KIND_RUNTIME" => Some(Self::Runtime),
20475                _ => None,
20476            }
20477        }
20478    }
20479    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20480    pub enum KindField {
20481        #[prost(enumeration = "Kind", tag = "7")]
20482        Kind(i32),
20483        #[prost(string, tag = "8")]
20484        KindStr(::prost::alloc::string::String),
20485    }
20486}
20487#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20488pub struct Callstack {
20489    /// Interning key. Starts from 1, 0 is the same as "not set".
20490    #[prost(uint64, optional, tag = "1")]
20491    pub iid: ::core::option::Option<u64>,
20492    /// Frames of this callstack. Bottom frame first.
20493    #[prost(uint64, repeated, packed = "false", tag = "2")]
20494    pub frame_ids: ::prost::alloc::vec::Vec<u64>,
20495}
20496/// A fully-inline, self-contained callstack: each frame carries its function
20497/// name and source location directly, with no interning. This is the simple
20498/// alternative to Callstack (whose frames are interned Frame/Mapping
20499/// references): use it when trace size is not a concern or callstacks are
20500/// unique. For binary/library information (mappings, build ids, relative pcs)
20501/// or efficient repetition, use interned Callstacks instead.
20502///
20503/// Used by StackSample as the inline (non-interned) variant of its callstack
20504/// field.
20505#[derive(Clone, PartialEq, ::prost::Message)]
20506pub struct InlineCallstack {
20507    /// Frames of this callstack, ordered from bottom (outermost) to top
20508    /// (innermost). For example, if main() calls foo() which calls bar(), the
20509    /// frames are: \[main, foo, bar\].
20510    #[prost(message, repeated, tag = "1")]
20511    pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
20512}
20513/// Nested message and enum types in `InlineCallstack`.
20514pub mod inline_callstack {
20515    /// A frame within an inline callstack.
20516    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20517    pub struct Frame {
20518        /// Function name, e.g. "malloc" or "std::vector<int>::push_back".
20519        #[prost(string, optional, tag = "1")]
20520        pub function_name: ::core::option::Option<::prost::alloc::string::String>,
20521        /// Source file path, e.g. "/src/foo.cc".
20522        #[prost(string, optional, tag = "2")]
20523        pub source_file: ::core::option::Option<::prost::alloc::string::String>,
20524        /// Line number in the source file.
20525        #[prost(uint32, optional, tag = "3")]
20526        pub line_number: ::core::option::Option<u32>,
20527    }
20528}
20529/// A single stack sample: a callstack captured for a task, measured against a
20530/// counter timebase. This is transport-neutral and timebase-neutral. The
20531/// timebase can be CPU cycles, wall-clock nanoseconds, allocated bytes, page
20532/// faults, etc.; the primary CounterDescriptor says which. It is not specific to
20533/// CPU profiling.
20534///
20535/// Each context/callstack/descriptor can be given inline or as an `iid`
20536/// referencing an InternedData entry. Producers that reuse a context across
20537/// samples should intern it so the per-sample cost is a single varint.
20538#[derive(Clone, PartialEq, ::prost::Message)]
20539pub struct StackSample {
20540    /// The value attributed to this sample for the primary counter (e.g. the
20541    /// number of cycles or nanoseconds this sample represents).
20542    #[prost(uint64, optional, tag = "11")]
20543    pub primary_weight: ::core::option::Option<u64>,
20544    /// Additional counters read at the same sample (e.g. instructions, cache
20545    /// misses read alongside a cycles timebase). follower_weights is positional
20546    /// with whichever of follower_descriptors / follower_descriptor_iids is set.
20547    #[prost(message, repeated, tag = "12")]
20548    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
20549    #[prost(uint64, repeated, tag = "13")]
20550    pub follower_descriptor_iids: ::prost::alloc::vec::Vec<u64>,
20551    #[prost(uint64, repeated, tag = "14")]
20552    pub follower_weights: ::prost::alloc::vec::Vec<u64>,
20553    /// The task (thread / process / async context) this sample is attributed to.
20554    /// Give it inline via `task_context` or reference an interned TaskContext via
20555    /// `task_context_iid`.
20556    #[prost(oneof = "stack_sample::TaskContextField", tags = "1, 2")]
20557    pub task_context_field: ::core::option::Option<stack_sample::TaskContextField>,
20558    /// The execution state (cpu, privilege mode) at sample time. Absent for
20559    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
20560    /// or reference an interned ExecutionContext via `execution_context_iid`.
20561    #[prost(oneof = "stack_sample::ExecutionContextField", tags = "3, 4")]
20562    pub execution_context_field: ::core::option::Option<
20563        stack_sample::ExecutionContextField,
20564    >,
20565    /// The captured callstack, bottom frame first. Give it fully inline via
20566    /// `callstack` or reference an interned Callstack via `callstack_iid`.
20567    #[prost(oneof = "stack_sample::CallstackField", tags = "5, 6")]
20568    pub callstack_field: ::core::option::Option<stack_sample::CallstackField>,
20569    /// Set if stack unwinding was incomplete; describes the data, not producer
20570    /// internal state. Give it inline via `unwind_error` or reference an interned
20571    /// string via `unwind_error_iid`.
20572    ///
20573    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
20574    /// wire layout; a table column will surface it later.
20575    #[prost(oneof = "stack_sample::UnwindErrorField", tags = "7, 8")]
20576    pub unwind_error_field: ::core::option::Option<stack_sample::UnwindErrorField>,
20577    /// The sampling timebase: the counter this sample's weight is measured
20578    /// against. Set one of the two; may be omitted entirely if declared in
20579    /// StackSampleDefaults.primary_descriptor.
20580    #[prost(oneof = "stack_sample::PrimaryDescriptorField", tags = "9, 10")]
20581    pub primary_descriptor_field: ::core::option::Option<
20582        stack_sample::PrimaryDescriptorField,
20583    >,
20584}
20585/// Nested message and enum types in `StackSample`.
20586pub mod stack_sample {
20587    /// The task an observation is attributed to. At least one of pid / tid /
20588    /// async_id should be set. async_id identifies a stackful async context
20589    /// (goroutine, fiber, ...) described by an AsyncContextDescriptor whose iid
20590    /// equals the async_id.
20591    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20592    pub struct TaskContext {
20593        /// Interning key, used when this context is emitted via
20594        /// InternedData.stack_sample_task_contexts and referenced by
20595        /// StackSample.task_context_iid. Starts from 1; 0 is the same as "not set".
20596        #[prost(uint64, optional, tag = "1")]
20597        pub iid: ::core::option::Option<u64>,
20598        /// OS process id the sample belongs to.
20599        #[prost(uint32, optional, tag = "2")]
20600        pub pid: ::core::option::Option<u32>,
20601        /// OS thread id the sample belongs to. If only tid is set, the process is
20602        /// inferred from thread association elsewhere in the trace.
20603        #[prost(uint32, optional, tag = "3")]
20604        pub tid: ::core::option::Option<u32>,
20605        #[prost(uint64, optional, tag = "4")]
20606        pub async_id: ::core::option::Option<u64>,
20607    }
20608    /// Describes an async context referenced by TaskContext.async_id: a stackful
20609    /// unit of execution that is not an OS thread (goroutine, fiber, coroutine).
20610    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20611    pub struct AsyncContextDescriptor {
20612        /// Interning key, equal to the TaskContext.async_id it describes. Starts
20613        /// from 1, 0 is the same as "not set".
20614        #[prost(uint64, optional, tag = "1")]
20615        pub iid: ::core::option::Option<u64>,
20616        /// A human-readable name for this specific context, e.g. "worker-7".
20617        #[prost(string, optional, tag = "2")]
20618        pub name: ::core::option::Option<::prost::alloc::string::String>,
20619        /// The kind of async context, e.g. "goroutine", "fiber".
20620        #[prost(string, optional, tag = "3")]
20621        pub kind: ::core::option::Option<::prost::alloc::string::String>,
20622        /// iid of the structural parent AsyncContextDescriptor, if any.
20623        #[prost(uint64, optional, tag = "4")]
20624        pub parent_iid: ::core::option::Option<u64>,
20625    }
20626    /// The execution state a sample was taken in. All fields are optional: an
20627    /// off-CPU sample (e.g. a wall-clock sampler catching a sleeping thread) has
20628    /// no meaningful cpu or mode.
20629    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20630    pub struct ExecutionContext {
20631        /// Interning key, used when this context is emitted via
20632        /// InternedData.stack_sample_execution_contexts and referenced by
20633        /// StackSample.execution_context_iid. Starts from 1; 0 is the same as "not
20634        /// set".
20635        #[prost(uint64, optional, tag = "1")]
20636        pub iid: ::core::option::Option<u64>,
20637        /// The cpu the sample was taken on.
20638        #[prost(uint32, optional, tag = "2")]
20639        pub cpu: ::core::option::Option<u32>,
20640        /// The privilege level the sampled code was running at.
20641        #[prost(enumeration = "Mode", optional, tag = "3")]
20642        pub mode: ::core::option::Option<i32>,
20643    }
20644    /// Describes a counter: a named, typed quantity a sample is measured against
20645    /// (the sampling timebase) or observed alongside (a follower). Values live on
20646    /// the sample as weights; this only describes their meaning.
20647    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20648    pub struct CounterDescriptor {
20649        /// Interning key, used when this descriptor is emitted via
20650        /// InternedData.stack_sample_counter_descriptors and referenced by
20651        /// StackSample.primary_descriptor_iid. Starts from 1; 0 is the same as "not
20652        /// set".
20653        #[prost(uint64, optional, tag = "1")]
20654        pub iid: ::core::option::Option<u64>,
20655        /// Human-readable counter name, e.g. "cycles", "wall-time", "cache-misses".
20656        #[prost(string, optional, tag = "2")]
20657        pub name: ::core::option::Option<::prost::alloc::string::String>,
20658        /// Scales raw weights to `unit`. E.g. unit=UNIT_BYTES, unit_multiplier=1024
20659        /// means weights are in KiB. Absent means 1.
20660        #[prost(uint64, optional, tag = "5")]
20661        pub unit_multiplier: ::core::option::Option<u64>,
20662        /// Free-form description of what the counter measures.
20663        #[prost(string, optional, tag = "6")]
20664        pub description: ::core::option::Option<::prost::alloc::string::String>,
20665        /// The scope of this counter's instances. Absent means SCOPE_GLOBAL.
20666        #[prost(enumeration = "counter_descriptor::Scope", optional, tag = "7")]
20667        pub scope: ::core::option::Option<i32>,
20668        /// The unit weights are expressed in. Set the well-known `unit` when one
20669        /// fits, otherwise set `unit_str` to a custom label.
20670        #[prost(oneof = "counter_descriptor::UnitField", tags = "3, 4")]
20671        pub unit_field: ::core::option::Option<counter_descriptor::UnitField>,
20672    }
20673    /// Nested message and enum types in `CounterDescriptor`.
20674    pub mod counter_descriptor {
20675        /// The scope of a counter instance: which stream of values the per-sample
20676        /// weights belong to. Counter instances accumulate independently, so
20677        /// values from different instances must never be merged into one stream.
20678        /// Trace processor keeps sampling streams separate and materializes one
20679        /// counter track per instance within each stream: SCOPE_GLOBAL yields one
20680        /// track per sampling stream and SCOPE_CPU one track per
20681        /// (sampling stream, cpu).
20682        ///
20683        /// If your profiler needs a scope that is not listed here, please file
20684        /// a bug at <https://github.com/google/perfetto/issues> explaining what
20685        /// you are trying to record and which scope you would like added.
20686        /// Append-only: never renumber or repurpose an existing value.
20687        #[derive(
20688            Clone,
20689            Copy,
20690            Debug,
20691            PartialEq,
20692            Eq,
20693            Hash,
20694            PartialOrd,
20695            Ord,
20696            ::prost::Enumeration
20697        )]
20698        #[repr(i32)]
20699        pub enum Scope {
20700            /// Treated as SCOPE_GLOBAL.
20701            Unspecified = 0,
20702            /// A single counter instance, not split by cpu, thread or anything
20703            /// else.
20704            Global = 1,
20705            /// One counter instance per cpu. Each sample's weight belongs to the
20706            /// instance of the cpu in its ExecutionContext; samples without a cpu
20707            /// cannot be attributed and their weights for this counter are dropped.
20708            Cpu = 2,
20709        }
20710        impl Scope {
20711            /// String value of the enum field names used in the ProtoBuf definition.
20712            ///
20713            /// The values are not transformed in any way and thus are considered stable
20714            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20715            pub fn as_str_name(&self) -> &'static str {
20716                match self {
20717                    Self::Unspecified => "SCOPE_UNSPECIFIED",
20718                    Self::Global => "SCOPE_GLOBAL",
20719                    Self::Cpu => "SCOPE_CPU",
20720                }
20721            }
20722            /// Creates an enum from field names used in the ProtoBuf definition.
20723            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20724                match value {
20725                    "SCOPE_UNSPECIFIED" => Some(Self::Unspecified),
20726                    "SCOPE_GLOBAL" => Some(Self::Global),
20727                    "SCOPE_CPU" => Some(Self::Cpu),
20728                    _ => None,
20729                }
20730            }
20731        }
20732        /// The unit weights are expressed in. Set the well-known `unit` when one
20733        /// fits, otherwise set `unit_str` to a custom label.
20734        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20735        pub enum UnitField {
20736            /// A well-known unit from the Unit enum.
20737            #[prost(enumeration = "super::Unit", tag = "3")]
20738            Unit(i32),
20739            /// A custom unit label, used when no Unit enum value fits.
20740            #[prost(string, tag = "4")]
20741            UnitStr(::prost::alloc::string::String),
20742        }
20743    }
20744    /// The privilege level a sample was taken at. Append-only: never renumber or
20745    /// repurpose an existing value.
20746    #[derive(
20747        Clone,
20748        Copy,
20749        Debug,
20750        PartialEq,
20751        Eq,
20752        Hash,
20753        PartialOrd,
20754        Ord,
20755        ::prost::Enumeration
20756    )]
20757    #[repr(i32)]
20758    pub enum Mode {
20759        Unknown = 0,
20760        User = 1,
20761        Kernel = 2,
20762        Hypervisor = 3,
20763        GuestUser = 4,
20764        GuestKernel = 5,
20765    }
20766    impl Mode {
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::Unknown => "MODE_UNKNOWN",
20774                Self::User => "MODE_USER",
20775                Self::Kernel => "MODE_KERNEL",
20776                Self::Hypervisor => "MODE_HYPERVISOR",
20777                Self::GuestUser => "MODE_GUEST_USER",
20778                Self::GuestKernel => "MODE_GUEST_KERNEL",
20779            }
20780        }
20781        /// Creates an enum from field names used in the ProtoBuf definition.
20782        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20783            match value {
20784                "MODE_UNKNOWN" => Some(Self::Unknown),
20785                "MODE_USER" => Some(Self::User),
20786                "MODE_KERNEL" => Some(Self::Kernel),
20787                "MODE_HYPERVISOR" => Some(Self::Hypervisor),
20788                "MODE_GUEST_USER" => Some(Self::GuestUser),
20789                "MODE_GUEST_KERNEL" => Some(Self::GuestKernel),
20790                _ => None,
20791            }
20792        }
20793    }
20794    /// The unit a CounterDescriptor's values are expressed in. Append-only: new
20795    /// units may be added, but existing values are never renumbered or
20796    /// repurposed. If none of these fit, set CounterDescriptor.unit_str instead.
20797    #[derive(
20798        Clone,
20799        Copy,
20800        Debug,
20801        PartialEq,
20802        Eq,
20803        Hash,
20804        PartialOrd,
20805        Ord,
20806        ::prost::Enumeration
20807    )]
20808    #[repr(i32)]
20809    pub enum Unit {
20810        Unspecified = 0,
20811        Nanoseconds = 1,
20812        CpuCycles = 2,
20813        Instructions = 3,
20814        Bytes = 4,
20815        PageFaults = 5,
20816        CacheMisses = 6,
20817        CacheReferences = 7,
20818        BranchMisses = 8,
20819        Count = 9,
20820    }
20821    impl Unit {
20822        /// String value of the enum field names used in the ProtoBuf definition.
20823        ///
20824        /// The values are not transformed in any way and thus are considered stable
20825        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20826        pub fn as_str_name(&self) -> &'static str {
20827            match self {
20828                Self::Unspecified => "UNIT_UNSPECIFIED",
20829                Self::Nanoseconds => "UNIT_NANOSECONDS",
20830                Self::CpuCycles => "UNIT_CPU_CYCLES",
20831                Self::Instructions => "UNIT_INSTRUCTIONS",
20832                Self::Bytes => "UNIT_BYTES",
20833                Self::PageFaults => "UNIT_PAGE_FAULTS",
20834                Self::CacheMisses => "UNIT_CACHE_MISSES",
20835                Self::CacheReferences => "UNIT_CACHE_REFERENCES",
20836                Self::BranchMisses => "UNIT_BRANCH_MISSES",
20837                Self::Count => "UNIT_COUNT",
20838            }
20839        }
20840        /// Creates an enum from field names used in the ProtoBuf definition.
20841        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20842            match value {
20843                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
20844                "UNIT_NANOSECONDS" => Some(Self::Nanoseconds),
20845                "UNIT_CPU_CYCLES" => Some(Self::CpuCycles),
20846                "UNIT_INSTRUCTIONS" => Some(Self::Instructions),
20847                "UNIT_BYTES" => Some(Self::Bytes),
20848                "UNIT_PAGE_FAULTS" => Some(Self::PageFaults),
20849                "UNIT_CACHE_MISSES" => Some(Self::CacheMisses),
20850                "UNIT_CACHE_REFERENCES" => Some(Self::CacheReferences),
20851                "UNIT_BRANCH_MISSES" => Some(Self::BranchMisses),
20852                "UNIT_COUNT" => Some(Self::Count),
20853                _ => None,
20854            }
20855        }
20856    }
20857    /// The task (thread / process / async context) this sample is attributed to.
20858    /// Give it inline via `task_context` or reference an interned TaskContext via
20859    /// `task_context_iid`.
20860    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
20861    pub enum TaskContextField {
20862        /// Inline task context.
20863        #[prost(message, tag = "1")]
20864        TaskContext(TaskContext),
20865        /// Interned task context, referencing
20866        /// InternedData.stack_sample_task_contexts.
20867        #[prost(uint64, tag = "2")]
20868        TaskContextIid(u64),
20869    }
20870    /// The execution state (cpu, privilege mode) at sample time. Absent for
20871    /// samplers that observe off-CPU tasks. Give it inline via `execution_context`
20872    /// or reference an interned ExecutionContext via `execution_context_iid`.
20873    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
20874    pub enum ExecutionContextField {
20875        /// Inline execution context.
20876        #[prost(message, tag = "3")]
20877        ExecutionContext(ExecutionContext),
20878        /// Interned execution context, referencing
20879        /// InternedData.stack_sample_execution_contexts.
20880        #[prost(uint64, tag = "4")]
20881        ExecutionContextIid(u64),
20882    }
20883    /// The captured callstack, bottom frame first. Give it fully inline via
20884    /// `callstack` or reference an interned Callstack via `callstack_iid`.
20885    #[derive(Clone, PartialEq, ::prost::Oneof)]
20886    pub enum CallstackField {
20887        /// Fully-inline callstack: each frame carries its function name and source
20888        /// location directly, no interning. Simple but larger; prefer
20889        /// `callstack_iid` when callstacks repeat or frames need binary/library
20890        /// information (mappings, build ids, relative pcs).
20891        #[prost(message, tag = "5")]
20892        Callstack(super::InlineCallstack),
20893        /// Interned callstack, referencing InternedData.callstacks.
20894        #[prost(uint64, tag = "6")]
20895        CallstackIid(u64),
20896    }
20897    /// Set if stack unwinding was incomplete; describes the data, not producer
20898    /// internal state. Give it inline via `unwind_error` or reference an interned
20899    /// string via `unwind_error_iid`.
20900    ///
20901    /// TODO(lalitm): not yet parsed by trace_processor. Defined now to lock the
20902    /// wire layout; a table column will surface it later.
20903    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20904    pub enum UnwindErrorField {
20905        /// Inline unwind error string.
20906        #[prost(string, tag = "7")]
20907        UnwindError(::prost::alloc::string::String),
20908        /// Interned unwind error string, referencing an InternedData string entry.
20909        #[prost(uint64, tag = "8")]
20910        UnwindErrorIid(u64),
20911    }
20912    /// The sampling timebase: the counter this sample's weight is measured
20913    /// against. Set one of the two; may be omitted entirely if declared in
20914    /// StackSampleDefaults.primary_descriptor.
20915    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
20916    pub enum PrimaryDescriptorField {
20917        /// Inline timebase descriptor.
20918        #[prost(message, tag = "9")]
20919        PrimaryDescriptor(CounterDescriptor),
20920        /// Interned timebase descriptor, referencing
20921        /// InternedData.stack_sample_counter_descriptors.
20922        #[prost(uint64, tag = "10")]
20923        PrimaryDescriptorIid(u64),
20924    }
20925}
20926/// Per-sequence defaults for StackSample. Lets a producer declare the source and
20927/// the common timebase / followers once instead of on every sample.
20928#[derive(Clone, PartialEq, ::prost::Message)]
20929pub struct StackSampleDefaults {
20930    /// Identifies the profiler that produced these samples, e.g. "linux.perf",
20931    /// "python.wall". Recorded once per sampling stream.
20932    #[prost(string, optional, tag = "1")]
20933    pub source: ::core::option::Option<::prost::alloc::string::String>,
20934    /// Default primary timebase for samples that omit their own.
20935    #[prost(message, optional, tag = "2")]
20936    pub primary_descriptor: ::core::option::Option<stack_sample::CounterDescriptor>,
20937    /// Default follower counters, positional with StackSample.follower_weights.
20938    #[prost(message, repeated, tag = "3")]
20939    pub follower_descriptors: ::prost::alloc::vec::Vec<stack_sample::CounterDescriptor>,
20940}
20941#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20942pub struct HistogramName {
20943    #[prost(uint64, optional, tag = "1")]
20944    pub iid: ::core::option::Option<u64>,
20945    #[prost(string, optional, tag = "2")]
20946    pub name: ::core::option::Option<::prost::alloc::string::String>,
20947}
20948/// An individual histogram sample logged via Chrome's UMA metrics system.
20949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20950pub struct ChromeHistogramSample {
20951    /// MD5 hash of the metric name. Either |name_hash| or |name|/|name_iid| or
20952    /// both must be present.
20953    #[prost(uint64, optional, tag = "1")]
20954    pub name_hash: ::core::option::Option<u64>,
20955    #[prost(string, optional, tag = "2")]
20956    pub name: ::core::option::Option<::prost::alloc::string::String>,
20957    #[prost(int64, optional, tag = "3")]
20958    pub sample: ::core::option::Option<i64>,
20959    /// Interned HistogramName. Only one of |name|, |name_iid| can be set.
20960    #[prost(uint64, optional, tag = "4")]
20961    pub name_iid: ::core::option::Option<u64>,
20962}
20963/// Proto representation of untyped key/value annotations provided in TRACE_EVENT
20964/// macros. Users of the Perfetto SDK should prefer to use the
20965/// perfetto::TracedValue API to fill these protos, rather than filling them
20966/// manually.
20967///
20968/// Debug annotations are intended for debug use and are not considered a stable
20969/// API of the trace contents. Trace-based metrics that use debug annotation
20970/// values are prone to breakage, so please rely on typed TrackEvent fields for
20971/// these instead.
20972///
20973/// DebugAnnotations support nested arrays and dictionaries. Each entry is
20974/// encoded as a single DebugAnnotation message. Only dictionary entries
20975/// set the "name" field. The TrackEvent message forms an implicit root
20976/// dictionary.
20977///
20978/// Example TrackEvent with nested annotations:
20979///    track_event {
20980///      debug_annotations {
20981///        name: "foo"
20982///        dict_entries {
20983///          name: "a"
20984///          bool_value: true
20985///        }
20986///        dict_entries {
20987///          name: "b"
20988///          int_value: 123
20989///        }
20990///      }
20991///      debug_annotations {
20992///        name: "bar"
20993///        array_values {
20994///          string_value: "hello"
20995///        }
20996///        array_values {
20997///          string_value: "world"
20998///        }
20999///      }
21000///    }
21001///
21002/// Next ID: 18.
21003/// Reserved ID: 15
21004#[derive(Clone, PartialEq, ::prost::Message)]
21005pub struct DebugAnnotation {
21006    #[prost(bytes = "vec", optional, tag = "14")]
21007    pub proto_value: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21008    #[prost(message, repeated, tag = "11")]
21009    pub dict_entries: ::prost::alloc::vec::Vec<DebugAnnotation>,
21010    #[prost(message, repeated, tag = "12")]
21011    pub array_values: ::prost::alloc::vec::Vec<DebugAnnotation>,
21012    /// Name fields are set only for dictionary entries.
21013    #[prost(oneof = "debug_annotation::NameField", tags = "1, 10")]
21014    pub name_field: ::core::option::Option<debug_annotation::NameField>,
21015    #[prost(oneof = "debug_annotation::Value", tags = "2, 3, 4, 5, 7, 8, 9, 6, 17")]
21016    pub value: ::core::option::Option<debug_annotation::Value>,
21017    /// Used to embed arbitrary proto messages (which are also typically used to
21018    /// represent typed TrackEvent arguments). |proto_type_name| or
21019    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
21020    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
21021    /// proto messages. See |TracedValue::WriteProto| for more details.
21022    #[prost(oneof = "debug_annotation::ProtoTypeDescriptor", tags = "16, 13")]
21023    pub proto_type_descriptor: ::core::option::Option<
21024        debug_annotation::ProtoTypeDescriptor,
21025    >,
21026}
21027/// Nested message and enum types in `DebugAnnotation`.
21028pub mod debug_annotation {
21029    /// Deprecated legacy way to use nested values. Only kept for
21030    /// backwards-compatibility in TraceProcessor. May be removed in the future -
21031    /// code filling protos should use |dict_entries| and |array_values| instead.
21032    #[derive(Clone, PartialEq, ::prost::Message)]
21033    pub struct NestedValue {
21034        #[prost(enumeration = "nested_value::NestedType", optional, tag = "1")]
21035        pub nested_type: ::core::option::Option<i32>,
21036        #[prost(string, repeated, tag = "2")]
21037        pub dict_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21038        #[prost(message, repeated, tag = "3")]
21039        pub dict_values: ::prost::alloc::vec::Vec<NestedValue>,
21040        #[prost(message, repeated, tag = "4")]
21041        pub array_values: ::prost::alloc::vec::Vec<NestedValue>,
21042        #[prost(int64, optional, tag = "5")]
21043        pub int_value: ::core::option::Option<i64>,
21044        #[prost(double, optional, tag = "6")]
21045        pub double_value: ::core::option::Option<f64>,
21046        #[prost(bool, optional, tag = "7")]
21047        pub bool_value: ::core::option::Option<bool>,
21048        #[prost(string, optional, tag = "8")]
21049        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
21050    }
21051    /// Nested message and enum types in `NestedValue`.
21052    pub mod nested_value {
21053        #[derive(
21054            Clone,
21055            Copy,
21056            Debug,
21057            PartialEq,
21058            Eq,
21059            Hash,
21060            PartialOrd,
21061            Ord,
21062            ::prost::Enumeration
21063        )]
21064        #[repr(i32)]
21065        pub enum NestedType {
21066            /// leaf value.
21067            Unspecified = 0,
21068            Dict = 1,
21069            Array = 2,
21070        }
21071        impl NestedType {
21072            /// String value of the enum field names used in the ProtoBuf definition.
21073            ///
21074            /// The values are not transformed in any way and thus are considered stable
21075            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21076            pub fn as_str_name(&self) -> &'static str {
21077                match self {
21078                    Self::Unspecified => "UNSPECIFIED",
21079                    Self::Dict => "DICT",
21080                    Self::Array => "ARRAY",
21081                }
21082            }
21083            /// Creates an enum from field names used in the ProtoBuf definition.
21084            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21085                match value {
21086                    "UNSPECIFIED" => Some(Self::Unspecified),
21087                    "DICT" => Some(Self::Dict),
21088                    "ARRAY" => Some(Self::Array),
21089                    _ => None,
21090                }
21091            }
21092        }
21093    }
21094    /// Name fields are set only for dictionary entries.
21095    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21096    pub enum NameField {
21097        /// interned DebugAnnotationName.
21098        #[prost(uint64, tag = "1")]
21099        NameIid(u64),
21100        /// non-interned variant.
21101        #[prost(string, tag = "10")]
21102        Name(::prost::alloc::string::String),
21103    }
21104    #[derive(Clone, PartialEq, ::prost::Oneof)]
21105    pub enum Value {
21106        #[prost(bool, tag = "2")]
21107        BoolValue(bool),
21108        #[prost(uint64, tag = "3")]
21109        UintValue(u64),
21110        #[prost(int64, tag = "4")]
21111        IntValue(i64),
21112        #[prost(double, tag = "5")]
21113        DoubleValue(f64),
21114        /// Pointers are stored in a separate type as the JSON output treats them
21115        /// differently from other uint64 values.
21116        #[prost(uint64, tag = "7")]
21117        PointerValue(u64),
21118        /// Deprecated. Use dict_entries / array_values instead.
21119        #[prost(message, tag = "8")]
21120        NestedValue(NestedValue),
21121        /// Legacy instrumentation may not support conversion of nested data to
21122        /// NestedValue yet.
21123        #[prost(string, tag = "9")]
21124        LegacyJsonValue(::prost::alloc::string::String),
21125        /// interned and non-interned variants of strings.
21126        #[prost(string, tag = "6")]
21127        StringValue(::prost::alloc::string::String),
21128        /// Corresponds to |debug_annotation_string_values| field in InternedData.
21129        #[prost(uint64, tag = "17")]
21130        StringValueIid(u64),
21131    }
21132    /// Used to embed arbitrary proto messages (which are also typically used to
21133    /// represent typed TrackEvent arguments). |proto_type_name| or
21134    /// |proto_type_name_iid| are storing the full name of the proto messages (e.g.
21135    /// .perfetto.protos.DebugAnnotation) and |proto_value| contains the serialised
21136    /// proto messages. See |TracedValue::WriteProto| for more details.
21137    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21138    pub enum ProtoTypeDescriptor {
21139        #[prost(string, tag = "16")]
21140        ProtoTypeName(::prost::alloc::string::String),
21141        /// interned DebugAnnotationValueTypeName.
21142        #[prost(uint64, tag = "13")]
21143        ProtoTypeNameIid(u64),
21144    }
21145}
21146#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21147pub struct DebugAnnotationName {
21148    #[prost(uint64, optional, tag = "1")]
21149    pub iid: ::core::option::Option<u64>,
21150    #[prost(string, optional, tag = "2")]
21151    pub name: ::core::option::Option<::prost::alloc::string::String>,
21152}
21153/// See the |proto_type_descriptor| comment.
21154#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21155pub struct DebugAnnotationValueTypeName {
21156    #[prost(uint64, optional, tag = "1")]
21157    pub iid: ::core::option::Option<u64>,
21158    #[prost(string, optional, tag = "2")]
21159    pub name: ::core::option::Option<::prost::alloc::string::String>,
21160}
21161#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21162pub struct LogMessage {
21163    /// interned SourceLocation.
21164    #[prost(uint64, optional, tag = "1")]
21165    pub source_location_iid: ::core::option::Option<u64>,
21166    /// interned LogMessageBody.
21167    #[prost(uint64, optional, tag = "2")]
21168    pub body_iid: ::core::option::Option<u64>,
21169    #[prost(enumeration = "log_message::Priority", optional, tag = "3")]
21170    pub prio: ::core::option::Option<i32>,
21171}
21172/// Nested message and enum types in `LogMessage`.
21173pub mod log_message {
21174    #[derive(
21175        Clone,
21176        Copy,
21177        Debug,
21178        PartialEq,
21179        Eq,
21180        Hash,
21181        PartialOrd,
21182        Ord,
21183        ::prost::Enumeration
21184    )]
21185    #[repr(i32)]
21186    pub enum Priority {
21187        PrioUnspecified = 0,
21188        PrioUnused = 1,
21189        PrioVerbose = 2,
21190        PrioDebug = 3,
21191        PrioInfo = 4,
21192        PrioWarn = 5,
21193        PrioError = 6,
21194        PrioFatal = 7,
21195    }
21196    impl Priority {
21197        /// String value of the enum field names used in the ProtoBuf definition.
21198        ///
21199        /// The values are not transformed in any way and thus are considered stable
21200        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21201        pub fn as_str_name(&self) -> &'static str {
21202            match self {
21203                Self::PrioUnspecified => "PRIO_UNSPECIFIED",
21204                Self::PrioUnused => "PRIO_UNUSED",
21205                Self::PrioVerbose => "PRIO_VERBOSE",
21206                Self::PrioDebug => "PRIO_DEBUG",
21207                Self::PrioInfo => "PRIO_INFO",
21208                Self::PrioWarn => "PRIO_WARN",
21209                Self::PrioError => "PRIO_ERROR",
21210                Self::PrioFatal => "PRIO_FATAL",
21211            }
21212        }
21213        /// Creates an enum from field names used in the ProtoBuf definition.
21214        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21215            match value {
21216                "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
21217                "PRIO_UNUSED" => Some(Self::PrioUnused),
21218                "PRIO_VERBOSE" => Some(Self::PrioVerbose),
21219                "PRIO_DEBUG" => Some(Self::PrioDebug),
21220                "PRIO_INFO" => Some(Self::PrioInfo),
21221                "PRIO_WARN" => Some(Self::PrioWarn),
21222                "PRIO_ERROR" => Some(Self::PrioError),
21223                "PRIO_FATAL" => Some(Self::PrioFatal),
21224                _ => None,
21225            }
21226        }
21227    }
21228}
21229#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21230pub struct LogMessageBody {
21231    #[prost(uint64, optional, tag = "1")]
21232    pub iid: ::core::option::Option<u64>,
21233    #[prost(string, optional, tag = "2")]
21234    pub body: ::core::option::Option<::prost::alloc::string::String>,
21235}
21236/// A source location, represented as a native symbol.
21237/// This is similar to `message Frame` from
21238/// protos/perfetto/trace/profiling/profile_common.proto, but for abitrary
21239/// source code locations (for example in track event args), not stack frames.
21240#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21241pub struct UnsymbolizedSourceLocation {
21242    #[prost(uint64, optional, tag = "1")]
21243    pub iid: ::core::option::Option<u64>,
21244    #[prost(uint64, optional, tag = "2")]
21245    pub mapping_id: ::core::option::Option<u64>,
21246    #[prost(uint64, optional, tag = "3")]
21247    pub rel_pc: ::core::option::Option<u64>,
21248}
21249#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21250pub struct SourceLocation {
21251    #[prost(uint64, optional, tag = "1")]
21252    pub iid: ::core::option::Option<u64>,
21253    #[prost(string, optional, tag = "2")]
21254    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
21255    #[prost(string, optional, tag = "3")]
21256    pub function_name: ::core::option::Option<::prost::alloc::string::String>,
21257    #[prost(uint32, optional, tag = "4")]
21258    pub line_number: ::core::option::Option<u32>,
21259}
21260/// A list of processes connected to the tracing service.
21261#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21262pub struct ChromeActiveProcesses {
21263    #[prost(int32, repeated, packed = "false", tag = "1")]
21264    pub pid: ::prost::alloc::vec::Vec<i32>,
21265}
21266/// Trace event arguments for application state changes.
21267#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21268pub struct ChromeApplicationStateInfo {
21269    #[prost(
21270        enumeration = "chrome_application_state_info::ChromeApplicationState",
21271        optional,
21272        tag = "1"
21273    )]
21274    pub application_state: ::core::option::Option<i32>,
21275}
21276/// Nested message and enum types in `ChromeApplicationStateInfo`.
21277pub mod chrome_application_state_info {
21278    /// Enum definition taken from:
21279    /// <https://source.chromium.org/chromium/chromium/src/+/master:base/android/application_status_listener.h>
21280    #[derive(
21281        Clone,
21282        Copy,
21283        Debug,
21284        PartialEq,
21285        Eq,
21286        Hash,
21287        PartialOrd,
21288        Ord,
21289        ::prost::Enumeration
21290    )]
21291    #[repr(i32)]
21292    pub enum ChromeApplicationState {
21293        ApplicationStateUnknown = 0,
21294        ApplicationStateHasRunningActivities = 1,
21295        ApplicationStateHasPausedActivities = 2,
21296        ApplicationStateHasStoppedActivities = 3,
21297        ApplicationStateHasDestroyedActivities = 4,
21298    }
21299    impl ChromeApplicationState {
21300        /// String value of the enum field names used in the ProtoBuf definition.
21301        ///
21302        /// The values are not transformed in any way and thus are considered stable
21303        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21304        pub fn as_str_name(&self) -> &'static str {
21305            match self {
21306                Self::ApplicationStateUnknown => "APPLICATION_STATE_UNKNOWN",
21307                Self::ApplicationStateHasRunningActivities => {
21308                    "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES"
21309                }
21310                Self::ApplicationStateHasPausedActivities => {
21311                    "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES"
21312                }
21313                Self::ApplicationStateHasStoppedActivities => {
21314                    "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES"
21315                }
21316                Self::ApplicationStateHasDestroyedActivities => {
21317                    "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES"
21318                }
21319            }
21320        }
21321        /// Creates an enum from field names used in the ProtoBuf definition.
21322        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21323            match value {
21324                "APPLICATION_STATE_UNKNOWN" => Some(Self::ApplicationStateUnknown),
21325                "APPLICATION_STATE_HAS_RUNNING_ACTIVITIES" => {
21326                    Some(Self::ApplicationStateHasRunningActivities)
21327                }
21328                "APPLICATION_STATE_HAS_PAUSED_ACTIVITIES" => {
21329                    Some(Self::ApplicationStateHasPausedActivities)
21330                }
21331                "APPLICATION_STATE_HAS_STOPPED_ACTIVITIES" => {
21332                    Some(Self::ApplicationStateHasStoppedActivities)
21333                }
21334                "APPLICATION_STATE_HAS_DESTROYED_ACTIVITIES" => {
21335                    Some(Self::ApplicationStateHasDestroyedActivities)
21336                }
21337                _ => None,
21338            }
21339        }
21340    }
21341}
21342/// Next id: 18
21343#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21344pub struct ChromeCompositorSchedulerState {
21345    #[prost(message, optional, tag = "1")]
21346    pub state_machine: ::core::option::Option<ChromeCompositorStateMachine>,
21347    #[prost(bool, optional, tag = "2")]
21348    pub observing_begin_frame_source: ::core::option::Option<bool>,
21349    #[prost(bool, optional, tag = "3")]
21350    pub begin_impl_frame_deadline_task: ::core::option::Option<bool>,
21351    #[prost(bool, optional, tag = "4")]
21352    pub pending_begin_frame_task: ::core::option::Option<bool>,
21353    #[prost(bool, optional, tag = "5")]
21354    pub skipped_last_frame_missed_exceeded_deadline: ::core::option::Option<bool>,
21355    #[prost(enumeration = "ChromeCompositorSchedulerAction", optional, tag = "7")]
21356    pub inside_action: ::core::option::Option<i32>,
21357    #[prost(
21358        enumeration = "chrome_compositor_scheduler_state::BeginImplFrameDeadlineMode",
21359        optional,
21360        tag = "8"
21361    )]
21362    pub deadline_mode: ::core::option::Option<i32>,
21363    #[prost(int64, optional, tag = "9")]
21364    pub deadline_us: ::core::option::Option<i64>,
21365    #[prost(int64, optional, tag = "10")]
21366    pub deadline_scheduled_at_us: ::core::option::Option<i64>,
21367    #[prost(int64, optional, tag = "11")]
21368    pub now_us: ::core::option::Option<i64>,
21369    #[prost(int64, optional, tag = "12")]
21370    pub now_to_deadline_delta_us: ::core::option::Option<i64>,
21371    #[prost(int64, optional, tag = "13")]
21372    pub now_to_deadline_scheduled_at_delta_us: ::core::option::Option<i64>,
21373    #[prost(message, optional, tag = "14")]
21374    pub begin_impl_frame_args: ::core::option::Option<BeginImplFrameArgs>,
21375    #[prost(message, optional, tag = "15")]
21376    pub begin_frame_observer_state: ::core::option::Option<BeginFrameObserverState>,
21377    #[prost(message, optional, tag = "16")]
21378    pub begin_frame_source_state: ::core::option::Option<BeginFrameSourceState>,
21379    #[prost(message, optional, tag = "17")]
21380    pub compositor_timing_history: ::core::option::Option<CompositorTimingHistory>,
21381}
21382/// Nested message and enum types in `ChromeCompositorSchedulerState`.
21383pub mod chrome_compositor_scheduler_state {
21384    #[derive(
21385        Clone,
21386        Copy,
21387        Debug,
21388        PartialEq,
21389        Eq,
21390        Hash,
21391        PartialOrd,
21392        Ord,
21393        ::prost::Enumeration
21394    )]
21395    #[repr(i32)]
21396    pub enum BeginImplFrameDeadlineMode {
21397        DeadlineModeUnspecified = 0,
21398        DeadlineModeNone = 1,
21399        DeadlineModeImmediate = 2,
21400        DeadlineModeRegular = 3,
21401        DeadlineModeLate = 4,
21402        DeadlineModeBlocked = 5,
21403    }
21404    impl BeginImplFrameDeadlineMode {
21405        /// String value of the enum field names used in the ProtoBuf definition.
21406        ///
21407        /// The values are not transformed in any way and thus are considered stable
21408        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21409        pub fn as_str_name(&self) -> &'static str {
21410            match self {
21411                Self::DeadlineModeUnspecified => "DEADLINE_MODE_UNSPECIFIED",
21412                Self::DeadlineModeNone => "DEADLINE_MODE_NONE",
21413                Self::DeadlineModeImmediate => "DEADLINE_MODE_IMMEDIATE",
21414                Self::DeadlineModeRegular => "DEADLINE_MODE_REGULAR",
21415                Self::DeadlineModeLate => "DEADLINE_MODE_LATE",
21416                Self::DeadlineModeBlocked => "DEADLINE_MODE_BLOCKED",
21417            }
21418        }
21419        /// Creates an enum from field names used in the ProtoBuf definition.
21420        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21421            match value {
21422                "DEADLINE_MODE_UNSPECIFIED" => Some(Self::DeadlineModeUnspecified),
21423                "DEADLINE_MODE_NONE" => Some(Self::DeadlineModeNone),
21424                "DEADLINE_MODE_IMMEDIATE" => Some(Self::DeadlineModeImmediate),
21425                "DEADLINE_MODE_REGULAR" => Some(Self::DeadlineModeRegular),
21426                "DEADLINE_MODE_LATE" => Some(Self::DeadlineModeLate),
21427                "DEADLINE_MODE_BLOCKED" => Some(Self::DeadlineModeBlocked),
21428                _ => None,
21429            }
21430        }
21431    }
21432}
21433/// Describes the current values stored in the Chrome Compositor state machine.
21434/// Next id: 3
21435#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21436pub struct ChromeCompositorStateMachine {
21437    #[prost(message, optional, tag = "1")]
21438    pub major_state: ::core::option::Option<chrome_compositor_state_machine::MajorState>,
21439    #[prost(message, optional, tag = "2")]
21440    pub minor_state: ::core::option::Option<chrome_compositor_state_machine::MinorState>,
21441}
21442/// Nested message and enum types in `ChromeCompositorStateMachine`.
21443pub mod chrome_compositor_state_machine {
21444    /// Next id: 6
21445    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21446    pub struct MajorState {
21447        #[prost(
21448            enumeration = "super::ChromeCompositorSchedulerAction",
21449            optional,
21450            tag = "1"
21451        )]
21452        pub next_action: ::core::option::Option<i32>,
21453        #[prost(enumeration = "major_state::BeginImplFrameState", optional, tag = "2")]
21454        pub begin_impl_frame_state: ::core::option::Option<i32>,
21455        #[prost(enumeration = "major_state::BeginMainFrameState", optional, tag = "3")]
21456        pub begin_main_frame_state: ::core::option::Option<i32>,
21457        #[prost(
21458            enumeration = "major_state::LayerTreeFrameSinkState",
21459            optional,
21460            tag = "4"
21461        )]
21462        pub layer_tree_frame_sink_state: ::core::option::Option<i32>,
21463        #[prost(
21464            enumeration = "major_state::ForcedRedrawOnTimeoutState",
21465            optional,
21466            tag = "5"
21467        )]
21468        pub forced_redraw_state: ::core::option::Option<i32>,
21469    }
21470    /// Nested message and enum types in `MajorState`.
21471    pub mod major_state {
21472        #[derive(
21473            Clone,
21474            Copy,
21475            Debug,
21476            PartialEq,
21477            Eq,
21478            Hash,
21479            PartialOrd,
21480            Ord,
21481            ::prost::Enumeration
21482        )]
21483        #[repr(i32)]
21484        pub enum BeginImplFrameState {
21485            BeginImplFrameUnspecified = 0,
21486            BeginImplFrameIdle = 1,
21487            BeginImplFrameInsideBeginFrame = 2,
21488            BeginImplFrameInsideDeadline = 3,
21489        }
21490        impl BeginImplFrameState {
21491            /// String value of the enum field names used in the ProtoBuf definition.
21492            ///
21493            /// The values are not transformed in any way and thus are considered stable
21494            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21495            pub fn as_str_name(&self) -> &'static str {
21496                match self {
21497                    Self::BeginImplFrameUnspecified => "BEGIN_IMPL_FRAME_UNSPECIFIED",
21498                    Self::BeginImplFrameIdle => "BEGIN_IMPL_FRAME_IDLE",
21499                    Self::BeginImplFrameInsideBeginFrame => {
21500                        "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME"
21501                    }
21502                    Self::BeginImplFrameInsideDeadline => {
21503                        "BEGIN_IMPL_FRAME_INSIDE_DEADLINE"
21504                    }
21505                }
21506            }
21507            /// Creates an enum from field names used in the ProtoBuf definition.
21508            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21509                match value {
21510                    "BEGIN_IMPL_FRAME_UNSPECIFIED" => {
21511                        Some(Self::BeginImplFrameUnspecified)
21512                    }
21513                    "BEGIN_IMPL_FRAME_IDLE" => Some(Self::BeginImplFrameIdle),
21514                    "BEGIN_IMPL_FRAME_INSIDE_BEGIN_FRAME" => {
21515                        Some(Self::BeginImplFrameInsideBeginFrame)
21516                    }
21517                    "BEGIN_IMPL_FRAME_INSIDE_DEADLINE" => {
21518                        Some(Self::BeginImplFrameInsideDeadline)
21519                    }
21520                    _ => None,
21521                }
21522            }
21523        }
21524        #[derive(
21525            Clone,
21526            Copy,
21527            Debug,
21528            PartialEq,
21529            Eq,
21530            Hash,
21531            PartialOrd,
21532            Ord,
21533            ::prost::Enumeration
21534        )]
21535        #[repr(i32)]
21536        pub enum BeginMainFrameState {
21537            BeginMainFrameUnspecified = 0,
21538            BeginMainFrameIdle = 1,
21539            BeginMainFrameSent = 2,
21540            BeginMainFrameReadyToCommit = 3,
21541        }
21542        impl BeginMainFrameState {
21543            /// String value of the enum field names used in the ProtoBuf definition.
21544            ///
21545            /// The values are not transformed in any way and thus are considered stable
21546            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21547            pub fn as_str_name(&self) -> &'static str {
21548                match self {
21549                    Self::BeginMainFrameUnspecified => "BEGIN_MAIN_FRAME_UNSPECIFIED",
21550                    Self::BeginMainFrameIdle => "BEGIN_MAIN_FRAME_IDLE",
21551                    Self::BeginMainFrameSent => "BEGIN_MAIN_FRAME_SENT",
21552                    Self::BeginMainFrameReadyToCommit => {
21553                        "BEGIN_MAIN_FRAME_READY_TO_COMMIT"
21554                    }
21555                }
21556            }
21557            /// Creates an enum from field names used in the ProtoBuf definition.
21558            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21559                match value {
21560                    "BEGIN_MAIN_FRAME_UNSPECIFIED" => {
21561                        Some(Self::BeginMainFrameUnspecified)
21562                    }
21563                    "BEGIN_MAIN_FRAME_IDLE" => Some(Self::BeginMainFrameIdle),
21564                    "BEGIN_MAIN_FRAME_SENT" => Some(Self::BeginMainFrameSent),
21565                    "BEGIN_MAIN_FRAME_READY_TO_COMMIT" => {
21566                        Some(Self::BeginMainFrameReadyToCommit)
21567                    }
21568                    _ => None,
21569                }
21570            }
21571        }
21572        #[derive(
21573            Clone,
21574            Copy,
21575            Debug,
21576            PartialEq,
21577            Eq,
21578            Hash,
21579            PartialOrd,
21580            Ord,
21581            ::prost::Enumeration
21582        )]
21583        #[repr(i32)]
21584        pub enum LayerTreeFrameSinkState {
21585            LayerTreeFrameUnspecified = 0,
21586            LayerTreeFrameNone = 1,
21587            LayerTreeFrameActive = 2,
21588            LayerTreeFrameCreating = 3,
21589            LayerTreeFrameWaitingForFirstCommit = 4,
21590            LayerTreeFrameWaitingForFirstActivation = 5,
21591        }
21592        impl LayerTreeFrameSinkState {
21593            /// String value of the enum field names used in the ProtoBuf definition.
21594            ///
21595            /// The values are not transformed in any way and thus are considered stable
21596            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21597            pub fn as_str_name(&self) -> &'static str {
21598                match self {
21599                    Self::LayerTreeFrameUnspecified => "LAYER_TREE_FRAME_UNSPECIFIED",
21600                    Self::LayerTreeFrameNone => "LAYER_TREE_FRAME_NONE",
21601                    Self::LayerTreeFrameActive => "LAYER_TREE_FRAME_ACTIVE",
21602                    Self::LayerTreeFrameCreating => "LAYER_TREE_FRAME_CREATING",
21603                    Self::LayerTreeFrameWaitingForFirstCommit => {
21604                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT"
21605                    }
21606                    Self::LayerTreeFrameWaitingForFirstActivation => {
21607                        "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION"
21608                    }
21609                }
21610            }
21611            /// Creates an enum from field names used in the ProtoBuf definition.
21612            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21613                match value {
21614                    "LAYER_TREE_FRAME_UNSPECIFIED" => {
21615                        Some(Self::LayerTreeFrameUnspecified)
21616                    }
21617                    "LAYER_TREE_FRAME_NONE" => Some(Self::LayerTreeFrameNone),
21618                    "LAYER_TREE_FRAME_ACTIVE" => Some(Self::LayerTreeFrameActive),
21619                    "LAYER_TREE_FRAME_CREATING" => Some(Self::LayerTreeFrameCreating),
21620                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_COMMIT" => {
21621                        Some(Self::LayerTreeFrameWaitingForFirstCommit)
21622                    }
21623                    "LAYER_TREE_FRAME_WAITING_FOR_FIRST_ACTIVATION" => {
21624                        Some(Self::LayerTreeFrameWaitingForFirstActivation)
21625                    }
21626                    _ => None,
21627                }
21628            }
21629        }
21630        #[derive(
21631            Clone,
21632            Copy,
21633            Debug,
21634            PartialEq,
21635            Eq,
21636            Hash,
21637            PartialOrd,
21638            Ord,
21639            ::prost::Enumeration
21640        )]
21641        #[repr(i32)]
21642        pub enum ForcedRedrawOnTimeoutState {
21643            ForcedRedrawUnspecified = 0,
21644            ForcedRedrawIdle = 1,
21645            ForcedRedrawWaitingForCommit = 2,
21646            ForcedRedrawWaitingForActivation = 3,
21647            ForcedRedrawWaitingForDraw = 4,
21648        }
21649        impl ForcedRedrawOnTimeoutState {
21650            /// String value of the enum field names used in the ProtoBuf definition.
21651            ///
21652            /// The values are not transformed in any way and thus are considered stable
21653            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21654            pub fn as_str_name(&self) -> &'static str {
21655                match self {
21656                    Self::ForcedRedrawUnspecified => "FORCED_REDRAW_UNSPECIFIED",
21657                    Self::ForcedRedrawIdle => "FORCED_REDRAW_IDLE",
21658                    Self::ForcedRedrawWaitingForCommit => {
21659                        "FORCED_REDRAW_WAITING_FOR_COMMIT"
21660                    }
21661                    Self::ForcedRedrawWaitingForActivation => {
21662                        "FORCED_REDRAW_WAITING_FOR_ACTIVATION"
21663                    }
21664                    Self::ForcedRedrawWaitingForDraw => "FORCED_REDRAW_WAITING_FOR_DRAW",
21665                }
21666            }
21667            /// Creates an enum from field names used in the ProtoBuf definition.
21668            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21669                match value {
21670                    "FORCED_REDRAW_UNSPECIFIED" => Some(Self::ForcedRedrawUnspecified),
21671                    "FORCED_REDRAW_IDLE" => Some(Self::ForcedRedrawIdle),
21672                    "FORCED_REDRAW_WAITING_FOR_COMMIT" => {
21673                        Some(Self::ForcedRedrawWaitingForCommit)
21674                    }
21675                    "FORCED_REDRAW_WAITING_FOR_ACTIVATION" => {
21676                        Some(Self::ForcedRedrawWaitingForActivation)
21677                    }
21678                    "FORCED_REDRAW_WAITING_FOR_DRAW" => {
21679                        Some(Self::ForcedRedrawWaitingForDraw)
21680                    }
21681                    _ => None,
21682                }
21683            }
21684        }
21685    }
21686    /// Next id: 47
21687    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21688    pub struct MinorState {
21689        #[prost(int32, optional, tag = "1")]
21690        pub commit_count: ::core::option::Option<i32>,
21691        #[prost(int32, optional, tag = "2")]
21692        pub current_frame_number: ::core::option::Option<i32>,
21693        #[prost(int32, optional, tag = "3")]
21694        pub last_frame_number_submit_performed: ::core::option::Option<i32>,
21695        #[prost(int32, optional, tag = "4")]
21696        pub last_frame_number_draw_performed: ::core::option::Option<i32>,
21697        #[prost(int32, optional, tag = "5")]
21698        pub last_frame_number_begin_main_frame_sent: ::core::option::Option<i32>,
21699        #[prost(bool, optional, tag = "6")]
21700        pub did_draw: ::core::option::Option<bool>,
21701        #[prost(bool, optional, tag = "7")]
21702        pub did_send_begin_main_frame_for_current_frame: ::core::option::Option<bool>,
21703        #[prost(bool, optional, tag = "8")]
21704        pub did_notify_begin_main_frame_not_expected_until: ::core::option::Option<bool>,
21705        #[prost(bool, optional, tag = "9")]
21706        pub did_notify_begin_main_frame_not_expected_soon: ::core::option::Option<bool>,
21707        #[prost(bool, optional, tag = "10")]
21708        pub wants_begin_main_frame_not_expected: ::core::option::Option<bool>,
21709        #[prost(bool, optional, tag = "11")]
21710        pub did_commit_during_frame: ::core::option::Option<bool>,
21711        #[prost(bool, optional, tag = "12")]
21712        pub did_invalidate_layer_tree_frame_sink: ::core::option::Option<bool>,
21713        #[prost(bool, optional, tag = "13")]
21714        pub did_perform_impl_side_invalidaion: ::core::option::Option<bool>,
21715        #[prost(bool, optional, tag = "14")]
21716        pub did_prepare_tiles: ::core::option::Option<bool>,
21717        #[prost(int32, optional, tag = "15")]
21718        pub consecutive_checkerboard_animations: ::core::option::Option<i32>,
21719        #[prost(int32, optional, tag = "16")]
21720        pub pending_submit_frames: ::core::option::Option<i32>,
21721        #[prost(int32, optional, tag = "17")]
21722        pub submit_frames_with_current_layer_tree_frame_sink: ::core::option::Option<
21723            i32,
21724        >,
21725        #[prost(bool, optional, tag = "18")]
21726        pub needs_redraw: ::core::option::Option<bool>,
21727        #[prost(bool, optional, tag = "19")]
21728        pub needs_prepare_tiles: ::core::option::Option<bool>,
21729        #[prost(bool, optional, tag = "20")]
21730        pub needs_begin_main_frame: ::core::option::Option<bool>,
21731        #[prost(bool, optional, tag = "21")]
21732        pub needs_one_begin_impl_frame: ::core::option::Option<bool>,
21733        #[prost(bool, optional, tag = "22")]
21734        pub visible: ::core::option::Option<bool>,
21735        #[prost(bool, optional, tag = "23")]
21736        pub begin_frame_source_paused: ::core::option::Option<bool>,
21737        #[prost(bool, optional, tag = "24")]
21738        pub can_draw: ::core::option::Option<bool>,
21739        #[prost(bool, optional, tag = "25")]
21740        pub resourceless_draw: ::core::option::Option<bool>,
21741        #[prost(bool, optional, tag = "26")]
21742        pub has_pending_tree: ::core::option::Option<bool>,
21743        #[prost(bool, optional, tag = "27")]
21744        pub pending_tree_is_ready_for_activation: ::core::option::Option<bool>,
21745        #[prost(bool, optional, tag = "28")]
21746        pub active_tree_needs_first_draw: ::core::option::Option<bool>,
21747        #[prost(bool, optional, tag = "29")]
21748        pub active_tree_is_ready_to_draw: ::core::option::Option<bool>,
21749        #[prost(bool, optional, tag = "30")]
21750        pub did_create_and_initialize_first_layer_tree_frame_sink: ::core::option::Option<
21751            bool,
21752        >,
21753        #[prost(enumeration = "minor_state::TreePriority", optional, tag = "31")]
21754        pub tree_priority: ::core::option::Option<i32>,
21755        #[prost(enumeration = "minor_state::ScrollHandlerState", optional, tag = "32")]
21756        pub scroll_handler_state: ::core::option::Option<i32>,
21757        #[prost(bool, optional, tag = "33")]
21758        pub critical_begin_main_frame_to_activate_is_fast: ::core::option::Option<bool>,
21759        #[prost(bool, optional, tag = "34")]
21760        pub main_thread_missed_last_deadline: ::core::option::Option<bool>,
21761        #[prost(bool, optional, tag = "36")]
21762        pub video_needs_begin_frames: ::core::option::Option<bool>,
21763        #[prost(bool, optional, tag = "37")]
21764        pub defer_begin_main_frame: ::core::option::Option<bool>,
21765        #[prost(bool, optional, tag = "38")]
21766        pub last_commit_had_no_updates: ::core::option::Option<bool>,
21767        #[prost(bool, optional, tag = "39")]
21768        pub did_draw_in_last_frame: ::core::option::Option<bool>,
21769        #[prost(bool, optional, tag = "40")]
21770        pub did_submit_in_last_frame: ::core::option::Option<bool>,
21771        #[prost(bool, optional, tag = "41")]
21772        pub needs_impl_side_invalidation: ::core::option::Option<bool>,
21773        #[prost(bool, optional, tag = "42")]
21774        pub current_pending_tree_is_impl_side: ::core::option::Option<bool>,
21775        #[prost(bool, optional, tag = "43")]
21776        pub previous_pending_tree_was_impl_side: ::core::option::Option<bool>,
21777        #[prost(bool, optional, tag = "44")]
21778        pub processing_animation_worklets_for_active_tree: ::core::option::Option<bool>,
21779        #[prost(bool, optional, tag = "45")]
21780        pub processing_animation_worklets_for_pending_tree: ::core::option::Option<bool>,
21781        #[prost(bool, optional, tag = "46")]
21782        pub processing_paint_worklets_for_pending_tree: ::core::option::Option<bool>,
21783    }
21784    /// Nested message and enum types in `MinorState`.
21785    pub mod minor_state {
21786        #[derive(
21787            Clone,
21788            Copy,
21789            Debug,
21790            PartialEq,
21791            Eq,
21792            Hash,
21793            PartialOrd,
21794            Ord,
21795            ::prost::Enumeration
21796        )]
21797        #[repr(i32)]
21798        pub enum TreePriority {
21799            Unspecified = 0,
21800            SamePriorityForBothTrees = 1,
21801            SmoothnessTakesPriority = 2,
21802            NewContentTakesPriority = 3,
21803        }
21804        impl TreePriority {
21805            /// String value of the enum field names used in the ProtoBuf definition.
21806            ///
21807            /// The values are not transformed in any way and thus are considered stable
21808            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21809            pub fn as_str_name(&self) -> &'static str {
21810                match self {
21811                    Self::Unspecified => "TREE_PRIORITY_UNSPECIFIED",
21812                    Self::SamePriorityForBothTrees => {
21813                        "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES"
21814                    }
21815                    Self::SmoothnessTakesPriority => {
21816                        "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY"
21817                    }
21818                    Self::NewContentTakesPriority => {
21819                        "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY"
21820                    }
21821                }
21822            }
21823            /// Creates an enum from field names used in the ProtoBuf definition.
21824            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21825                match value {
21826                    "TREE_PRIORITY_UNSPECIFIED" => Some(Self::Unspecified),
21827                    "TREE_PRIORITY_SAME_PRIORITY_FOR_BOTH_TREES" => {
21828                        Some(Self::SamePriorityForBothTrees)
21829                    }
21830                    "TREE_PRIORITY_SMOOTHNESS_TAKES_PRIORITY" => {
21831                        Some(Self::SmoothnessTakesPriority)
21832                    }
21833                    "TREE_PRIORITY_NEW_CONTENT_TAKES_PRIORITY" => {
21834                        Some(Self::NewContentTakesPriority)
21835                    }
21836                    _ => None,
21837                }
21838            }
21839        }
21840        #[derive(
21841            Clone,
21842            Copy,
21843            Debug,
21844            PartialEq,
21845            Eq,
21846            Hash,
21847            PartialOrd,
21848            Ord,
21849            ::prost::Enumeration
21850        )]
21851        #[repr(i32)]
21852        pub enum ScrollHandlerState {
21853            ScrollHandlerUnspecified = 0,
21854            ScrollAffectsScrollHandler = 1,
21855            ScrollDoesNotAffectScrollHandler = 2,
21856        }
21857        impl ScrollHandlerState {
21858            /// String value of the enum field names used in the ProtoBuf definition.
21859            ///
21860            /// The values are not transformed in any way and thus are considered stable
21861            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21862            pub fn as_str_name(&self) -> &'static str {
21863                match self {
21864                    Self::ScrollHandlerUnspecified => "SCROLL_HANDLER_UNSPECIFIED",
21865                    Self::ScrollAffectsScrollHandler => "SCROLL_AFFECTS_SCROLL_HANDLER",
21866                    Self::ScrollDoesNotAffectScrollHandler => {
21867                        "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER"
21868                    }
21869                }
21870            }
21871            /// Creates an enum from field names used in the ProtoBuf definition.
21872            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21873                match value {
21874                    "SCROLL_HANDLER_UNSPECIFIED" => Some(Self::ScrollHandlerUnspecified),
21875                    "SCROLL_AFFECTS_SCROLL_HANDLER" => {
21876                        Some(Self::ScrollAffectsScrollHandler)
21877                    }
21878                    "SCROLL_DOES_NOT_AFFECT_SCROLL_HANDLER" => {
21879                        Some(Self::ScrollDoesNotAffectScrollHandler)
21880                    }
21881                    _ => None,
21882                }
21883            }
21884        }
21885    }
21886}
21887/// Next id: 13
21888#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21889pub struct BeginFrameArgs {
21890    #[prost(enumeration = "begin_frame_args::BeginFrameArgsType", optional, tag = "1")]
21891    pub r#type: ::core::option::Option<i32>,
21892    #[prost(uint64, optional, tag = "2")]
21893    pub source_id: ::core::option::Option<u64>,
21894    #[prost(uint64, optional, tag = "3")]
21895    pub sequence_number: ::core::option::Option<u64>,
21896    #[prost(int64, optional, tag = "4")]
21897    pub frame_time_us: ::core::option::Option<i64>,
21898    #[prost(int64, optional, tag = "5")]
21899    pub deadline_us: ::core::option::Option<i64>,
21900    #[prost(int64, optional, tag = "6")]
21901    pub interval_delta_us: ::core::option::Option<i64>,
21902    #[prost(bool, optional, tag = "7")]
21903    pub on_critical_path: ::core::option::Option<bool>,
21904    #[prost(bool, optional, tag = "8")]
21905    pub animate_only: ::core::option::Option<bool>,
21906    #[prost(int64, optional, tag = "12")]
21907    pub frames_throttled_since_last: ::core::option::Option<i64>,
21908    #[prost(oneof = "begin_frame_args::CreatedFrom", tags = "9, 10")]
21909    pub created_from: ::core::option::Option<begin_frame_args::CreatedFrom>,
21910}
21911/// Nested message and enum types in `BeginFrameArgs`.
21912pub mod begin_frame_args {
21913    /// JSON format has a "type" field that was always just "BeginFrameArgs" we
21914    /// drop this in the proto representation, and instead make the JSON format
21915    /// "subtype" field become the type field.
21916    #[derive(
21917        Clone,
21918        Copy,
21919        Debug,
21920        PartialEq,
21921        Eq,
21922        Hash,
21923        PartialOrd,
21924        Ord,
21925        ::prost::Enumeration
21926    )]
21927    #[repr(i32)]
21928    pub enum BeginFrameArgsType {
21929        Unspecified = 0,
21930        Invalid = 1,
21931        Normal = 2,
21932        Missed = 3,
21933    }
21934    impl BeginFrameArgsType {
21935        /// String value of the enum field names used in the ProtoBuf definition.
21936        ///
21937        /// The values are not transformed in any way and thus are considered stable
21938        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21939        pub fn as_str_name(&self) -> &'static str {
21940            match self {
21941                Self::Unspecified => "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED",
21942                Self::Invalid => "BEGIN_FRAME_ARGS_TYPE_INVALID",
21943                Self::Normal => "BEGIN_FRAME_ARGS_TYPE_NORMAL",
21944                Self::Missed => "BEGIN_FRAME_ARGS_TYPE_MISSED",
21945            }
21946        }
21947        /// Creates an enum from field names used in the ProtoBuf definition.
21948        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21949            match value {
21950                "BEGIN_FRAME_ARGS_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
21951                "BEGIN_FRAME_ARGS_TYPE_INVALID" => Some(Self::Invalid),
21952                "BEGIN_FRAME_ARGS_TYPE_NORMAL" => Some(Self::Normal),
21953                "BEGIN_FRAME_ARGS_TYPE_MISSED" => Some(Self::Missed),
21954                _ => None,
21955            }
21956        }
21957    }
21958    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
21959    pub enum CreatedFrom {
21960        /// The interned SourceLocation.
21961        #[prost(uint64, tag = "9")]
21962        SourceLocationIid(u64),
21963        /// The SourceLocation that this args was created from.
21964        /// TODO(nuskos): Eventually we will support interning inside of
21965        /// TypedArgument TraceEvents and then we shouldn't need this SourceLocation
21966        /// since we can emit it as part of the InternedData message. When we can
21967        /// remove this |source_location|.
21968        #[prost(message, tag = "10")]
21969        SourceLocation(super::SourceLocation),
21970    }
21971}
21972/// Next id: 7
21973#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21974pub struct BeginImplFrameArgs {
21975    #[prost(int64, optional, tag = "1")]
21976    pub updated_at_us: ::core::option::Option<i64>,
21977    #[prost(int64, optional, tag = "2")]
21978    pub finished_at_us: ::core::option::Option<i64>,
21979    #[prost(enumeration = "begin_impl_frame_args::State", optional, tag = "3")]
21980    pub state: ::core::option::Option<i32>,
21981    #[prost(message, optional, tag = "6")]
21982    pub timestamps_in_us: ::core::option::Option<begin_impl_frame_args::TimestampsInUs>,
21983    #[prost(oneof = "begin_impl_frame_args::Args", tags = "4, 5")]
21984    pub args: ::core::option::Option<begin_impl_frame_args::Args>,
21985}
21986/// Nested message and enum types in `BeginImplFrameArgs`.
21987pub mod begin_impl_frame_args {
21988    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21989    pub struct TimestampsInUs {
21990        #[prost(int64, optional, tag = "1")]
21991        pub interval_delta: ::core::option::Option<i64>,
21992        #[prost(int64, optional, tag = "2")]
21993        pub now_to_deadline_delta: ::core::option::Option<i64>,
21994        #[prost(int64, optional, tag = "3")]
21995        pub frame_time_to_now_delta: ::core::option::Option<i64>,
21996        #[prost(int64, optional, tag = "4")]
21997        pub frame_time_to_deadline_delta: ::core::option::Option<i64>,
21998        #[prost(int64, optional, tag = "5")]
21999        pub now: ::core::option::Option<i64>,
22000        #[prost(int64, optional, tag = "6")]
22001        pub frame_time: ::core::option::Option<i64>,
22002        #[prost(int64, optional, tag = "7")]
22003        pub deadline: ::core::option::Option<i64>,
22004    }
22005    #[derive(
22006        Clone,
22007        Copy,
22008        Debug,
22009        PartialEq,
22010        Eq,
22011        Hash,
22012        PartialOrd,
22013        Ord,
22014        ::prost::Enumeration
22015    )]
22016    #[repr(i32)]
22017    pub enum State {
22018        BeginFrameFinished = 0,
22019        BeginFrameUsing = 1,
22020    }
22021    impl State {
22022        /// String value of the enum field names used in the ProtoBuf definition.
22023        ///
22024        /// The values are not transformed in any way and thus are considered stable
22025        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22026        pub fn as_str_name(&self) -> &'static str {
22027            match self {
22028                Self::BeginFrameFinished => "BEGIN_FRAME_FINISHED",
22029                Self::BeginFrameUsing => "BEGIN_FRAME_USING",
22030            }
22031        }
22032        /// Creates an enum from field names used in the ProtoBuf definition.
22033        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22034            match value {
22035                "BEGIN_FRAME_FINISHED" => Some(Self::BeginFrameFinished),
22036                "BEGIN_FRAME_USING" => Some(Self::BeginFrameUsing),
22037                _ => None,
22038            }
22039        }
22040    }
22041    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
22042    pub enum Args {
22043        /// Only set if |state| is BEGIN_FRAME_FINISHED.
22044        #[prost(message, tag = "4")]
22045        CurrentArgs(super::BeginFrameArgs),
22046        /// Only set if |state| is BEGIN_FRAME_USING.
22047        #[prost(message, tag = "5")]
22048        LastArgs(super::BeginFrameArgs),
22049    }
22050}
22051#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22052pub struct BeginFrameObserverState {
22053    #[prost(int64, optional, tag = "1")]
22054    pub dropped_begin_frame_args: ::core::option::Option<i64>,
22055    #[prost(message, optional, tag = "2")]
22056    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
22057}
22058#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22059pub struct BeginFrameSourceState {
22060    #[prost(uint32, optional, tag = "1")]
22061    pub source_id: ::core::option::Option<u32>,
22062    #[prost(bool, optional, tag = "2")]
22063    pub paused: ::core::option::Option<bool>,
22064    #[prost(uint32, optional, tag = "3")]
22065    pub num_observers: ::core::option::Option<u32>,
22066    #[prost(message, optional, tag = "4")]
22067    pub last_begin_frame_args: ::core::option::Option<BeginFrameArgs>,
22068}
22069#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22070pub struct CompositorTimingHistory {
22071    #[prost(int64, optional, tag = "1")]
22072    pub begin_main_frame_queue_critical_estimate_delta_us: ::core::option::Option<i64>,
22073    #[prost(int64, optional, tag = "2")]
22074    pub begin_main_frame_queue_not_critical_estimate_delta_us: ::core::option::Option<
22075        i64,
22076    >,
22077    #[prost(int64, optional, tag = "3")]
22078    pub begin_main_frame_start_to_ready_to_commit_estimate_delta_us: ::core::option::Option<
22079        i64,
22080    >,
22081    #[prost(int64, optional, tag = "4")]
22082    pub commit_to_ready_to_activate_estimate_delta_us: ::core::option::Option<i64>,
22083    #[prost(int64, optional, tag = "5")]
22084    pub prepare_tiles_estimate_delta_us: ::core::option::Option<i64>,
22085    #[prost(int64, optional, tag = "6")]
22086    pub activate_estimate_delta_us: ::core::option::Option<i64>,
22087    #[prost(int64, optional, tag = "7")]
22088    pub draw_estimate_delta_us: ::core::option::Option<i64>,
22089}
22090/// Details about ContentSettings trace events.
22091#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22092pub struct ChromeContentSettingsEventInfo {
22093    /// The number of user defined hostname patterns for content settings at
22094    /// browser start. Similar to UMA histogram
22095    /// 'ContentSettings.NumberOfExceptions'.
22096    #[prost(uint32, optional, tag = "1")]
22097    pub number_of_exceptions: ::core::option::Option<u32>,
22098}
22099/// DEPRECATED. Only kept for backwards compatibility. Use |ChromeFrameReporter2|
22100/// in
22101/// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
22102/// instead.
22103#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22104pub struct ChromeFrameReporter {
22105    #[prost(enumeration = "chrome_frame_reporter::State", optional, tag = "1")]
22106    pub state: ::core::option::Option<i32>,
22107    /// The reason is set only if |state| is not |STATE_UPDATED_ALL|.
22108    #[prost(enumeration = "chrome_frame_reporter::FrameDropReason", optional, tag = "2")]
22109    pub reason: ::core::option::Option<i32>,
22110    #[prost(uint64, optional, tag = "3")]
22111    pub frame_source: ::core::option::Option<u64>,
22112    #[prost(uint64, optional, tag = "4")]
22113    pub frame_sequence: ::core::option::Option<u64>,
22114    /// If this is a droped frame (i.e. if |state| is set to |STATE_DROPPED| or
22115    /// |STATE_PRESENTED_PARTIAL|), then indicates whether this frame impacts
22116    /// smoothness.
22117    #[prost(bool, optional, tag = "5")]
22118    pub affects_smoothness: ::core::option::Option<bool>,
22119    /// The type of active scroll.
22120    #[prost(enumeration = "chrome_frame_reporter::ScrollState", optional, tag = "6")]
22121    pub scroll_state: ::core::option::Option<i32>,
22122    /// If any main thread animation is active during this frame.
22123    #[prost(bool, optional, tag = "7")]
22124    pub has_main_animation: ::core::option::Option<bool>,
22125    /// If any compositor thread animation is active during this frame.
22126    #[prost(bool, optional, tag = "8")]
22127    pub has_compositor_animation: ::core::option::Option<bool>,
22128    /// If any touch-driven UX (not scroll) is active during this frame.
22129    #[prost(bool, optional, tag = "9")]
22130    pub has_smooth_input_main: ::core::option::Option<bool>,
22131    /// Whether the frame contained any missing content (i.e. whether there was
22132    /// checkerboarding in the frame).  If has_missing_content,
22133    /// checkerboarded_needs_raster and checkerboarded_needs_record all have
22134    /// values, has_missing_content should equal checkerboarded_needs_raster ||
22135    /// checkerboarded_needs_record.
22136    #[prost(bool, optional, tag = "10")]
22137    pub has_missing_content: ::core::option::Option<bool>,
22138    /// The id of layer_tree_host that the frame has been produced for.
22139    #[prost(uint64, optional, tag = "11")]
22140    pub layer_tree_host_id: ::core::option::Option<u64>,
22141    /// If total latency of PipelineReporter exceeds a certain limit.
22142    #[prost(bool, optional, tag = "12")]
22143    pub has_high_latency: ::core::option::Option<bool>,
22144    /// Indicate if the frame is "FORKED" (i.e. a PipelineReporter event starts at
22145    /// the same frame sequence as another PipelineReporter) or "BACKFILL"
22146    /// (i.e. dropped frames when there are no partial compositor updates).
22147    #[prost(enumeration = "chrome_frame_reporter::FrameType", optional, tag = "13")]
22148    pub frame_type: ::core::option::Option<i32>,
22149    /// The breakdown stage of PipelineReporter that is most likely accountable for
22150    /// high latency.
22151    #[prost(string, repeated, tag = "14")]
22152    pub high_latency_contribution_stage: ::prost::alloc::vec::Vec<
22153        ::prost::alloc::string::String,
22154    >,
22155    /// Whether the frame contained any content that is not fully rastered.
22156    #[prost(bool, optional, tag = "15")]
22157    pub checkerboarded_needs_raster: ::core::option::Option<bool>,
22158    /// Whether the frame contained any content that is not fully recorded.
22159    #[prost(bool, optional, tag = "16")]
22160    pub checkerboarded_needs_record: ::core::option::Option<bool>,
22161    /// viz::BeginFrameArgs.trace_id of the frame (before surface aggregation). See
22162    /// also ChromeTrackEvent.EventLatency.surface_frame_trace_id.
22163    #[prost(int64, optional, tag = "17")]
22164    pub surface_frame_trace_id: ::core::option::Option<i64>,
22165    /// gfx::PresentationFeedback.display_trace_id of the frame (after surface
22166    /// aggregation). See also ChromeTrackEvent.EventLatency.display_trace_id.
22167    #[prost(int64, optional, tag = "18")]
22168    pub display_trace_id: ::core::option::Option<i64>,
22169}
22170/// Nested message and enum types in `ChromeFrameReporter`.
22171pub mod chrome_frame_reporter {
22172    #[derive(
22173        Clone,
22174        Copy,
22175        Debug,
22176        PartialEq,
22177        Eq,
22178        Hash,
22179        PartialOrd,
22180        Ord,
22181        ::prost::Enumeration
22182    )]
22183    #[repr(i32)]
22184    pub enum State {
22185        /// The frame did not have any updates to present.
22186        NoUpdateDesired = 0,
22187        /// The frame presented all the desired updates (i.e. any updates requested
22188        /// from both the compositor thread and main-threads were handled).
22189        PresentedAll = 1,
22190        /// The frame was presented with some updates, but also missed some updates
22191        /// (e.g. missed updates from the main-thread, but included updates from the
22192        /// compositor thread).
22193        PresentedPartial = 2,
22194        /// The frame was dropped, i.e. some updates were desired for the frame, but
22195        /// was not presented.
22196        Dropped = 3,
22197    }
22198    impl State {
22199        /// String value of the enum field names used in the ProtoBuf definition.
22200        ///
22201        /// The values are not transformed in any way and thus are considered stable
22202        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22203        pub fn as_str_name(&self) -> &'static str {
22204            match self {
22205                Self::NoUpdateDesired => "STATE_NO_UPDATE_DESIRED",
22206                Self::PresentedAll => "STATE_PRESENTED_ALL",
22207                Self::PresentedPartial => "STATE_PRESENTED_PARTIAL",
22208                Self::Dropped => "STATE_DROPPED",
22209            }
22210        }
22211        /// Creates an enum from field names used in the ProtoBuf definition.
22212        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22213            match value {
22214                "STATE_NO_UPDATE_DESIRED" => Some(Self::NoUpdateDesired),
22215                "STATE_PRESENTED_ALL" => Some(Self::PresentedAll),
22216                "STATE_PRESENTED_PARTIAL" => Some(Self::PresentedPartial),
22217                "STATE_DROPPED" => Some(Self::Dropped),
22218                _ => None,
22219            }
22220        }
22221    }
22222    #[derive(
22223        Clone,
22224        Copy,
22225        Debug,
22226        PartialEq,
22227        Eq,
22228        Hash,
22229        PartialOrd,
22230        Ord,
22231        ::prost::Enumeration
22232    )]
22233    #[repr(i32)]
22234    pub enum FrameDropReason {
22235        ReasonUnspecified = 0,
22236        /// Frame was dropped by the display-compositor.
22237        /// The display-compositor may drop a frame some times (e.g. the frame missed
22238        /// the deadline, or was blocked on surface-sync, etc.)
22239        ReasonDisplayCompositor = 1,
22240        /// Frame was dropped because of the main-thread.
22241        /// The main-thread may cause a frame to be dropped, e.g. if the main-thread
22242        /// is running expensive javascript, or doing a lot of layout updates, etc.
22243        ReasonMainThread = 2,
22244        /// Frame was dropped by the client compositor.
22245        /// The client compositor can drop some frames too (e.g. attempting to
22246        /// recover latency, missing the deadline, etc.).
22247        ReasonClientCompositor = 3,
22248    }
22249    impl FrameDropReason {
22250        /// String value of the enum field names used in the ProtoBuf definition.
22251        ///
22252        /// The values are not transformed in any way and thus are considered stable
22253        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22254        pub fn as_str_name(&self) -> &'static str {
22255            match self {
22256                Self::ReasonUnspecified => "REASON_UNSPECIFIED",
22257                Self::ReasonDisplayCompositor => "REASON_DISPLAY_COMPOSITOR",
22258                Self::ReasonMainThread => "REASON_MAIN_THREAD",
22259                Self::ReasonClientCompositor => "REASON_CLIENT_COMPOSITOR",
22260            }
22261        }
22262        /// Creates an enum from field names used in the ProtoBuf definition.
22263        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22264            match value {
22265                "REASON_UNSPECIFIED" => Some(Self::ReasonUnspecified),
22266                "REASON_DISPLAY_COMPOSITOR" => Some(Self::ReasonDisplayCompositor),
22267                "REASON_MAIN_THREAD" => Some(Self::ReasonMainThread),
22268                "REASON_CLIENT_COMPOSITOR" => Some(Self::ReasonClientCompositor),
22269                _ => None,
22270            }
22271        }
22272    }
22273    #[derive(
22274        Clone,
22275        Copy,
22276        Debug,
22277        PartialEq,
22278        Eq,
22279        Hash,
22280        PartialOrd,
22281        Ord,
22282        ::prost::Enumeration
22283    )]
22284    #[repr(i32)]
22285    pub enum ScrollState {
22286        ScrollNone = 0,
22287        ScrollMainThread = 1,
22288        ScrollCompositorThread = 2,
22289        ScrollRaster = 3,
22290        /// Used when it can't be determined whether a scroll is in progress or not.
22291        ScrollUnknown = 4,
22292    }
22293    impl ScrollState {
22294        /// String value of the enum field names used in the ProtoBuf definition.
22295        ///
22296        /// The values are not transformed in any way and thus are considered stable
22297        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22298        pub fn as_str_name(&self) -> &'static str {
22299            match self {
22300                Self::ScrollNone => "SCROLL_NONE",
22301                Self::ScrollMainThread => "SCROLL_MAIN_THREAD",
22302                Self::ScrollCompositorThread => "SCROLL_COMPOSITOR_THREAD",
22303                Self::ScrollRaster => "SCROLL_RASTER",
22304                Self::ScrollUnknown => "SCROLL_UNKNOWN",
22305            }
22306        }
22307        /// Creates an enum from field names used in the ProtoBuf definition.
22308        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22309            match value {
22310                "SCROLL_NONE" => Some(Self::ScrollNone),
22311                "SCROLL_MAIN_THREAD" => Some(Self::ScrollMainThread),
22312                "SCROLL_COMPOSITOR_THREAD" => Some(Self::ScrollCompositorThread),
22313                "SCROLL_RASTER" => Some(Self::ScrollRaster),
22314                "SCROLL_UNKNOWN" => Some(Self::ScrollUnknown),
22315                _ => None,
22316            }
22317        }
22318    }
22319    #[derive(
22320        Clone,
22321        Copy,
22322        Debug,
22323        PartialEq,
22324        Eq,
22325        Hash,
22326        PartialOrd,
22327        Ord,
22328        ::prost::Enumeration
22329    )]
22330    #[repr(i32)]
22331    pub enum FrameType {
22332        Forked = 0,
22333        Backfill = 1,
22334    }
22335    impl FrameType {
22336        /// String value of the enum field names used in the ProtoBuf definition.
22337        ///
22338        /// The values are not transformed in any way and thus are considered stable
22339        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22340        pub fn as_str_name(&self) -> &'static str {
22341            match self {
22342                Self::Forked => "FORKED",
22343                Self::Backfill => "BACKFILL",
22344            }
22345        }
22346        /// Creates an enum from field names used in the ProtoBuf definition.
22347        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22348            match value {
22349                "FORKED" => Some(Self::Forked),
22350                "BACKFILL" => Some(Self::Backfill),
22351                _ => None,
22352            }
22353        }
22354    }
22355}
22356/// Details about one of Chrome's keyed services associated with the event.
22357#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22358pub struct ChromeKeyedService {
22359    /// Name of the service, e.g. "MediaRouter", "PreviewsService", etc. (in
22360    /// Chrome, these are static strings known at compile time).
22361    #[prost(string, optional, tag = "1")]
22362    pub name: ::core::option::Option<::prost::alloc::string::String>,
22363}
22364#[derive(Clone, PartialEq, ::prost::Message)]
22365pub struct ChromeLatencyInfo {
22366    #[prost(int64, optional, tag = "1")]
22367    pub trace_id: ::core::option::Option<i64>,
22368    #[prost(enumeration = "chrome_latency_info::Step", optional, tag = "2")]
22369    pub step: ::core::option::Option<i32>,
22370    #[prost(int32, optional, tag = "3")]
22371    pub frame_tree_node_id: ::core::option::Option<i32>,
22372    #[prost(message, repeated, tag = "4")]
22373    pub component_info: ::prost::alloc::vec::Vec<chrome_latency_info::ComponentInfo>,
22374    #[prost(bool, optional, tag = "5")]
22375    pub is_coalesced: ::core::option::Option<bool>,
22376    #[prost(int64, optional, tag = "6")]
22377    pub gesture_scroll_id: ::core::option::Option<i64>,
22378    #[prost(int64, optional, tag = "7")]
22379    pub touch_id: ::core::option::Option<i64>,
22380    /// The type of input corresponding to this `ChromeLatencyInfo`.
22381    #[prost(enumeration = "chrome_latency_info::InputType", optional, tag = "8")]
22382    pub input_type: ::core::option::Option<i32>,
22383}
22384/// Nested message and enum types in `ChromeLatencyInfo`.
22385pub mod chrome_latency_info {
22386    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22387    pub struct ComponentInfo {
22388        #[prost(enumeration = "LatencyComponentType", optional, tag = "1")]
22389        pub component_type: ::core::option::Option<i32>,
22390        /// Microsecond timestamp in CLOCK_MONOTONIC domain
22391        #[prost(uint64, optional, tag = "2")]
22392        pub time_us: ::core::option::Option<u64>,
22393    }
22394    /// NEXT ID: 12
22395    /// All step are optional but the enum is ordered (not by number) below in the
22396    /// order we expect them to appear if they are emitted in trace in a blocking
22397    /// fashion.
22398    #[derive(
22399        Clone,
22400        Copy,
22401        Debug,
22402        PartialEq,
22403        Eq,
22404        Hash,
22405        PartialOrd,
22406        Ord,
22407        ::prost::Enumeration
22408    )]
22409    #[repr(i32)]
22410    pub enum Step {
22411        Unspecified = 0,
22412        /// Emitted on the browser main thread.
22413        SendInputEventUi = 3,
22414        /// Happens on the renderer's compositor.
22415        HandleInputEventImpl = 5,
22416        DidHandleInputAndOverscroll = 8,
22417        /// Occurs on the Renderer's main thread.
22418        HandleInputEventMain = 4,
22419        MainThreadScrollUpdate = 2,
22420        HandleInputEventMainCommit = 1,
22421        /// Could be emitted on both the renderer's main OR compositor.
22422        HandledInputEventMainOrImpl = 9,
22423        /// Optionally sometimes HANDLED_INPUT_EVENT_MAIN_OR_IMPL will proxy to the
22424        /// renderer's compositor and this will be emitted.
22425        HandledInputEventImpl = 10,
22426        /// Renderer's compositor.
22427        SwapBuffers = 6,
22428        /// Happens on the VizCompositor in the GPU process.
22429        DrawAndSwap = 7,
22430        /// Happens on the GPU main thread after the swap has completed.
22431        ///
22432        /// See above for NEXT ID, enum steps are not ordered by tag number.
22433        FinishedSwapBuffers = 11,
22434    }
22435    impl Step {
22436        /// String value of the enum field names used in the ProtoBuf definition.
22437        ///
22438        /// The values are not transformed in any way and thus are considered stable
22439        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22440        pub fn as_str_name(&self) -> &'static str {
22441            match self {
22442                Self::Unspecified => "STEP_UNSPECIFIED",
22443                Self::SendInputEventUi => "STEP_SEND_INPUT_EVENT_UI",
22444                Self::HandleInputEventImpl => "STEP_HANDLE_INPUT_EVENT_IMPL",
22445                Self::DidHandleInputAndOverscroll => {
22446                    "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL"
22447                }
22448                Self::HandleInputEventMain => "STEP_HANDLE_INPUT_EVENT_MAIN",
22449                Self::MainThreadScrollUpdate => "STEP_MAIN_THREAD_SCROLL_UPDATE",
22450                Self::HandleInputEventMainCommit => "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT",
22451                Self::HandledInputEventMainOrImpl => {
22452                    "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL"
22453                }
22454                Self::HandledInputEventImpl => "STEP_HANDLED_INPUT_EVENT_IMPL",
22455                Self::SwapBuffers => "STEP_SWAP_BUFFERS",
22456                Self::DrawAndSwap => "STEP_DRAW_AND_SWAP",
22457                Self::FinishedSwapBuffers => "STEP_FINISHED_SWAP_BUFFERS",
22458            }
22459        }
22460        /// Creates an enum from field names used in the ProtoBuf definition.
22461        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22462            match value {
22463                "STEP_UNSPECIFIED" => Some(Self::Unspecified),
22464                "STEP_SEND_INPUT_EVENT_UI" => Some(Self::SendInputEventUi),
22465                "STEP_HANDLE_INPUT_EVENT_IMPL" => Some(Self::HandleInputEventImpl),
22466                "STEP_DID_HANDLE_INPUT_AND_OVERSCROLL" => {
22467                    Some(Self::DidHandleInputAndOverscroll)
22468                }
22469                "STEP_HANDLE_INPUT_EVENT_MAIN" => Some(Self::HandleInputEventMain),
22470                "STEP_MAIN_THREAD_SCROLL_UPDATE" => Some(Self::MainThreadScrollUpdate),
22471                "STEP_HANDLE_INPUT_EVENT_MAIN_COMMIT" => {
22472                    Some(Self::HandleInputEventMainCommit)
22473                }
22474                "STEP_HANDLED_INPUT_EVENT_MAIN_OR_IMPL" => {
22475                    Some(Self::HandledInputEventMainOrImpl)
22476                }
22477                "STEP_HANDLED_INPUT_EVENT_IMPL" => Some(Self::HandledInputEventImpl),
22478                "STEP_SWAP_BUFFERS" => Some(Self::SwapBuffers),
22479                "STEP_DRAW_AND_SWAP" => Some(Self::DrawAndSwap),
22480                "STEP_FINISHED_SWAP_BUFFERS" => Some(Self::FinishedSwapBuffers),
22481                _ => None,
22482            }
22483        }
22484    }
22485    /// This enum is a copy of LatencyComponentType enum in Chrome, located in
22486    /// ui/latency/latency_info.h, modulo added UNKNOWN value per protobuf
22487    /// practices.
22488    #[derive(
22489        Clone,
22490        Copy,
22491        Debug,
22492        PartialEq,
22493        Eq,
22494        Hash,
22495        PartialOrd,
22496        Ord,
22497        ::prost::Enumeration
22498    )]
22499    #[repr(i32)]
22500    pub enum LatencyComponentType {
22501        ComponentUnspecified = 0,
22502        ComponentInputEventLatencyBeginRwh = 1,
22503        ComponentInputEventLatencyScrollUpdateOriginal = 2,
22504        ComponentInputEventLatencyFirstScrollUpdateOriginal = 3,
22505        ComponentInputEventLatencyOriginal = 4,
22506        ComponentInputEventLatencyUi = 5,
22507        ComponentInputEventLatencyRendererMain = 6,
22508        ComponentInputEventLatencyRenderingScheduledMain = 7,
22509        ComponentInputEventLatencyRenderingScheduledImpl = 8,
22510        ComponentInputEventLatencyScrollUpdateLastEvent = 9,
22511        ComponentInputEventLatencyAckRwh = 10,
22512        ComponentInputEventLatencyRendererSwap = 11,
22513        ComponentDisplayCompositorReceivedFrame = 12,
22514        ComponentInputEventGpuSwapBuffer = 13,
22515        ComponentInputEventLatencyFrameSwap = 14,
22516    }
22517    impl LatencyComponentType {
22518        /// String value of the enum field names used in the ProtoBuf definition.
22519        ///
22520        /// The values are not transformed in any way and thus are considered stable
22521        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22522        pub fn as_str_name(&self) -> &'static str {
22523            match self {
22524                Self::ComponentUnspecified => "COMPONENT_UNSPECIFIED",
22525                Self::ComponentInputEventLatencyBeginRwh => {
22526                    "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH"
22527                }
22528                Self::ComponentInputEventLatencyScrollUpdateOriginal => {
22529                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL"
22530                }
22531                Self::ComponentInputEventLatencyFirstScrollUpdateOriginal => {
22532                    "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL"
22533                }
22534                Self::ComponentInputEventLatencyOriginal => {
22535                    "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL"
22536                }
22537                Self::ComponentInputEventLatencyUi => "COMPONENT_INPUT_EVENT_LATENCY_UI",
22538                Self::ComponentInputEventLatencyRendererMain => {
22539                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN"
22540                }
22541                Self::ComponentInputEventLatencyRenderingScheduledMain => {
22542                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN"
22543                }
22544                Self::ComponentInputEventLatencyRenderingScheduledImpl => {
22545                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL"
22546                }
22547                Self::ComponentInputEventLatencyScrollUpdateLastEvent => {
22548                    "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT"
22549                }
22550                Self::ComponentInputEventLatencyAckRwh => {
22551                    "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH"
22552                }
22553                Self::ComponentInputEventLatencyRendererSwap => {
22554                    "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP"
22555                }
22556                Self::ComponentDisplayCompositorReceivedFrame => {
22557                    "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME"
22558                }
22559                Self::ComponentInputEventGpuSwapBuffer => {
22560                    "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER"
22561                }
22562                Self::ComponentInputEventLatencyFrameSwap => {
22563                    "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP"
22564                }
22565            }
22566        }
22567        /// Creates an enum from field names used in the ProtoBuf definition.
22568        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22569            match value {
22570                "COMPONENT_UNSPECIFIED" => Some(Self::ComponentUnspecified),
22571                "COMPONENT_INPUT_EVENT_LATENCY_BEGIN_RWH" => {
22572                    Some(Self::ComponentInputEventLatencyBeginRwh)
22573                }
22574                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL" => {
22575                    Some(Self::ComponentInputEventLatencyScrollUpdateOriginal)
22576                }
22577                "COMPONENT_INPUT_EVENT_LATENCY_FIRST_SCROLL_UPDATE_ORIGINAL" => {
22578                    Some(Self::ComponentInputEventLatencyFirstScrollUpdateOriginal)
22579                }
22580                "COMPONENT_INPUT_EVENT_LATENCY_ORIGINAL" => {
22581                    Some(Self::ComponentInputEventLatencyOriginal)
22582                }
22583                "COMPONENT_INPUT_EVENT_LATENCY_UI" => {
22584                    Some(Self::ComponentInputEventLatencyUi)
22585                }
22586                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_MAIN" => {
22587                    Some(Self::ComponentInputEventLatencyRendererMain)
22588                }
22589                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_MAIN" => {
22590                    Some(Self::ComponentInputEventLatencyRenderingScheduledMain)
22591                }
22592                "COMPONENT_INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_IMPL" => {
22593                    Some(Self::ComponentInputEventLatencyRenderingScheduledImpl)
22594                }
22595                "COMPONENT_INPUT_EVENT_LATENCY_SCROLL_UPDATE_LAST_EVENT" => {
22596                    Some(Self::ComponentInputEventLatencyScrollUpdateLastEvent)
22597                }
22598                "COMPONENT_INPUT_EVENT_LATENCY_ACK_RWH" => {
22599                    Some(Self::ComponentInputEventLatencyAckRwh)
22600                }
22601                "COMPONENT_INPUT_EVENT_LATENCY_RENDERER_SWAP" => {
22602                    Some(Self::ComponentInputEventLatencyRendererSwap)
22603                }
22604                "COMPONENT_DISPLAY_COMPOSITOR_RECEIVED_FRAME" => {
22605                    Some(Self::ComponentDisplayCompositorReceivedFrame)
22606                }
22607                "COMPONENT_INPUT_EVENT_GPU_SWAP_BUFFER" => {
22608                    Some(Self::ComponentInputEventGpuSwapBuffer)
22609                }
22610                "COMPONENT_INPUT_EVENT_LATENCY_FRAME_SWAP" => {
22611                    Some(Self::ComponentInputEventLatencyFrameSwap)
22612                }
22613                _ => None,
22614            }
22615        }
22616    }
22617    #[derive(
22618        Clone,
22619        Copy,
22620        Debug,
22621        PartialEq,
22622        Eq,
22623        Hash,
22624        PartialOrd,
22625        Ord,
22626        ::prost::Enumeration
22627    )]
22628    #[repr(i32)]
22629    pub enum InputType {
22630        UnspecifiedOrOther = 0,
22631        TouchMoved = 1,
22632        GestureScrollBegin = 2,
22633        GestureScrollUpdate = 3,
22634        GestureScrollEnd = 4,
22635        GestureTap = 5,
22636        GestureTapCancel = 6,
22637    }
22638    impl InputType {
22639        /// String value of the enum field names used in the ProtoBuf definition.
22640        ///
22641        /// The values are not transformed in any way and thus are considered stable
22642        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22643        pub fn as_str_name(&self) -> &'static str {
22644            match self {
22645                Self::UnspecifiedOrOther => "UNSPECIFIED_OR_OTHER",
22646                Self::TouchMoved => "TOUCH_MOVED",
22647                Self::GestureScrollBegin => "GESTURE_SCROLL_BEGIN",
22648                Self::GestureScrollUpdate => "GESTURE_SCROLL_UPDATE",
22649                Self::GestureScrollEnd => "GESTURE_SCROLL_END",
22650                Self::GestureTap => "GESTURE_TAP",
22651                Self::GestureTapCancel => "GESTURE_TAP_CANCEL",
22652            }
22653        }
22654        /// Creates an enum from field names used in the ProtoBuf definition.
22655        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22656            match value {
22657                "UNSPECIFIED_OR_OTHER" => Some(Self::UnspecifiedOrOther),
22658                "TOUCH_MOVED" => Some(Self::TouchMoved),
22659                "GESTURE_SCROLL_BEGIN" => Some(Self::GestureScrollBegin),
22660                "GESTURE_SCROLL_UPDATE" => Some(Self::GestureScrollUpdate),
22661                "GESTURE_SCROLL_END" => Some(Self::GestureScrollEnd),
22662                "GESTURE_TAP" => Some(Self::GestureTap),
22663                "GESTURE_TAP_CANCEL" => Some(Self::GestureTapCancel),
22664                _ => None,
22665            }
22666        }
22667    }
22668}
22669/// Details about a legacy Chrome IPC message that is either sent by the event.
22670/// TODO(eseckler): Also use this message on the receiving side?
22671#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22672pub struct ChromeLegacyIpc {
22673    /// Corresponds to the message class type defined in Chrome's IPCMessageStart
22674    /// enum, e.g. FrameMsgStart,
22675    #[prost(enumeration = "chrome_legacy_ipc::MessageClass", optional, tag = "1")]
22676    pub message_class: ::core::option::Option<i32>,
22677    /// Line number of the message definition. See Chrome's IPC_MESSAGE_ID and
22678    /// IPC_MESSAGE_START macros.
22679    #[prost(uint32, optional, tag = "2")]
22680    pub message_line: ::core::option::Option<u32>,
22681}
22682/// Nested message and enum types in `ChromeLegacyIpc`.
22683pub mod chrome_legacy_ipc {
22684    #[derive(
22685        Clone,
22686        Copy,
22687        Debug,
22688        PartialEq,
22689        Eq,
22690        Hash,
22691        PartialOrd,
22692        Ord,
22693        ::prost::Enumeration
22694    )]
22695    #[repr(i32)]
22696    pub enum MessageClass {
22697        ClassUnspecified = 0,
22698        ClassAutomation = 1,
22699        ClassFrame = 2,
22700        ClassPage = 3,
22701        ClassView = 4,
22702        ClassWidget = 5,
22703        ClassInput = 6,
22704        ClassTest = 7,
22705        ClassWorker = 8,
22706        ClassNacl = 9,
22707        ClassGpuChannel = 10,
22708        ClassMedia = 11,
22709        ClassPpapi = 12,
22710        ClassChrome = 13,
22711        ClassDrag = 14,
22712        ClassPrint = 15,
22713        ClassExtension = 16,
22714        ClassTextInputClient = 17,
22715        ClassBlinkTest = 18,
22716        ClassAccessibility = 19,
22717        ClassPrerender = 20,
22718        ClassChromoting = 21,
22719        ClassBrowserPlugin = 22,
22720        ClassAndroidWebView = 23,
22721        ClassNaclHost = 24,
22722        ClassEncryptedMedia = 25,
22723        ClassCast = 26,
22724        ClassGinJavaBridge = 27,
22725        ClassChromeUtilityPrinting = 28,
22726        ClassOzoneGpu = 29,
22727        ClassWebTest = 30,
22728        ClassNetworkHints = 31,
22729        ClassExtensionsGuestView = 32,
22730        ClassGuestView = 33,
22731        ClassMediaPlayerDelegate = 34,
22732        ClassExtensionWorker = 35,
22733        ClassSubresourceFilter = 36,
22734        ClassUnfreezableFrame = 37,
22735    }
22736    impl MessageClass {
22737        /// String value of the enum field names used in the ProtoBuf definition.
22738        ///
22739        /// The values are not transformed in any way and thus are considered stable
22740        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22741        pub fn as_str_name(&self) -> &'static str {
22742            match self {
22743                Self::ClassUnspecified => "CLASS_UNSPECIFIED",
22744                Self::ClassAutomation => "CLASS_AUTOMATION",
22745                Self::ClassFrame => "CLASS_FRAME",
22746                Self::ClassPage => "CLASS_PAGE",
22747                Self::ClassView => "CLASS_VIEW",
22748                Self::ClassWidget => "CLASS_WIDGET",
22749                Self::ClassInput => "CLASS_INPUT",
22750                Self::ClassTest => "CLASS_TEST",
22751                Self::ClassWorker => "CLASS_WORKER",
22752                Self::ClassNacl => "CLASS_NACL",
22753                Self::ClassGpuChannel => "CLASS_GPU_CHANNEL",
22754                Self::ClassMedia => "CLASS_MEDIA",
22755                Self::ClassPpapi => "CLASS_PPAPI",
22756                Self::ClassChrome => "CLASS_CHROME",
22757                Self::ClassDrag => "CLASS_DRAG",
22758                Self::ClassPrint => "CLASS_PRINT",
22759                Self::ClassExtension => "CLASS_EXTENSION",
22760                Self::ClassTextInputClient => "CLASS_TEXT_INPUT_CLIENT",
22761                Self::ClassBlinkTest => "CLASS_BLINK_TEST",
22762                Self::ClassAccessibility => "CLASS_ACCESSIBILITY",
22763                Self::ClassPrerender => "CLASS_PRERENDER",
22764                Self::ClassChromoting => "CLASS_CHROMOTING",
22765                Self::ClassBrowserPlugin => "CLASS_BROWSER_PLUGIN",
22766                Self::ClassAndroidWebView => "CLASS_ANDROID_WEB_VIEW",
22767                Self::ClassNaclHost => "CLASS_NACL_HOST",
22768                Self::ClassEncryptedMedia => "CLASS_ENCRYPTED_MEDIA",
22769                Self::ClassCast => "CLASS_CAST",
22770                Self::ClassGinJavaBridge => "CLASS_GIN_JAVA_BRIDGE",
22771                Self::ClassChromeUtilityPrinting => "CLASS_CHROME_UTILITY_PRINTING",
22772                Self::ClassOzoneGpu => "CLASS_OZONE_GPU",
22773                Self::ClassWebTest => "CLASS_WEB_TEST",
22774                Self::ClassNetworkHints => "CLASS_NETWORK_HINTS",
22775                Self::ClassExtensionsGuestView => "CLASS_EXTENSIONS_GUEST_VIEW",
22776                Self::ClassGuestView => "CLASS_GUEST_VIEW",
22777                Self::ClassMediaPlayerDelegate => "CLASS_MEDIA_PLAYER_DELEGATE",
22778                Self::ClassExtensionWorker => "CLASS_EXTENSION_WORKER",
22779                Self::ClassSubresourceFilter => "CLASS_SUBRESOURCE_FILTER",
22780                Self::ClassUnfreezableFrame => "CLASS_UNFREEZABLE_FRAME",
22781            }
22782        }
22783        /// Creates an enum from field names used in the ProtoBuf definition.
22784        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22785            match value {
22786                "CLASS_UNSPECIFIED" => Some(Self::ClassUnspecified),
22787                "CLASS_AUTOMATION" => Some(Self::ClassAutomation),
22788                "CLASS_FRAME" => Some(Self::ClassFrame),
22789                "CLASS_PAGE" => Some(Self::ClassPage),
22790                "CLASS_VIEW" => Some(Self::ClassView),
22791                "CLASS_WIDGET" => Some(Self::ClassWidget),
22792                "CLASS_INPUT" => Some(Self::ClassInput),
22793                "CLASS_TEST" => Some(Self::ClassTest),
22794                "CLASS_WORKER" => Some(Self::ClassWorker),
22795                "CLASS_NACL" => Some(Self::ClassNacl),
22796                "CLASS_GPU_CHANNEL" => Some(Self::ClassGpuChannel),
22797                "CLASS_MEDIA" => Some(Self::ClassMedia),
22798                "CLASS_PPAPI" => Some(Self::ClassPpapi),
22799                "CLASS_CHROME" => Some(Self::ClassChrome),
22800                "CLASS_DRAG" => Some(Self::ClassDrag),
22801                "CLASS_PRINT" => Some(Self::ClassPrint),
22802                "CLASS_EXTENSION" => Some(Self::ClassExtension),
22803                "CLASS_TEXT_INPUT_CLIENT" => Some(Self::ClassTextInputClient),
22804                "CLASS_BLINK_TEST" => Some(Self::ClassBlinkTest),
22805                "CLASS_ACCESSIBILITY" => Some(Self::ClassAccessibility),
22806                "CLASS_PRERENDER" => Some(Self::ClassPrerender),
22807                "CLASS_CHROMOTING" => Some(Self::ClassChromoting),
22808                "CLASS_BROWSER_PLUGIN" => Some(Self::ClassBrowserPlugin),
22809                "CLASS_ANDROID_WEB_VIEW" => Some(Self::ClassAndroidWebView),
22810                "CLASS_NACL_HOST" => Some(Self::ClassNaclHost),
22811                "CLASS_ENCRYPTED_MEDIA" => Some(Self::ClassEncryptedMedia),
22812                "CLASS_CAST" => Some(Self::ClassCast),
22813                "CLASS_GIN_JAVA_BRIDGE" => Some(Self::ClassGinJavaBridge),
22814                "CLASS_CHROME_UTILITY_PRINTING" => Some(Self::ClassChromeUtilityPrinting),
22815                "CLASS_OZONE_GPU" => Some(Self::ClassOzoneGpu),
22816                "CLASS_WEB_TEST" => Some(Self::ClassWebTest),
22817                "CLASS_NETWORK_HINTS" => Some(Self::ClassNetworkHints),
22818                "CLASS_EXTENSIONS_GUEST_VIEW" => Some(Self::ClassExtensionsGuestView),
22819                "CLASS_GUEST_VIEW" => Some(Self::ClassGuestView),
22820                "CLASS_MEDIA_PLAYER_DELEGATE" => Some(Self::ClassMediaPlayerDelegate),
22821                "CLASS_EXTENSION_WORKER" => Some(Self::ClassExtensionWorker),
22822                "CLASS_SUBRESOURCE_FILTER" => Some(Self::ClassSubresourceFilter),
22823                "CLASS_UNFREEZABLE_FRAME" => Some(Self::ClassUnfreezableFrame),
22824                _ => None,
22825            }
22826        }
22827    }
22828}
22829/// Details about Chrome message pump events
22830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22831pub struct ChromeMessagePump {
22832    /// True if there are sent messages in the queue.
22833    #[prost(bool, optional, tag = "1")]
22834    pub sent_messages_in_queue: ::core::option::Option<bool>,
22835    /// Interned SourceLocation of IO handler that MessagePumpForIO is about to
22836    /// invoke.
22837    #[prost(uint64, optional, tag = "2")]
22838    pub io_handler_location_iid: ::core::option::Option<u64>,
22839}
22840/// Contains information to identify mojo handling events. The trace events in
22841/// mojo are common for all mojo interfaces and this information is used to
22842/// identify who is the caller or callee.
22843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22844pub struct ChromeMojoEventInfo {
22845    /// Contains the interface name or the file name of the creator of a mojo
22846    /// handle watcher, recorded when an event if notified to the watcher. The code
22847    /// that runs within the track event belongs to the interface.
22848    #[prost(string, optional, tag = "1")]
22849    pub watcher_notify_interface_tag: ::core::option::Option<
22850        ::prost::alloc::string::String,
22851    >,
22852    /// The hash of the IPC message that is being handled.
22853    #[prost(uint32, optional, tag = "2")]
22854    pub ipc_hash: ::core::option::Option<u32>,
22855    /// A static string representing the mojo interface name of the message that is
22856    /// being handled.
22857    #[prost(string, optional, tag = "3")]
22858    pub mojo_interface_tag: ::core::option::Option<::prost::alloc::string::String>,
22859    /// Refers to an interned UnsymbolizedSourceLocation.
22860    /// The UnsymbolizedSourceLocation contains the interface method that's being
22861    /// handled, represented as a native symbol.
22862    /// The native symbol can be symbolized after the trace is recorded.
22863    /// Not using a symbolized source location for official Chromium builds to
22864    /// reduce binary size - emitting file/function names as strings into the
22865    /// trace requires storing them in the binary, which causes a significant
22866    /// binary size bloat for Chromium.
22867    #[prost(uint64, optional, tag = "4")]
22868    pub mojo_interface_method_iid: ::core::option::Option<u64>,
22869    /// Indicate whether this is a message or reply.
22870    #[prost(bool, optional, tag = "5")]
22871    pub is_reply: ::core::option::Option<bool>,
22872    /// The payload size of the message being sent through mojo messages.
22873    #[prost(uint64, optional, tag = "6")]
22874    pub payload_size: ::core::option::Option<u64>,
22875    /// Represents the size of the message. Includes all headers and user payload.
22876    #[prost(uint64, optional, tag = "7")]
22877    pub data_num_bytes: ::core::option::Option<u64>,
22878}
22879/// Describes the state of the RendererScheduler for a given Renderer Process.
22880#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22881pub struct ChromeRendererSchedulerState {
22882    #[prost(enumeration = "ChromeRailMode", optional, tag = "1")]
22883    pub rail_mode: ::core::option::Option<i32>,
22884    #[prost(bool, optional, tag = "2")]
22885    pub is_backgrounded: ::core::option::Option<bool>,
22886    #[prost(bool, optional, tag = "3")]
22887    pub is_hidden: ::core::option::Option<bool>,
22888}
22889/// Details about a UI interaction initiated by the user, such as opening or
22890/// closing a tab or a context menu.
22891#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22892pub struct ChromeUserEvent {
22893    /// Name of the action, e.g. "NewTab", "ShowBookmarkManager", etc. (in
22894    /// Chrome, these are usually static strings known at compile time, or
22895    /// concatenations of multiple such static strings).
22896    #[prost(string, optional, tag = "1")]
22897    pub action: ::core::option::Option<::prost::alloc::string::String>,
22898    /// MD5 hash of the action string.
22899    #[prost(uint64, optional, tag = "2")]
22900    pub action_hash: ::core::option::Option<u64>,
22901}
22902/// Details about HWNDMessageHandler trace events.
22903#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22904pub struct ChromeWindowHandleEventInfo {
22905    #[prost(uint32, optional, tag = "1")]
22906    pub dpi: ::core::option::Option<u32>,
22907    #[prost(uint32, optional, tag = "2")]
22908    pub message_id: ::core::option::Option<u32>,
22909    #[prost(fixed64, optional, tag = "3")]
22910    pub hwnd_ptr: ::core::option::Option<u64>,
22911}
22912#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22913pub struct Screenshot {
22914    /// The JPEG (Joint Photographic Experts Group) file format.
22915    #[prost(bytes = "vec", optional, tag = "1")]
22916    pub jpg_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22917    /// The PAM (Portable Arbitrary Map) file format.
22918    #[prost(bytes = "vec", optional, tag = "2")]
22919    pub pam_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22920    /// The PPM (Portable Pixmap) file format.
22921    #[prost(bytes = "vec", optional, tag = "3")]
22922    pub ppm_image: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
22923}
22924/// TrackEvent arguments describing the execution of a task.
22925#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22926pub struct TaskExecution {
22927    /// Source location that the task was posted from.
22928    /// interned SourceLocation.
22929    #[prost(uint64, optional, tag = "1")]
22930    pub posted_from_iid: ::core::option::Option<u64>,
22931}
22932/// NOTE: Full TrackEvent support in the client lib and chrome is WIP, thus these
22933/// protos are still subject to change. Don't depend on them staying as they are.
22934///
22935/// Trace events emitted by client instrumentation library (TRACE_EVENT macros),
22936/// which describe activity on a track, such as a thread or asynchronous event
22937/// track. The track is specified using separate TrackDescriptor messages and
22938/// referred to via the track's UUID.
22939///
22940/// A simple TrackEvent packet specifies a timestamp, category, name and type:
22941/// ```protobuf
22942///    trace_packet {
22943///      timestamp: 1000
22944///      track_event {
22945///        categories: \["my_cat"\]
22946///        name: "my_event"
22947///        type: TYPE_INSTANT
22948///       }
22949///     }
22950/// ```
22951///
22952/// To associate an event with a custom track (e.g. a thread), the track is
22953/// defined in a separate packet and referred to from the TrackEvent by its UUID:
22954/// ```protobuf
22955///    trace_packet {
22956///      track_descriptor {
22957///        track_uuid: 1234
22958///        name: "my_track"
22959///
22960///        // Optionally, associate the track with a thread.
22961///        thread_descriptor {
22962///          pid: 10
22963///          tid: 10
22964///          ..
22965///        }
22966///      }
22967///    }
22968/// ```
22969///
22970/// A pair of TYPE_SLICE_BEGIN and _END events form a slice on the track:
22971///
22972/// ```protobuf
22973///    trace_packet {
22974///      timestamp: 1200
22975///      track_event {
22976///        track_uuid: 1234
22977///        categories: \["my_cat"\]
22978///        name: "my_slice"
22979///        type: TYPE_SLICE_BEGIN
22980///      }
22981///    }
22982///    trace_packet {
22983///      timestamp: 1400
22984///      track_event {
22985///        track_uuid: 1234
22986///        type: TYPE_SLICE_END
22987///      }
22988///    }
22989/// ```
22990/// TrackEvents also support optimizations to reduce data repetition and encoded
22991/// data size, e.g. through data interning (names, categories, ...) and delta
22992/// encoding of timestamps/counters. For details, see the InternedData message.
22993/// Further, default values for attributes of events on the same sequence (e.g.
22994/// their default track association) can be emitted as part of a
22995/// TrackEventDefaults message.
22996///
22997/// Next reserved id: 13 (up to 15). Next id: 58.
22998#[derive(Clone, PartialEq, ::prost::Message)]
22999pub struct TrackEvent {
23000    /// Names of categories of the event. In the client library, categories are a
23001    /// way to turn groups of individual events on or off.
23002    /// interned EventCategoryName.
23003    #[prost(uint64, repeated, packed = "false", tag = "3")]
23004    pub category_iids: ::prost::alloc::vec::Vec<u64>,
23005    /// non-interned variant.
23006    #[prost(string, repeated, tag = "22")]
23007    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23008    #[prost(enumeration = "track_event::Type", optional, tag = "9")]
23009    pub r#type: ::core::option::Option<i32>,
23010    /// Identifies the track of the event. The default value may be overridden
23011    /// using TrackEventDefaults, e.g., to specify the track of the TraceWriter's
23012    /// sequence (in most cases sequence = one thread). If no value is specified
23013    /// here or in TrackEventDefaults, the TrackEvent will be associated with an
23014    /// implicit trace-global track (uuid 0). See TrackDescriptor::uuid.
23015    #[prost(uint64, optional, tag = "11")]
23016    pub track_uuid: ::core::option::Option<u64>,
23017    /// To encode counter values more efficiently, we support attaching additional
23018    /// counter values to a TrackEvent of any type. All values will share the same
23019    /// timestamp specified in the TracePacket. The value at
23020    /// extra_counter_values\[N\] is for the counter track referenced by
23021    /// extra_counter_track_uuids\[N\].
23022    ///
23023    /// |extra_counter_track_uuids| may also be set via TrackEventDefaults. There
23024    /// should always be equal or more uuids than values. It is valid to set more
23025    /// uuids (e.g. via defaults) than values. If uuids are specified in
23026    /// TrackEventDefaults and a TrackEvent, the TrackEvent uuids override the
23027    /// default uuid list.
23028    ///
23029    /// For example, this allows snapshotting the thread time clock at each
23030    /// thread-track BEGIN and END event to capture the cpu time delta of a slice.
23031    #[prost(uint64, repeated, packed = "false", tag = "31")]
23032    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
23033    #[prost(int64, repeated, packed = "false", tag = "12")]
23034    pub extra_counter_values: ::prost::alloc::vec::Vec<i64>,
23035    /// Counter snapshots using floating point instead of integer values.
23036    #[prost(uint64, repeated, packed = "false", tag = "45")]
23037    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
23038    #[prost(double, repeated, packed = "false", tag = "46")]
23039    pub extra_double_counter_values: ::prost::alloc::vec::Vec<f64>,
23040    /// IDs of flows originating, passing through, or ending at this event.
23041    /// Flow IDs are global within a trace.
23042    ///
23043    /// A flow connects a sequence of TrackEvents within or across tracks, e.g.
23044    /// an input event may be handled on one thread but cause another event on
23045    /// a different thread - a flow between the two events can associate them.
23046    ///
23047    /// The direction of the flows between events is inferred from the events'
23048    /// timestamps. The earliest event with the same flow ID becomes the source
23049    /// of the flow. Any events thereafter are intermediate steps of the flow,
23050    /// until the flow terminates at the last event with the flow ID.
23051    ///
23052    /// Flows can also be explicitly terminated (see |terminating_flow_ids|), so
23053    /// that the same ID can later be reused for another flow.
23054    /// DEPRECATED. Only kept for backwards compatibility. Use |flow_ids|.
23055    #[deprecated]
23056    #[prost(uint64, repeated, packed = "false", tag = "36")]
23057    pub flow_ids_old: ::prost::alloc::vec::Vec<u64>,
23058    /// TODO(b/204341740): replace "flow_ids_old" with "flow_ids" to reduce memory
23059    /// consumption.
23060    #[prost(fixed64, repeated, packed = "false", tag = "47")]
23061    pub flow_ids: ::prost::alloc::vec::Vec<u64>,
23062    /// List of flow ids which should terminate on this event, otherwise same as
23063    /// |flow_ids|.
23064    /// Any one flow ID should be either listed as part of |flow_ids| OR
23065    /// |terminating_flow_ids|, not both.
23066    /// DEPRECATED. Only kept for backwards compatibility.  Use
23067    /// |terminating_flow_ids|.
23068    #[deprecated]
23069    #[prost(uint64, repeated, packed = "false", tag = "42")]
23070    pub terminating_flow_ids_old: ::prost::alloc::vec::Vec<u64>,
23071    /// TODO(b/204341740): replace "terminating_flow_ids_old" with
23072    /// "terminating_flow_ids" to reduce memory consumption.
23073    #[prost(fixed64, repeated, packed = "false", tag = "48")]
23074    pub terminating_flow_ids: ::prost::alloc::vec::Vec<u64>,
23075    /// An optional additive value attributed to this callstack occurrence. When
23076    /// present, weighted callstack aggregations only include occurrences which
23077    /// have this field set; they do not mix weighted and unweighted samples.
23078    /// Consumers can use sample count as a separate fallback measure when no
23079    /// weighted occurrences are available.
23080    #[prost(double, optional, tag = "57")]
23081    pub callstack_weight: ::core::option::Option<f64>,
23082    /// Debug annotations associated with this event. These are arbitrary key-value
23083    /// pairs that can be used to attach additional information to the event.
23084    /// See DebugAnnotation message for details on supported value types.
23085    ///
23086    /// For example, debug annotations can be used to attach a URL or resource
23087    /// identifier to a network request event. Arrays, dictionaries and full
23088    /// nested structures (e.g. arrays of dictionaries of dictionaries)
23089    /// are supported.
23090    #[prost(message, repeated, tag = "4")]
23091    pub debug_annotations: ::prost::alloc::vec::Vec<DebugAnnotation>,
23092    /// Typed event arguments:
23093    #[prost(message, optional, tag = "5")]
23094    pub task_execution: ::core::option::Option<TaskExecution>,
23095    #[prost(message, optional, tag = "21")]
23096    pub log_message: ::core::option::Option<LogMessage>,
23097    #[prost(message, optional, tag = "24")]
23098    pub cc_scheduler_state: ::core::option::Option<ChromeCompositorSchedulerState>,
23099    #[prost(message, optional, tag = "25")]
23100    pub chrome_user_event: ::core::option::Option<ChromeUserEvent>,
23101    #[prost(message, optional, tag = "26")]
23102    pub chrome_keyed_service: ::core::option::Option<ChromeKeyedService>,
23103    #[prost(message, optional, tag = "27")]
23104    pub chrome_legacy_ipc: ::core::option::Option<ChromeLegacyIpc>,
23105    #[prost(message, optional, tag = "28")]
23106    pub chrome_histogram_sample: ::core::option::Option<ChromeHistogramSample>,
23107    #[prost(message, optional, tag = "29")]
23108    pub chrome_latency_info: ::core::option::Option<ChromeLatencyInfo>,
23109    /// DEPRECATED. Only kept for backwards compatibility. Use the
23110    /// |ChromeTrackEvent.frame_reporter| extension in
23111    /// <https://source.chromium.org/chromium/chromium/src/+/main:base/tracing/protos/chrome_track_event.proto>
23112    /// instead.
23113    #[deprecated]
23114    #[prost(message, optional, tag = "32")]
23115    pub chrome_frame_reporter: ::core::option::Option<ChromeFrameReporter>,
23116    #[prost(message, optional, tag = "39")]
23117    pub chrome_application_state_info: ::core::option::Option<
23118        ChromeApplicationStateInfo,
23119    >,
23120    #[prost(message, optional, tag = "40")]
23121    pub chrome_renderer_scheduler_state: ::core::option::Option<
23122        ChromeRendererSchedulerState,
23123    >,
23124    #[prost(message, optional, tag = "41")]
23125    pub chrome_window_handle_event_info: ::core::option::Option<
23126        ChromeWindowHandleEventInfo,
23127    >,
23128    #[prost(message, optional, tag = "43")]
23129    pub chrome_content_settings_event_info: ::core::option::Option<
23130        ChromeContentSettingsEventInfo,
23131    >,
23132    #[prost(message, optional, tag = "49")]
23133    pub chrome_active_processes: ::core::option::Option<ChromeActiveProcesses>,
23134    #[prost(message, optional, tag = "50")]
23135    pub screenshot: ::core::option::Option<Screenshot>,
23136    #[prost(message, optional, tag = "35")]
23137    pub chrome_message_pump: ::core::option::Option<ChromeMessagePump>,
23138    #[prost(message, optional, tag = "38")]
23139    pub chrome_mojo_event_info: ::core::option::Option<ChromeMojoEventInfo>,
23140    #[prost(message, optional, tag = "6")]
23141    pub legacy_event: ::core::option::Option<track_event::LegacyEvent>,
23142    /// Optional name of the event for its display in trace viewer. May be left
23143    /// unspecified for events with typed arguments.
23144    ///
23145    /// Note that metrics should not rely on event names, as they are prone to
23146    /// changing. Instead, they should use typed arguments to identify the events
23147    /// they are interested in.
23148    #[prost(oneof = "track_event::NameField", tags = "10, 23")]
23149    pub name_field: ::core::option::Option<track_event::NameField>,
23150    /// A new value for a counter track. |track_uuid| should refer to a track with
23151    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
23152    /// efficient encoding of counter values that are sampled at the beginning/end
23153    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
23154    /// Counter values can optionally be encoded in as delta values (positive or
23155    /// negative) on each packet sequence (see CounterIncrementalBase).
23156    #[prost(oneof = "track_event::CounterValueField", tags = "30, 44")]
23157    pub counter_value_field: ::core::option::Option<track_event::CounterValueField>,
23158    /// An opaque identifier to correlate this slice with other slices that are
23159    /// considered part of the same logical operation, even if they are not
23160    /// causally connected. Examples uses of a correlation id might be the number
23161    /// of frame going through various stages of rendering in a GPU, the id for an
23162    /// RPC request going through a distributed system, or the id of a network
23163    /// request going through various stages of processing by the kernel.
23164    ///
23165    /// NOTE: if the events *are* causually connected, you probably want to use
23166    /// flows instead of OR in addition to correlation ids.
23167    ///
23168    /// UIs can use this identifier to visually link these slices, for instance,
23169    /// by assigning them a consistent color or highlighting the entire correlated
23170    /// set when one slice is hovered.
23171    ///
23172    /// Only one field within this 'oneof' should be set to define the correlation.
23173    #[prost(oneof = "track_event::CorrelationIdField", tags = "52, 53, 54")]
23174    pub correlation_id_field: ::core::option::Option<track_event::CorrelationIdField>,
23175    /// Callstack associated with this event. This captures the program stack at
23176    /// the time the event occurred, useful for understanding what code path led
23177    /// to the event.
23178    ///
23179    /// Two variants are supported:
23180    /// - callstack: Inline callstack data (simpler when trace size is not a
23181    ///    concern or callstacks are unique)
23182    /// - callstack_iid: Reference to an interned Callstack in InternedData
23183    ///    (efficient for repeated callstacks)
23184    ///
23185    /// Only one of these fields should be set.
23186    #[prost(oneof = "track_event::CallstackField", tags = "55, 56")]
23187    pub callstack_field: ::core::option::Option<track_event::CallstackField>,
23188    /// This field is used only if the source location represents the function that
23189    /// executes during this event.
23190    #[prost(oneof = "track_event::SourceLocationField", tags = "33, 34")]
23191    pub source_location_field: ::core::option::Option<track_event::SourceLocationField>,
23192    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
23193    /// TracePacket instead.
23194    ///
23195    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
23196    #[prost(oneof = "track_event::Timestamp", tags = "1, 16")]
23197    pub timestamp: ::core::option::Option<track_event::Timestamp>,
23198    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
23199    /// encode thread time instead.
23200    ///
23201    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
23202    /// microseconds.
23203    #[prost(oneof = "track_event::ThreadTime", tags = "2, 17")]
23204    pub thread_time: ::core::option::Option<track_event::ThreadTime>,
23205    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
23206    /// encode thread instruction count instead.
23207    ///
23208    /// Value of the instruction counter for the current thread.
23209    #[prost(oneof = "track_event::ThreadInstructionCount", tags = "8, 20")]
23210    pub thread_instruction_count: ::core::option::Option<
23211        track_event::ThreadInstructionCount,
23212    >,
23213}
23214/// Nested message and enum types in `TrackEvent`.
23215pub mod track_event {
23216    /// Inline callstack for TrackEvents when interning is not needed.
23217    /// This is a simplified version of the profiling Callstack/Frame messages,
23218    /// designed for cases where trace size is not critical or callstacks are
23219    /// unique.
23220    ///
23221    /// Use this for simple callstacks with function names and source locations.
23222    /// For binary/library information (mappings, build IDs, relative PCs), use
23223    /// interned callstacks via callstack_iid instead.
23224    #[derive(Clone, PartialEq, ::prost::Message)]
23225    pub struct InlineCallstack {
23226        /// Frames of this callstack, ordered from bottom (outermost) to top
23227        /// (innermost). For example, if main() calls foo() which calls bar(), the
23228        /// frames would be: \[main, foo, bar\]
23229        #[prost(message, repeated, tag = "1")]
23230        pub frames: ::prost::alloc::vec::Vec<inline_callstack::Frame>,
23231    }
23232    /// Nested message and enum types in `InlineCallstack`.
23233    pub mod inline_callstack {
23234        /// Frame within an inline callstack.
23235        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23236        pub struct Frame {
23237            /// Function name, e.g., "malloc" or "std::vector<int>::push_back"
23238            #[prost(string, optional, tag = "1")]
23239            pub function_name: ::core::option::Option<::prost::alloc::string::String>,
23240            /// Optional: Source file path, e.g., "/src/foo.cc"
23241            #[prost(string, optional, tag = "2")]
23242            pub source_file: ::core::option::Option<::prost::alloc::string::String>,
23243            /// Optional: Line number in the source file
23244            #[prost(uint32, optional, tag = "3")]
23245            pub line_number: ::core::option::Option<u32>,
23246        }
23247    }
23248    /// Apart from {category, time, thread time, tid, pid}, other legacy trace
23249    /// event attributes are initially simply proxied for conversion to a JSON
23250    /// trace. We intend to gradually transition these attributes to similar native
23251    /// features in TrackEvent (e.g. async + flow events), or deprecate them
23252    /// without replacement where transition is unsuitable.
23253    ///
23254    /// Next reserved id: 16 (up to 16).
23255    /// Next id: 20.
23256    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23257    pub struct LegacyEvent {
23258        /// Deprecated, use TrackEvent::name(_iid) instead.
23259        /// interned EventName.
23260        #[prost(uint64, optional, tag = "1")]
23261        pub name_iid: ::core::option::Option<u64>,
23262        #[prost(int32, optional, tag = "2")]
23263        pub phase: ::core::option::Option<i32>,
23264        #[prost(int64, optional, tag = "3")]
23265        pub duration_us: ::core::option::Option<i64>,
23266        #[prost(int64, optional, tag = "4")]
23267        pub thread_duration_us: ::core::option::Option<i64>,
23268        /// Elapsed retired instruction count during the event.
23269        #[prost(int64, optional, tag = "15")]
23270        pub thread_instruction_delta: ::core::option::Option<i64>,
23271        /// Additional optional scope for |id|.
23272        #[prost(string, optional, tag = "7")]
23273        pub id_scope: ::core::option::Option<::prost::alloc::string::String>,
23274        /// Consider the thread timestamps for async BEGIN/END event pairs as valid.
23275        #[prost(bool, optional, tag = "9")]
23276        pub use_async_tts: ::core::option::Option<bool>,
23277        /// Idenfifies a flow. Flow events with the same bind_id are connected.
23278        #[prost(uint64, optional, tag = "8")]
23279        pub bind_id: ::core::option::Option<u64>,
23280        /// Use the enclosing slice as binding point for a flow end event instead of
23281        /// the next slice. Flow start/step events always bind to the enclosing
23282        /// slice.
23283        #[prost(bool, optional, tag = "12")]
23284        pub bind_to_enclosing: ::core::option::Option<bool>,
23285        #[prost(enumeration = "legacy_event::FlowDirection", optional, tag = "13")]
23286        pub flow_direction: ::core::option::Option<i32>,
23287        #[prost(enumeration = "legacy_event::InstantEventScope", optional, tag = "14")]
23288        pub instant_event_scope: ::core::option::Option<i32>,
23289        /// Override the pid/tid if the writer needs to emit events on behalf of
23290        /// another process/thread. This should be the exception. Normally, the
23291        /// pid+tid from ThreadDescriptor is used.
23292        #[prost(int32, optional, tag = "18")]
23293        pub pid_override: ::core::option::Option<i32>,
23294        #[prost(int32, optional, tag = "19")]
23295        pub tid_override: ::core::option::Option<i32>,
23296        #[prost(oneof = "legacy_event::Id", tags = "6, 10, 11")]
23297        pub id: ::core::option::Option<legacy_event::Id>,
23298    }
23299    /// Nested message and enum types in `LegacyEvent`.
23300    pub mod legacy_event {
23301        #[derive(
23302            Clone,
23303            Copy,
23304            Debug,
23305            PartialEq,
23306            Eq,
23307            Hash,
23308            PartialOrd,
23309            Ord,
23310            ::prost::Enumeration
23311        )]
23312        #[repr(i32)]
23313        pub enum FlowDirection {
23314            FlowUnspecified = 0,
23315            FlowIn = 1,
23316            FlowOut = 2,
23317            FlowInout = 3,
23318        }
23319        impl FlowDirection {
23320            /// String value of the enum field names used in the ProtoBuf definition.
23321            ///
23322            /// The values are not transformed in any way and thus are considered stable
23323            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23324            pub fn as_str_name(&self) -> &'static str {
23325                match self {
23326                    Self::FlowUnspecified => "FLOW_UNSPECIFIED",
23327                    Self::FlowIn => "FLOW_IN",
23328                    Self::FlowOut => "FLOW_OUT",
23329                    Self::FlowInout => "FLOW_INOUT",
23330                }
23331            }
23332            /// Creates an enum from field names used in the ProtoBuf definition.
23333            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23334                match value {
23335                    "FLOW_UNSPECIFIED" => Some(Self::FlowUnspecified),
23336                    "FLOW_IN" => Some(Self::FlowIn),
23337                    "FLOW_OUT" => Some(Self::FlowOut),
23338                    "FLOW_INOUT" => Some(Self::FlowInout),
23339                    _ => None,
23340                }
23341            }
23342        }
23343        #[derive(
23344            Clone,
23345            Copy,
23346            Debug,
23347            PartialEq,
23348            Eq,
23349            Hash,
23350            PartialOrd,
23351            Ord,
23352            ::prost::Enumeration
23353        )]
23354        #[repr(i32)]
23355        pub enum InstantEventScope {
23356            ScopeUnspecified = 0,
23357            ScopeGlobal = 1,
23358            ScopeProcess = 2,
23359            ScopeThread = 3,
23360        }
23361        impl InstantEventScope {
23362            /// String value of the enum field names used in the ProtoBuf definition.
23363            ///
23364            /// The values are not transformed in any way and thus are considered stable
23365            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23366            pub fn as_str_name(&self) -> &'static str {
23367                match self {
23368                    Self::ScopeUnspecified => "SCOPE_UNSPECIFIED",
23369                    Self::ScopeGlobal => "SCOPE_GLOBAL",
23370                    Self::ScopeProcess => "SCOPE_PROCESS",
23371                    Self::ScopeThread => "SCOPE_THREAD",
23372                }
23373            }
23374            /// Creates an enum from field names used in the ProtoBuf definition.
23375            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23376                match value {
23377                    "SCOPE_UNSPECIFIED" => Some(Self::ScopeUnspecified),
23378                    "SCOPE_GLOBAL" => Some(Self::ScopeGlobal),
23379                    "SCOPE_PROCESS" => Some(Self::ScopeProcess),
23380                    "SCOPE_THREAD" => Some(Self::ScopeThread),
23381                    _ => None,
23382                }
23383            }
23384        }
23385        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
23386        pub enum Id {
23387            #[prost(uint64, tag = "6")]
23388            UnscopedId(u64),
23389            #[prost(uint64, tag = "10")]
23390            LocalId(u64),
23391            #[prost(uint64, tag = "11")]
23392            GlobalId(u64),
23393        }
23394    }
23395    /// Type of the TrackEvent (required if |phase| in LegacyEvent is not set).
23396    #[derive(
23397        Clone,
23398        Copy,
23399        Debug,
23400        PartialEq,
23401        Eq,
23402        Hash,
23403        PartialOrd,
23404        Ord,
23405        ::prost::Enumeration
23406    )]
23407    #[repr(i32)]
23408    pub enum Type {
23409        Unspecified = 0,
23410        /// Slice events are events that have a begin and end timestamp, i.e. a
23411        /// duration. They can be nested similar to a callstack: If, on the same
23412        /// track, event B begins after event A, but before A ends, B is a child
23413        /// event of A and will be drawn as a nested event underneath A in the UI.
23414        /// Note that child events should always end before their parents (e.g. B
23415        /// before A).
23416        ///
23417        /// Each slice event is formed by a pair of BEGIN + END events. The END event
23418        /// does not need to repeat any TrackEvent fields it has in common with its
23419        /// corresponding BEGIN event. Arguments and debug annotations of the BEGIN +
23420        /// END pair will be merged during trace import.
23421        ///
23422        /// Note that we deliberately chose not to support COMPLETE events (which
23423        /// would specify a duration directly) since clients would need to delay
23424        /// writing them until the slice is completed, which can result in reordered
23425        /// events in the trace and loss of unfinished events at the end of a trace.
23426        SliceBegin = 1,
23427        SliceEnd = 2,
23428        /// Instant events are nestable events without duration. They can be children
23429        /// of slice events on the same track.
23430        Instant = 3,
23431        /// Event that provides a value for a counter track. |track_uuid| should
23432        /// refer to a counter track and |counter_value| set to the new value. Note
23433        /// that most other TrackEvent fields (e.g. categories, name, ..) are not
23434        /// supported for TYPE_COUNTER events. See also CounterDescriptor.
23435        Counter = 4,
23436        /// Event that provides a state value update for a state track. Think of this
23437        /// as a symbolic counter (a TYPE_COUNTER with literals rather then numbers).
23438        /// |track_uuid| should refer to a state track, and the state value update is
23439        /// carried in the |state| field. An empty or unset state field indicates "no
23440        /// state" / "idle". For more details, see
23441        /// [RFC-0023](<https://github.com/google/perfetto/discussions/5549>).
23442        State = 5,
23443    }
23444    impl Type {
23445        /// String value of the enum field names used in the ProtoBuf definition.
23446        ///
23447        /// The values are not transformed in any way and thus are considered stable
23448        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23449        pub fn as_str_name(&self) -> &'static str {
23450            match self {
23451                Self::Unspecified => "TYPE_UNSPECIFIED",
23452                Self::SliceBegin => "TYPE_SLICE_BEGIN",
23453                Self::SliceEnd => "TYPE_SLICE_END",
23454                Self::Instant => "TYPE_INSTANT",
23455                Self::Counter => "TYPE_COUNTER",
23456                Self::State => "TYPE_STATE",
23457            }
23458        }
23459        /// Creates an enum from field names used in the ProtoBuf definition.
23460        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23461            match value {
23462                "TYPE_UNSPECIFIED" => Some(Self::Unspecified),
23463                "TYPE_SLICE_BEGIN" => Some(Self::SliceBegin),
23464                "TYPE_SLICE_END" => Some(Self::SliceEnd),
23465                "TYPE_INSTANT" => Some(Self::Instant),
23466                "TYPE_COUNTER" => Some(Self::Counter),
23467                "TYPE_STATE" => Some(Self::State),
23468                _ => None,
23469            }
23470        }
23471    }
23472    /// Optional name of the event for its display in trace viewer. May be left
23473    /// unspecified for events with typed arguments.
23474    ///
23475    /// Note that metrics should not rely on event names, as they are prone to
23476    /// changing. Instead, they should use typed arguments to identify the events
23477    /// they are interested in.
23478    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23479    pub enum NameField {
23480        /// interned EventName.
23481        #[prost(uint64, tag = "10")]
23482        NameIid(u64),
23483        /// non-interned variant.
23484        #[prost(string, tag = "23")]
23485        Name(::prost::alloc::string::String),
23486    }
23487    /// A new value for a counter track. |track_uuid| should refer to a track with
23488    /// a CounterDescriptor, and |type| should be TYPE_COUNTER. For a more
23489    /// efficient encoding of counter values that are sampled at the beginning/end
23490    /// of a slice, see |extra_counter_values| and |extra_counter_track_uuids|.
23491    /// Counter values can optionally be encoded in as delta values (positive or
23492    /// negative) on each packet sequence (see CounterIncrementalBase).
23493    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
23494    pub enum CounterValueField {
23495        #[prost(int64, tag = "30")]
23496        CounterValue(i64),
23497        #[prost(double, tag = "44")]
23498        DoubleCounterValue(f64),
23499    }
23500    /// An opaque identifier to correlate this slice with other slices that are
23501    /// considered part of the same logical operation, even if they are not
23502    /// causally connected. Examples uses of a correlation id might be the number
23503    /// of frame going through various stages of rendering in a GPU, the id for an
23504    /// RPC request going through a distributed system, or the id of a network
23505    /// request going through various stages of processing by the kernel.
23506    ///
23507    /// NOTE: if the events *are* causually connected, you probably want to use
23508    /// flows instead of OR in addition to correlation ids.
23509    ///
23510    /// UIs can use this identifier to visually link these slices, for instance,
23511    /// by assigning them a consistent color or highlighting the entire correlated
23512    /// set when one slice is hovered.
23513    ///
23514    /// Only one field within this 'oneof' should be set to define the correlation.
23515    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23516    pub enum CorrelationIdField {
23517        /// A 64-bit unsigned integer used as the correlation ID.
23518        ///
23519        /// Best for performance and compact traces if the identifier is naturally
23520        /// numerical or can be easily mapped to one by the trace producer.
23521        #[prost(uint64, tag = "52")]
23522        CorrelationId(u64),
23523        /// A string value used as the correlation ID.
23524        ///
23525        /// Offers maximum flexibility for human-readable or complex identifiers
23526        /// (e.g., GUIDs). Note: Using many unique, long strings may increase trace
23527        /// size. For frequently repeated string identifiers, consider
23528        /// 'correlation_id_string_iid'.
23529        #[prost(string, tag = "53")]
23530        CorrelationIdStr(::prost::alloc::string::String),
23531        /// An interned string identifier (an IID) for correlation.
23532        ///
23533        /// This 64-bit ID refers to a string defined in the 'correlation_id_str'
23534        /// field within the packet sequence's InternedData. This approach combines
23535        /// the descriptiveness and uniqueness of strings with the efficiency of
23536        /// integer IDs for storage and comparison, especially for identifiers that
23537        /// repeat across many events.
23538        #[prost(uint64, tag = "54")]
23539        CorrelationIdStrIid(u64),
23540    }
23541    /// Callstack associated with this event. This captures the program stack at
23542    /// the time the event occurred, useful for understanding what code path led
23543    /// to the event.
23544    ///
23545    /// Two variants are supported:
23546    /// - callstack: Inline callstack data (simpler when trace size is not a
23547    ///    concern or callstacks are unique)
23548    /// - callstack_iid: Reference to an interned Callstack in InternedData
23549    ///    (efficient for repeated callstacks)
23550    ///
23551    /// Only one of these fields should be set.
23552    #[derive(Clone, PartialEq, ::prost::Oneof)]
23553    pub enum CallstackField {
23554        /// Inline callstack data. Use this for simplicity when interning is not
23555        /// needed (e.g., for unique callstacks or when trace size is not critical).
23556        #[prost(message, tag = "55")]
23557        Callstack(InlineCallstack),
23558        /// Reference to interned Callstack (see InternedData.callstacks).
23559        /// This is the efficient option when callstacks are repeated.
23560        ///
23561        /// Note: iids *always* start from 1. A value of 0 is considered "not set".
23562        #[prost(uint64, tag = "56")]
23563        CallstackIid(u64),
23564    }
23565    /// This field is used only if the source location represents the function that
23566    /// executes during this event.
23567    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
23568    pub enum SourceLocationField {
23569        /// Non-interned field.
23570        #[prost(message, tag = "33")]
23571        SourceLocation(super::SourceLocation),
23572        /// Interned field.
23573        #[prost(uint64, tag = "34")]
23574        SourceLocationIid(u64),
23575    }
23576    /// Deprecated. Use the |timestamp| and |timestamp_clock_id| fields in
23577    /// TracePacket instead.
23578    ///
23579    /// Timestamp in microseconds (usually CLOCK_MONOTONIC).
23580    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
23581    pub enum Timestamp {
23582        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
23583        /// calculate the absolute timestamp value, sum up all delta values of the
23584        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
23585        /// the |reference_timestamp| in ThreadDescriptor. This value should always
23586        /// be positive.
23587        #[prost(int64, tag = "1")]
23588        TimestampDeltaUs(i64),
23589        /// Absolute value (e.g. a manually specified timestamp in the macro).
23590        /// This is a one-off value that does not affect delta timestamp computation
23591        /// in subsequent TrackEvents.
23592        #[prost(int64, tag = "16")]
23593        TimestampAbsoluteUs(i64),
23594    }
23595    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
23596    /// encode thread time instead.
23597    ///
23598    /// CPU time for the current thread (e.g., CLOCK_THREAD_CPUTIME_ID) in
23599    /// microseconds.
23600    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
23601    pub enum ThreadTime {
23602        /// Delta timestamp value since the last TrackEvent or ThreadDescriptor. To
23603        /// calculate the absolute timestamp value, sum up all delta values of the
23604        /// preceding TrackEvents since the last ThreadDescriptor and add the sum to
23605        /// the |reference_timestamp| in ThreadDescriptor. This value should always
23606        /// be positive.
23607        #[prost(int64, tag = "2")]
23608        ThreadTimeDeltaUs(i64),
23609        /// This is a one-off absolute value that does not affect delta timestamp
23610        /// computation in subsequent TrackEvents.
23611        #[prost(int64, tag = "17")]
23612        ThreadTimeAbsoluteUs(i64),
23613    }
23614    /// Deprecated. Use |extra_counter_values| and |extra_counter_track_uuids| to
23615    /// encode thread instruction count instead.
23616    ///
23617    /// Value of the instruction counter for the current thread.
23618    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
23619    pub enum ThreadInstructionCount {
23620        /// Same encoding as |thread_time| field above.
23621        #[prost(int64, tag = "8")]
23622        ThreadInstructionCountDelta(i64),
23623        #[prost(int64, tag = "20")]
23624        ThreadInstructionCountAbsolute(i64),
23625    }
23626}
23627/// Default values for fields of all TrackEvents on the same packet sequence.
23628/// Should be emitted as part of TracePacketDefaults whenever incremental state
23629/// is cleared. It's defined here because field IDs should match those of the
23630/// corresponding fields in TrackEvent.
23631#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23632pub struct TrackEventDefaults {
23633    #[prost(uint64, optional, tag = "11")]
23634    pub track_uuid: ::core::option::Option<u64>,
23635    #[prost(uint64, repeated, packed = "false", tag = "31")]
23636    pub extra_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
23637    #[prost(uint64, repeated, packed = "false", tag = "45")]
23638    pub extra_double_counter_track_uuids: ::prost::alloc::vec::Vec<u64>,
23639}
23640#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23641pub struct EventCategory {
23642    #[prost(uint64, optional, tag = "1")]
23643    pub iid: ::core::option::Option<u64>,
23644    #[prost(string, optional, tag = "2")]
23645    pub name: ::core::option::Option<::prost::alloc::string::String>,
23646}
23647#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23648pub struct EventName {
23649    #[prost(uint64, optional, tag = "1")]
23650    pub iid: ::core::option::Option<u64>,
23651    #[prost(string, optional, tag = "2")]
23652    pub name: ::core::option::Option<::prost::alloc::string::String>,
23653}
23654/// ------------------------------ DATA INTERNING: ------------------------------
23655/// Interning indexes are built up gradually by adding the entries contained in
23656/// each TracePacket of the same packet sequence (packets emitted by the same
23657/// producer and TraceWriter, see |trusted_packet_sequence_id|). Thus, packets
23658/// can only refer to interned data from other packets in the same sequence.
23659///
23660/// The writer will emit new entries when it encounters new internable values
23661/// that aren't yet in the index. Data in current and subsequent TracePackets can
23662/// then refer to the entry by its position (interning ID, abbreviated "iid") in
23663/// its index. An interning ID with value 0 is considered invalid (not set).
23664///
23665/// Because of the incremental build-up, the interning index will miss data when
23666/// TracePackets are lost, e.g. because a chunk was overridden in the central
23667/// ring buffer. To avoid invalidation of the whole trace in such a case, the
23668/// index is periodically reset (see SEQ_INCREMENTAL_STATE_CLEARED).
23669/// When packet loss occurs, the reader will only lose interning data up to the
23670/// next reset.
23671/// -----------------------------------------------------------------------------
23672///
23673/// Message that contains new entries for the interning indices of a packet
23674/// sequence.
23675///
23676/// The writer will usually emit new entries in the same TracePacket that first
23677/// refers to them (since the last reset of interning state). They may also be
23678/// emitted proactively in advance of referring to them in later packets.
23679///
23680/// Each field's message type needs to specify an |iid| field, which is the ID
23681/// of the entry in the field's interning index. Each field constructs its own
23682/// index, thus interning IDs are scoped to the tracing session and field
23683/// (usually as a counter for efficient var-int encoding), and optionally to
23684/// the incremental state generation of the packet sequence.
23685///
23686/// Note: field IDs up to 15 should be used for frequent data only.
23687///
23688/// Next reserved id: 8 (up to 15).
23689/// Next id: 53.
23690///
23691/// TODO(eseckler): Replace iid fields inside interned messages with
23692/// map<iid, message> type fields in InternedData.
23693#[derive(Clone, PartialEq, ::prost::Message)]
23694pub struct InternedData {
23695    ///
23696    /// == STABLE PUBLIC API: TrackEvent ==
23697    ///
23698    /// Interning for the stable TrackEvent API (see trace_packet.proto and
23699    /// docs/instrumentation/track-events.md).
23700    #[prost(message, repeated, tag = "1")]
23701    pub event_categories: ::prost::alloc::vec::Vec<EventCategory>,
23702    #[prost(message, repeated, tag = "2")]
23703    pub event_names: ::prost::alloc::vec::Vec<EventName>,
23704    #[prost(message, repeated, tag = "3")]
23705    pub debug_annotation_names: ::prost::alloc::vec::Vec<DebugAnnotationName>,
23706    #[prost(message, repeated, tag = "27")]
23707    pub debug_annotation_value_type_names: ::prost::alloc::vec::Vec<
23708        DebugAnnotationValueTypeName,
23709    >,
23710    /// Interned string values in the DebugAnnotation proto.
23711    #[prost(message, repeated, tag = "29")]
23712    pub debug_annotation_string_values: ::prost::alloc::vec::Vec<InternedString>,
23713    /// Interned correlation ids in track_event.
23714    #[prost(message, repeated, tag = "43")]
23715    pub correlation_id_str: ::prost::alloc::vec::Vec<InternedString>,
23716    /// Interned names, string values and display names of TrackDimensions (see
23717    /// TrackDimension.name_iid, string_value_iid and display_name_iid).
23718    #[prost(message, repeated, tag = "52")]
23719    pub track_dimension_strings: ::prost::alloc::vec::Vec<InternedString>,
23720    ///
23721    /// == STABLE PUBLIC API: Callstacks and symbolization ==
23722    ///
23723    /// Interned callstacks, frames, mappings and symbol strings. Referenced by the
23724    /// stable TrackEvent callstack fields (TrackEvent.callstack_iid) and by the
23725    /// StackSample API.
23726    ///
23727    /// Build IDs of exectuable files.
23728    #[prost(message, repeated, tag = "16")]
23729    pub build_ids: ::prost::alloc::vec::Vec<InternedString>,
23730    /// Paths to executable files.
23731    #[prost(message, repeated, tag = "17")]
23732    pub mapping_paths: ::prost::alloc::vec::Vec<InternedString>,
23733    /// Paths to source files.
23734    #[prost(message, repeated, tag = "18")]
23735    pub source_paths: ::prost::alloc::vec::Vec<InternedString>,
23736    /// Names of functions used in frames below.
23737    #[prost(message, repeated, tag = "5")]
23738    pub function_names: ::prost::alloc::vec::Vec<InternedString>,
23739    /// Executable files mapped into processes.
23740    #[prost(message, repeated, tag = "19")]
23741    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
23742    /// Frames of callstacks of a program.
23743    #[prost(message, repeated, tag = "6")]
23744    pub frames: ::prost::alloc::vec::Vec<Frame>,
23745    /// A callstack of a program.
23746    #[prost(message, repeated, tag = "7")]
23747    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
23748    ///
23749    /// == STABLE PUBLIC API: StackSample ==
23750    ///
23751    /// Interned StackSample context and descriptors, referenced by iid from
23752    /// StackSample. See protos/perfetto/trace/profiling/stack_sample.proto.
23753    #[prost(message, repeated, tag = "48")]
23754    pub stack_sample_task_contexts: ::prost::alloc::vec::Vec<stack_sample::TaskContext>,
23755    #[prost(message, repeated, tag = "49")]
23756    pub stack_sample_execution_contexts: ::prost::alloc::vec::Vec<
23757        stack_sample::ExecutionContext,
23758    >,
23759    #[prost(message, repeated, tag = "50")]
23760    pub stack_sample_counter_descriptors: ::prost::alloc::vec::Vec<
23761        stack_sample::CounterDescriptor,
23762    >,
23763    #[prost(message, repeated, tag = "51")]
23764    pub stack_sample_async_context_descriptors: ::prost::alloc::vec::Vec<
23765        stack_sample::AsyncContextDescriptor,
23766    >,
23767    /// Interning for the non-stable TrackEvent arguments below the "NOT part of
23768    /// the stable public API" line in track_event.proto: source_location,
23769    /// log_message and chrome_histogram_sample (Chrome/Android internal).
23770    #[prost(message, repeated, tag = "4")]
23771    pub source_locations: ::prost::alloc::vec::Vec<SourceLocation>,
23772    #[prost(message, repeated, tag = "28")]
23773    pub unsymbolized_source_locations: ::prost::alloc::vec::Vec<
23774        UnsymbolizedSourceLocation,
23775    >,
23776    #[prost(message, repeated, tag = "20")]
23777    pub log_message_body: ::prost::alloc::vec::Vec<LogMessageBody>,
23778    #[prost(message, repeated, tag = "25")]
23779    pub histogram_names: ::prost::alloc::vec::Vec<HistogramName>,
23780    /// Additional Vulkan information sent in a VulkanMemoryEvent message
23781    #[prost(message, repeated, tag = "22")]
23782    pub vulkan_memory_keys: ::prost::alloc::vec::Vec<InternedString>,
23783    /// Graphics context of a render stage event.  This represent the GL
23784    /// context for an OpenGl app or the VkDevice for a Vulkan app.
23785    #[prost(message, repeated, tag = "23")]
23786    pub graphics_contexts: ::prost::alloc::vec::Vec<InternedGraphicsContext>,
23787    /// Description of a GPU hardware queue or render stage.
23788    #[prost(message, repeated, tag = "24")]
23789    pub gpu_specifications: ::prost::alloc::vec::Vec<
23790        InternedGpuRenderStageSpecification,
23791    >,
23792    /// Description of GPU counters available in a data source.
23793    #[prost(message, repeated, tag = "47")]
23794    pub gpu_counter_descriptors: ::prost::alloc::vec::Vec<InternedGpuCounterDescriptor>,
23795    /// This is set when FtraceConfig.symbolize_ksyms = true.
23796    /// The id of each symbol the number that will be reported in ftrace events
23797    /// like sched_block_reason.caller and is obtained from a monotonic counter.
23798    /// The same symbol can have different indexes in different bundles.
23799    /// This is is NOT the real address. This is to avoid disclosing KASLR through
23800    /// traces.
23801    #[prost(message, repeated, tag = "26")]
23802    pub kernel_symbols: ::prost::alloc::vec::Vec<InternedString>,
23803    /// Interned name of a js function. We only intern js functions as there is a
23804    /// lot of duplication for them, but less so for other strings in the V8 data
23805    /// source.
23806    #[prost(message, repeated, tag = "31")]
23807    pub v8_js_function_name: ::prost::alloc::vec::Vec<InternedV8String>,
23808    /// Js functions can be emitted multiple times for various compilation tiers,
23809    /// so it makes sense to deduplicate all this.
23810    #[prost(message, repeated, tag = "32")]
23811    pub v8_js_function: ::prost::alloc::vec::Vec<InternedV8JsFunction>,
23812    /// Interned JS script (there is one associated with each JS function)
23813    #[prost(message, repeated, tag = "33")]
23814    pub v8_js_script: ::prost::alloc::vec::Vec<InternedV8JsScript>,
23815    /// Interned Wasm script (there is one associated with each Wasm function)
23816    #[prost(message, repeated, tag = "34")]
23817    pub v8_wasm_script: ::prost::alloc::vec::Vec<InternedV8WasmScript>,
23818    /// Every V8 event is associated with an isolate, intern the isolate to remove
23819    /// duplication.
23820    #[prost(message, repeated, tag = "35")]
23821    pub v8_isolate: ::prost::alloc::vec::Vec<InternedV8Isolate>,
23822}
23823/// A journald log event packet, collected from the Linux systemd journal.
23824/// Emitted by the "linux.systemd_journald" data source in traced_probes.
23825/// Next field id: 13, statistics starting at 20
23826#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23827pub struct SystemdJournaldEvent {
23828    /// _PID: PID of the process that wrote the log entry (trusted).
23829    #[prost(uint32, optional, tag = "1")]
23830    pub pid: ::core::option::Option<u32>,
23831    /// _TID: thread ID of the logging thread (trusted, set by journald for
23832    /// native journal protocol entries). Absent for syslog, stdout-piped, and
23833    /// kernel entries.
23834    #[prost(uint32, optional, tag = "2")]
23835    pub tid: ::core::option::Option<u32>,
23836    /// _UID: user ID of the process (trusted).
23837    #[prost(uint32, optional, tag = "3")]
23838    pub uid: ::core::option::Option<u32>,
23839    /// _GID: group ID of the process (trusted).
23840    #[prost(uint32, optional, tag = "4")]
23841    pub gid: ::core::option::Option<u32>,
23842    /// PRIORITY: syslog priority level 0 (EMERG) .. 7 (DEBUG).
23843    #[prost(uint32, optional, tag = "5")]
23844    pub prio: ::core::option::Option<u32>,
23845    /// SYSLOG_IDENTIFIER: program name / tag, set by the logging application.
23846    #[prost(string, optional, tag = "6")]
23847    pub tag: ::core::option::Option<::prost::alloc::string::String>,
23848    /// MESSAGE: the human-readable log message text.
23849    #[prost(string, optional, tag = "7")]
23850    pub message: ::core::option::Option<::prost::alloc::string::String>,
23851    /// _COMM: short process name as known to the kernel (trusted).
23852    #[prost(string, optional, tag = "8")]
23853    pub comm: ::core::option::Option<::prost::alloc::string::String>,
23854    /// _EXE: full executable path (trusted).
23855    #[prost(string, optional, tag = "9")]
23856    pub exe: ::core::option::Option<::prost::alloc::string::String>,
23857    /// _SYSTEMD_UNIT: the systemd unit that owns this process (trusted).
23858    #[prost(string, optional, tag = "10")]
23859    pub systemd_unit: ::core::option::Option<::prost::alloc::string::String>,
23860    /// _HOSTNAME: hostname of the machine (trusted).
23861    #[prost(string, optional, tag = "11")]
23862    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
23863    /// _TRANSPORT: how the entry was received by journald (trusted).
23864    /// Values: "audit", "driver", "syslog", "journal", "stdout", "kernel".
23865    #[prost(string, optional, tag = "12")]
23866    pub transport: ::core::option::Option<::prost::alloc::string::String>,
23867    /// These statistics emitted once on Flush()
23868    #[prost(uint64, optional, tag = "20")]
23869    pub num_total: ::core::option::Option<u64>,
23870    #[prost(uint64, optional, tag = "21")]
23871    pub num_failed: ::core::option::Option<u64>,
23872}
23873/// Values read from the files of the cgroup v2 memory controller (memcg), as
23874/// recorded by the "linux.cgroup" data source.
23875///
23876/// The values are as reported by the kernel: sizes are in bytes, and limits set
23877/// to "max" are UINT64_MAX. See Documentation/admin-guide/cgroup-v2.rst in the
23878/// kernel for their meaning.
23879#[derive(Clone, PartialEq, ::prost::Message)]
23880pub struct MemcgStats {
23881    #[prost(message, repeated, tag = "1")]
23882    pub cgroup: ::prost::alloc::vec::Vec<memcg_stats::Cgroup>,
23883}
23884/// Nested message and enum types in `MemcgStats`.
23885pub mod memcg_stats {
23886    /// memory.events and memory.events.local
23887    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23888    pub struct Events {
23889        #[prost(uint64, optional, tag = "1")]
23890        pub low: ::core::option::Option<u64>,
23891        #[prost(uint64, optional, tag = "2")]
23892        pub high: ::core::option::Option<u64>,
23893        #[prost(uint64, optional, tag = "3")]
23894        pub max: ::core::option::Option<u64>,
23895        #[prost(uint64, optional, tag = "4")]
23896        pub oom: ::core::option::Option<u64>,
23897        #[prost(uint64, optional, tag = "5")]
23898        pub oom_kill: ::core::option::Option<u64>,
23899        #[prost(uint64, optional, tag = "6")]
23900        pub oom_group_kill: ::core::option::Option<u64>,
23901        #[prost(uint64, optional, tag = "7")]
23902        pub sock_throttled: ::core::option::Option<u64>,
23903    }
23904    /// memory.swap.events
23905    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23906    pub struct SwapEvents {
23907        #[prost(uint64, optional, tag = "1")]
23908        pub high: ::core::option::Option<u64>,
23909        #[prost(uint64, optional, tag = "2")]
23910        pub max: ::core::option::Option<u64>,
23911        #[prost(uint64, optional, tag = "3")]
23912        pub fail: ::core::option::Option<u64>,
23913    }
23914    /// memory.stat (as of linux v7.3)
23915    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23916    pub struct Stat {
23917        #[prost(uint64, optional, tag = "1")]
23918        pub anon: ::core::option::Option<u64>,
23919        #[prost(uint64, optional, tag = "2")]
23920        pub file: ::core::option::Option<u64>,
23921        #[prost(uint64, optional, tag = "3")]
23922        pub kernel: ::core::option::Option<u64>,
23923        #[prost(uint64, optional, tag = "4")]
23924        pub kernel_stack: ::core::option::Option<u64>,
23925        #[prost(uint64, optional, tag = "5")]
23926        pub pagetables: ::core::option::Option<u64>,
23927        #[prost(uint64, optional, tag = "6")]
23928        pub sec_pagetables: ::core::option::Option<u64>,
23929        #[prost(uint64, optional, tag = "7")]
23930        pub percpu: ::core::option::Option<u64>,
23931        #[prost(uint64, optional, tag = "8")]
23932        pub sock: ::core::option::Option<u64>,
23933        #[prost(uint64, optional, tag = "9")]
23934        pub vmalloc: ::core::option::Option<u64>,
23935        #[prost(uint64, optional, tag = "10")]
23936        pub shmem: ::core::option::Option<u64>,
23937        #[prost(uint64, optional, tag = "11")]
23938        pub zswap: ::core::option::Option<u64>,
23939        #[prost(uint64, optional, tag = "12")]
23940        pub zswapped: ::core::option::Option<u64>,
23941        #[prost(uint64, optional, tag = "13")]
23942        pub zswap_incomp: ::core::option::Option<u64>,
23943        #[prost(uint64, optional, tag = "14")]
23944        pub file_mapped: ::core::option::Option<u64>,
23945        #[prost(uint64, optional, tag = "15")]
23946        pub file_dirty: ::core::option::Option<u64>,
23947        #[prost(uint64, optional, tag = "16")]
23948        pub file_writeback: ::core::option::Option<u64>,
23949        #[prost(uint64, optional, tag = "17")]
23950        pub swapcached: ::core::option::Option<u64>,
23951        #[prost(uint64, optional, tag = "18")]
23952        pub anon_thp: ::core::option::Option<u64>,
23953        #[prost(uint64, optional, tag = "19")]
23954        pub file_thp: ::core::option::Option<u64>,
23955        #[prost(uint64, optional, tag = "20")]
23956        pub shmem_thp: ::core::option::Option<u64>,
23957        #[prost(uint64, optional, tag = "21")]
23958        pub inactive_anon: ::core::option::Option<u64>,
23959        #[prost(uint64, optional, tag = "22")]
23960        pub active_anon: ::core::option::Option<u64>,
23961        #[prost(uint64, optional, tag = "23")]
23962        pub inactive_file: ::core::option::Option<u64>,
23963        #[prost(uint64, optional, tag = "24")]
23964        pub active_file: ::core::option::Option<u64>,
23965        #[prost(uint64, optional, tag = "25")]
23966        pub unevictable: ::core::option::Option<u64>,
23967        #[prost(uint64, optional, tag = "26")]
23968        pub slab_reclaimable: ::core::option::Option<u64>,
23969        #[prost(uint64, optional, tag = "27")]
23970        pub slab_unreclaimable: ::core::option::Option<u64>,
23971        #[prost(uint64, optional, tag = "28")]
23972        pub slab: ::core::option::Option<u64>,
23973        #[prost(uint64, optional, tag = "29")]
23974        pub hugetlb: ::core::option::Option<u64>,
23975        #[prost(uint64, optional, tag = "30")]
23976        pub workingset_refault_anon: ::core::option::Option<u64>,
23977        #[prost(uint64, optional, tag = "31")]
23978        pub workingset_refault_file: ::core::option::Option<u64>,
23979        #[prost(uint64, optional, tag = "32")]
23980        pub workingset_activate_anon: ::core::option::Option<u64>,
23981        #[prost(uint64, optional, tag = "33")]
23982        pub workingset_activate_file: ::core::option::Option<u64>,
23983        #[prost(uint64, optional, tag = "34")]
23984        pub workingset_restore_anon: ::core::option::Option<u64>,
23985        #[prost(uint64, optional, tag = "35")]
23986        pub workingset_restore_file: ::core::option::Option<u64>,
23987        #[prost(uint64, optional, tag = "36")]
23988        pub workingset_nodereclaim: ::core::option::Option<u64>,
23989        #[prost(uint64, optional, tag = "37")]
23990        pub pgdemote_kswapd: ::core::option::Option<u64>,
23991        #[prost(uint64, optional, tag = "38")]
23992        pub pgdemote_direct: ::core::option::Option<u64>,
23993        #[prost(uint64, optional, tag = "39")]
23994        pub pgdemote_khugepaged: ::core::option::Option<u64>,
23995        #[prost(uint64, optional, tag = "40")]
23996        pub pgdemote_proactive: ::core::option::Option<u64>,
23997        #[prost(uint64, optional, tag = "41")]
23998        pub pgsteal_kswapd: ::core::option::Option<u64>,
23999        #[prost(uint64, optional, tag = "42")]
24000        pub pgsteal_direct: ::core::option::Option<u64>,
24001        #[prost(uint64, optional, tag = "43")]
24002        pub pgsteal_khugepaged: ::core::option::Option<u64>,
24003        #[prost(uint64, optional, tag = "44")]
24004        pub pgsteal_proactive: ::core::option::Option<u64>,
24005        #[prost(uint64, optional, tag = "45")]
24006        pub pgscan_kswapd: ::core::option::Option<u64>,
24007        #[prost(uint64, optional, tag = "46")]
24008        pub pgscan_direct: ::core::option::Option<u64>,
24009        #[prost(uint64, optional, tag = "47")]
24010        pub pgscan_khugepaged: ::core::option::Option<u64>,
24011        #[prost(uint64, optional, tag = "48")]
24012        pub pgscan_proactive: ::core::option::Option<u64>,
24013        #[prost(uint64, optional, tag = "49")]
24014        pub pgrefill: ::core::option::Option<u64>,
24015        #[prost(uint64, optional, tag = "50")]
24016        pub pgpromote_success: ::core::option::Option<u64>,
24017        #[prost(uint64, optional, tag = "51")]
24018        pub pgscan: ::core::option::Option<u64>,
24019        #[prost(uint64, optional, tag = "52")]
24020        pub pgsteal: ::core::option::Option<u64>,
24021        #[prost(uint64, optional, tag = "53")]
24022        pub pswpin: ::core::option::Option<u64>,
24023        #[prost(uint64, optional, tag = "54")]
24024        pub pswpout: ::core::option::Option<u64>,
24025        #[prost(uint64, optional, tag = "55")]
24026        pub pgfault: ::core::option::Option<u64>,
24027        #[prost(uint64, optional, tag = "56")]
24028        pub pgmajfault: ::core::option::Option<u64>,
24029        #[prost(uint64, optional, tag = "57")]
24030        pub pgactivate: ::core::option::Option<u64>,
24031        #[prost(uint64, optional, tag = "58")]
24032        pub pgdeactivate: ::core::option::Option<u64>,
24033        #[prost(uint64, optional, tag = "59")]
24034        pub pglazyfree: ::core::option::Option<u64>,
24035        #[prost(uint64, optional, tag = "60")]
24036        pub pglazyfreed: ::core::option::Option<u64>,
24037        #[prost(uint64, optional, tag = "61")]
24038        pub swpin_zero: ::core::option::Option<u64>,
24039        #[prost(uint64, optional, tag = "62")]
24040        pub swpout_zero: ::core::option::Option<u64>,
24041        #[prost(uint64, optional, tag = "63")]
24042        pub zswpin: ::core::option::Option<u64>,
24043        #[prost(uint64, optional, tag = "64")]
24044        pub zswpout: ::core::option::Option<u64>,
24045        #[prost(uint64, optional, tag = "65")]
24046        pub zswpwb: ::core::option::Option<u64>,
24047        #[prost(uint64, optional, tag = "66")]
24048        pub thp_fault_alloc: ::core::option::Option<u64>,
24049        #[prost(uint64, optional, tag = "67")]
24050        pub thp_collapse_alloc: ::core::option::Option<u64>,
24051        #[prost(uint64, optional, tag = "68")]
24052        pub thp_swpout: ::core::option::Option<u64>,
24053        #[prost(uint64, optional, tag = "69")]
24054        pub thp_swpout_fallback: ::core::option::Option<u64>,
24055        #[prost(uint64, optional, tag = "70")]
24056        pub numa_pages_migrated: ::core::option::Option<u64>,
24057        #[prost(uint64, optional, tag = "71")]
24058        pub numa_pte_updates: ::core::option::Option<u64>,
24059        #[prost(uint64, optional, tag = "72")]
24060        pub numa_hint_faults: ::core::option::Option<u64>,
24061    }
24062    /// The values of one cgroup.
24063    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24064    pub struct Cgroup {
24065        /// Identifies the cgroup in the hierarchy created by Android's
24066        /// libprocessgroup: {apps,system}/uid_<uid>/pid_<pid>.
24067        #[prost(enumeration = "Group", optional, tag = "1")]
24068        pub android_group: ::core::option::Option<i32>,
24069        #[prost(uint32, optional, tag = "2")]
24070        pub uid: ::core::option::Option<u32>,
24071        #[prost(uint32, optional, tag = "3")]
24072        pub pid: ::core::option::Option<u32>,
24073        /// Single-valued files.
24074        /// memory.current
24075        #[prost(uint64, optional, tag = "4")]
24076        pub current: ::core::option::Option<u64>,
24077        /// memory.peak
24078        #[prost(uint64, optional, tag = "5")]
24079        pub peak: ::core::option::Option<u64>,
24080        /// memory.min (UINT64_MAX if "max")
24081        #[prost(uint64, optional, tag = "6")]
24082        pub min: ::core::option::Option<u64>,
24083        /// memory.low (UINT64_MAX if "max")
24084        #[prost(uint64, optional, tag = "7")]
24085        pub low: ::core::option::Option<u64>,
24086        /// memory.high (UINT64_MAX if "max")
24087        #[prost(uint64, optional, tag = "8")]
24088        pub high: ::core::option::Option<u64>,
24089        /// memory.max (UINT64_MAX if "max")
24090        #[prost(uint64, optional, tag = "9")]
24091        pub max: ::core::option::Option<u64>,
24092        /// memory.swap.current
24093        #[prost(uint64, optional, tag = "10")]
24094        pub swap_current: ::core::option::Option<u64>,
24095        /// memory.swap.peak
24096        #[prost(uint64, optional, tag = "11")]
24097        pub swap_peak: ::core::option::Option<u64>,
24098        /// memory.swap.high (UINT64_MAX if "max")
24099        #[prost(uint64, optional, tag = "12")]
24100        pub swap_high: ::core::option::Option<u64>,
24101        /// memory.swap.max (UINT64_MAX if "max")
24102        #[prost(uint64, optional, tag = "13")]
24103        pub swap_max: ::core::option::Option<u64>,
24104        /// memory.zswap.current
24105        #[prost(uint64, optional, tag = "14")]
24106        pub zswap_current: ::core::option::Option<u64>,
24107        /// memory.zswap.max (UINT64_MAX if "max")
24108        #[prost(uint64, optional, tag = "15")]
24109        pub zswap_max: ::core::option::Option<u64>,
24110        /// memory.events (including descendant cgroups).
24111        #[prost(message, optional, tag = "16")]
24112        pub events: ::core::option::Option<Events>,
24113        /// memory.events.local (only this exact cgroup).
24114        #[prost(message, optional, tag = "17")]
24115        pub events_local: ::core::option::Option<Events>,
24116        /// memory.swap.events
24117        #[prost(message, optional, tag = "18")]
24118        pub swap_events: ::core::option::Option<SwapEvents>,
24119        /// memory.stat
24120        #[prost(message, optional, tag = "19")]
24121        pub stat: ::core::option::Option<Stat>,
24122    }
24123    /// The top-level groups of the hierarchy created by Android's
24124    /// libprocessgroup.
24125    #[derive(
24126        Clone,
24127        Copy,
24128        Debug,
24129        PartialEq,
24130        Eq,
24131        Hash,
24132        PartialOrd,
24133        Ord,
24134        ::prost::Enumeration
24135    )]
24136    #[repr(i32)]
24137    pub enum Group {
24138        Unspecified = 0,
24139        /// apps/
24140        Apps = 1,
24141        /// system/
24142        System = 2,
24143    }
24144    impl Group {
24145        /// String value of the enum field names used in the ProtoBuf definition.
24146        ///
24147        /// The values are not transformed in any way and thus are considered stable
24148        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24149        pub fn as_str_name(&self) -> &'static str {
24150            match self {
24151                Self::Unspecified => "GROUP_UNSPECIFIED",
24152                Self::Apps => "GROUP_APPS",
24153                Self::System => "GROUP_SYSTEM",
24154            }
24155        }
24156        /// Creates an enum from field names used in the ProtoBuf definition.
24157        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24158            match value {
24159                "GROUP_UNSPECIFIED" => Some(Self::Unspecified),
24160                "GROUP_APPS" => Some(Self::Apps),
24161                "GROUP_SYSTEM" => Some(Self::System),
24162                _ => None,
24163            }
24164        }
24165    }
24166}
24167/// Message definitions for app-reported memory breakdowns. At the moment, this
24168/// is a Chrome-only tracing feature, historically known as 'memory-infra'. See
24169/// <https://chromium.googlesource.com/chromium/src/+/master/docs/memory-infra/> .
24170/// This is unrelated to the native or java heap profilers (those protos live
24171/// in //protos/perfetto/trace/profiling/).
24172#[derive(Clone, PartialEq, ::prost::Message)]
24173pub struct MemoryTrackerSnapshot {
24174    /// Unique ID that represents the global memory dump.
24175    #[prost(uint64, optional, tag = "1")]
24176    pub global_dump_id: ::core::option::Option<u64>,
24177    #[prost(enumeration = "memory_tracker_snapshot::LevelOfDetail", optional, tag = "2")]
24178    pub level_of_detail: ::core::option::Option<i32>,
24179    #[prost(message, repeated, tag = "3")]
24180    pub process_memory_dumps: ::prost::alloc::vec::Vec<
24181        memory_tracker_snapshot::ProcessSnapshot,
24182    >,
24183}
24184/// Nested message and enum types in `MemoryTrackerSnapshot`.
24185pub mod memory_tracker_snapshot {
24186    /// Memory snapshot of a process. The snapshot contains memory data that is
24187    /// from 2 different sources, namely system stats and instrumentation stats.
24188    /// The system memory usage stats come from the OS based on standard API
24189    /// available in the platform to query memory usage. The instrumentation stats
24190    /// are added by instrumenting specific piece of code which tracks memory
24191    /// allocations and deallocations made by a small sub-system within the
24192    /// application.
24193    /// The system stats of the global memory snapshot are recorded as part of
24194    /// ProcessStats and SmapsPacket fields in trace packet with the same
24195    /// timestamp.
24196    #[derive(Clone, PartialEq, ::prost::Message)]
24197    pub struct ProcessSnapshot {
24198        /// Process ID of the process
24199        #[prost(int32, optional, tag = "1")]
24200        pub pid: ::core::option::Option<i32>,
24201        #[prost(message, repeated, tag = "2")]
24202        pub allocator_dumps: ::prost::alloc::vec::Vec<process_snapshot::MemoryNode>,
24203        #[prost(message, repeated, tag = "3")]
24204        pub memory_edges: ::prost::alloc::vec::Vec<process_snapshot::MemoryEdge>,
24205    }
24206    /// Nested message and enum types in `ProcessSnapshot`.
24207    pub mod process_snapshot {
24208        /// Memory dumps are represented as a graph of memory nodes which contain
24209        /// statistics. To avoid double counting the same memory across different
24210        /// nodes, edges are used to mark nodes that account for the same memory. See
24211        /// this doc for examples of the usage:
24212        /// <https://docs.google.com/document/d/1WGQRJ1sjJrfVkNcgPVY6frm64UqPc94tsxUOXImZUZI>
24213        ///
24214        /// A single node in the memory graph.
24215        #[derive(Clone, PartialEq, ::prost::Message)]
24216        pub struct MemoryNode {
24217            /// Unique ID of the node across all processes involved in the global
24218            /// memory dump. The ID is only unique within this particular global dump
24219            /// identified by GlobalMemoryDumpPacket.global_dump_id.
24220            #[prost(uint64, optional, tag = "1")]
24221            pub id: ::core::option::Option<u64>,
24222            /// Absolute name is a unique name for the memory node within the process
24223            /// with ProcessMemoryDump.pid. The name can contain multiple parts
24224            /// separated by '/', which traces the edges of the node from the root
24225            /// node.
24226            /// Eg: "partition_allocator/array_buffers/buffer1" refers to the child
24227            /// node "buffer1" in a graph structure of:
24228            ///    root -> partition_allocator -> array_buffers -> buffer1.
24229            #[prost(string, optional, tag = "2")]
24230            pub absolute_name: ::core::option::Option<::prost::alloc::string::String>,
24231            /// A weak node means that the instrumentation that added the current node
24232            /// is unsure about the existence of the actual memory. Unless a "strong"
24233            /// (non-weak is default) node that has an edge to the current node exists
24234            /// in the current global dump, the current node will be discarded.
24235            #[prost(bool, optional, tag = "3")]
24236            pub weak: ::core::option::Option<bool>,
24237            /// Size of the node in bytes, used to compute the effective size of the
24238            /// nodes without double counting.
24239            #[prost(uint64, optional, tag = "4")]
24240            pub size_bytes: ::core::option::Option<u64>,
24241            #[prost(message, repeated, tag = "5")]
24242            pub entries: ::prost::alloc::vec::Vec<memory_node::MemoryNodeEntry>,
24243        }
24244        /// Nested message and enum types in `MemoryNode`.
24245        pub mod memory_node {
24246            /// Entries in the memory node that contain statistics and additional
24247            /// debuggable information about the memory. The size of the node is
24248            /// tracked separately in the |size_bytes| field.
24249            #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24250            pub struct MemoryNodeEntry {
24251                #[prost(string, optional, tag = "1")]
24252                pub name: ::core::option::Option<::prost::alloc::string::String>,
24253                #[prost(enumeration = "memory_node_entry::Units", optional, tag = "2")]
24254                pub units: ::core::option::Option<i32>,
24255                /// Contains either one of uint64 or string value.
24256                #[prost(uint64, optional, tag = "3")]
24257                pub value_uint64: ::core::option::Option<u64>,
24258                #[prost(string, optional, tag = "4")]
24259                pub value_string: ::core::option::Option<::prost::alloc::string::String>,
24260            }
24261            /// Nested message and enum types in `MemoryNodeEntry`.
24262            pub mod memory_node_entry {
24263                #[derive(
24264                    Clone,
24265                    Copy,
24266                    Debug,
24267                    PartialEq,
24268                    Eq,
24269                    Hash,
24270                    PartialOrd,
24271                    Ord,
24272                    ::prost::Enumeration
24273                )]
24274                #[repr(i32)]
24275                pub enum Units {
24276                    Unspecified = 0,
24277                    Bytes = 1,
24278                    Count = 2,
24279                }
24280                impl Units {
24281                    /// String value of the enum field names used in the ProtoBuf definition.
24282                    ///
24283                    /// The values are not transformed in any way and thus are considered stable
24284                    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24285                    pub fn as_str_name(&self) -> &'static str {
24286                        match self {
24287                            Self::Unspecified => "UNSPECIFIED",
24288                            Self::Bytes => "BYTES",
24289                            Self::Count => "COUNT",
24290                        }
24291                    }
24292                    /// Creates an enum from field names used in the ProtoBuf definition.
24293                    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24294                        match value {
24295                            "UNSPECIFIED" => Some(Self::Unspecified),
24296                            "BYTES" => Some(Self::Bytes),
24297                            "COUNT" => Some(Self::Count),
24298                            _ => None,
24299                        }
24300                    }
24301                }
24302            }
24303        }
24304        /// A directed edge that connects any 2 nodes in the graph above. These are
24305        /// in addition to the inherent edges added due to the tree structure of the
24306        /// node's absolute names.
24307        /// Node with id |source_id| owns the node with id |target_id|, and has the
24308        /// effect of attributing the memory usage of target to source. |importance|
24309        /// is optional and relevant only for the cases of co-ownership, where it
24310        /// acts as a z-index: the owner with the highest importance will be
24311        /// attributed target's memory.
24312        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24313        pub struct MemoryEdge {
24314            #[prost(uint64, optional, tag = "1")]
24315            pub source_id: ::core::option::Option<u64>,
24316            #[prost(uint64, optional, tag = "2")]
24317            pub target_id: ::core::option::Option<u64>,
24318            #[prost(uint32, optional, tag = "3")]
24319            pub importance: ::core::option::Option<u32>,
24320            #[prost(bool, optional, tag = "4")]
24321            pub overridable: ::core::option::Option<bool>,
24322        }
24323    }
24324    #[derive(
24325        Clone,
24326        Copy,
24327        Debug,
24328        PartialEq,
24329        Eq,
24330        Hash,
24331        PartialOrd,
24332        Ord,
24333        ::prost::Enumeration
24334    )]
24335    #[repr(i32)]
24336    pub enum LevelOfDetail {
24337        DetailFull = 0,
24338        DetailLight = 1,
24339        DetailBackground = 2,
24340    }
24341    impl LevelOfDetail {
24342        /// String value of the enum field names used in the ProtoBuf definition.
24343        ///
24344        /// The values are not transformed in any way and thus are considered stable
24345        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24346        pub fn as_str_name(&self) -> &'static str {
24347            match self {
24348                Self::DetailFull => "DETAIL_FULL",
24349                Self::DetailLight => "DETAIL_LIGHT",
24350                Self::DetailBackground => "DETAIL_BACKGROUND",
24351            }
24352        }
24353        /// Creates an enum from field names used in the ProtoBuf definition.
24354        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24355            match value {
24356                "DETAIL_FULL" => Some(Self::DetailFull),
24357                "DETAIL_LIGHT" => Some(Self::DetailLight),
24358                "DETAIL_BACKGROUND" => Some(Self::DetailBackground),
24359                _ => None,
24360            }
24361        }
24362    }
24363}
24364/// Emitted by the tracing service to record a state change of another tracing
24365/// session that was active while this trace was being recorded. Opt-in via
24366/// TraceConfig.BuiltinDataSource.enable_concurrent_session_events.
24367///
24368/// One packet per state change; its time is carried by the enclosing
24369/// TracePacket's timestamp (CLOCK_BOOTTIME). Events of the same session share
24370/// the same |session_id|. The trace UUID is deliberately not included.
24371///
24372/// Introduced in v58 / Android 26Q3+.
24373#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24374pub struct ConcurrentSessionEvent {
24375    /// The state the session transitioned to at this timestamp.
24376    #[prost(enumeration = "concurrent_session_event::State", optional, tag = "1")]
24377    pub state: ::core::option::Option<i32>,
24378    /// unique_session_name from the session's TraceConfig. May be empty.
24379    #[prost(string, optional, tag = "2")]
24380    pub session_name: ::core::option::Option<::prost::alloc::string::String>,
24381    /// Service-local monotonic counter identifying the session. Shared by all
24382    /// state changes of one session, never reused within a service instance.
24383    #[prost(uint64, optional, tag = "3")]
24384    pub session_id: ::core::option::Option<u64>,
24385    /// Unix uid of the consumer that started the session.
24386    #[prost(int32, optional, tag = "4")]
24387    pub consumer_uid: ::core::option::Option<i32>,
24388    /// Number of data sources in the session at the time of the state change.
24389    #[prost(uint32, optional, tag = "5")]
24390    pub num_data_sources: ::core::option::Option<u32>,
24391}
24392/// Nested message and enum types in `ConcurrentSessionEvent`.
24393pub mod concurrent_session_event {
24394    /// Mirrors the tracing service's internal session state machine
24395    /// (TracingSession::State in the service): keep these two enums in sync.
24396    /// These values are part of the trace wire format and must stay stable: never
24397    /// renumber or reuse an existing value, only append new ones at the end.
24398    #[derive(
24399        Clone,
24400        Copy,
24401        Debug,
24402        PartialEq,
24403        Eq,
24404        Hash,
24405        PartialOrd,
24406        Ord,
24407        ::prost::Enumeration
24408    )]
24409    #[repr(i32)]
24410    pub enum State {
24411        Unspecified = 0,
24412        /// Not recording (initial and final state).
24413        Disabled = 1,
24414        /// Configured but waiting for a start signal (e.g. a trigger).
24415        Configured = 2,
24416        /// Actively recording data.
24417        Started = 3,
24418        /// Stopping, waiting for data sources to ack and drain their final data.
24419        DisablingWaitingStopAcks = 4,
24420        /// A read-only snapshot of another session, created by a clone operation.
24421        ClonedReadOnly = 5,
24422    }
24423    impl State {
24424        /// String value of the enum field names used in the ProtoBuf definition.
24425        ///
24426        /// The values are not transformed in any way and thus are considered stable
24427        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24428        pub fn as_str_name(&self) -> &'static str {
24429            match self {
24430                Self::Unspecified => "STATE_UNSPECIFIED",
24431                Self::Disabled => "STATE_DISABLED",
24432                Self::Configured => "STATE_CONFIGURED",
24433                Self::Started => "STATE_STARTED",
24434                Self::DisablingWaitingStopAcks => "STATE_DISABLING_WAITING_STOP_ACKS",
24435                Self::ClonedReadOnly => "STATE_CLONED_READ_ONLY",
24436            }
24437        }
24438        /// Creates an enum from field names used in the ProtoBuf definition.
24439        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24440            match value {
24441                "STATE_UNSPECIFIED" => Some(Self::Unspecified),
24442                "STATE_DISABLED" => Some(Self::Disabled),
24443                "STATE_CONFIGURED" => Some(Self::Configured),
24444                "STATE_STARTED" => Some(Self::Started),
24445                "STATE_DISABLING_WAITING_STOP_ACKS" => {
24446                    Some(Self::DisablingWaitingStopAcks)
24447                }
24448                "STATE_CLONED_READ_ONLY" => Some(Self::ClonedReadOnly),
24449                _ => None,
24450            }
24451        }
24452    }
24453}
24454/// Used to trace the execution of perfetto itself.
24455#[derive(Clone, PartialEq, ::prost::Message)]
24456pub struct PerfettoMetatrace {
24457    /// Only when using |event_id|.
24458    #[prost(uint64, optional, tag = "3")]
24459    pub event_duration_ns: ::core::option::Option<u64>,
24460    /// Only when using |counter_id|.
24461    #[prost(int32, optional, tag = "4")]
24462    pub counter_value: ::core::option::Option<i32>,
24463    /// ID of the thread that emitted the event.
24464    #[prost(uint32, optional, tag = "5")]
24465    pub thread_id: ::core::option::Option<u32>,
24466    /// If true the meta-tracing ring buffer had overruns and hence some data is
24467    /// missing from this point.
24468    #[prost(bool, optional, tag = "6")]
24469    pub has_overruns: ::core::option::Option<bool>,
24470    /// Args for the event.
24471    #[prost(message, repeated, tag = "7")]
24472    pub args: ::prost::alloc::vec::Vec<perfetto_metatrace::Arg>,
24473    #[prost(message, repeated, tag = "10")]
24474    pub interned_strings: ::prost::alloc::vec::Vec<perfetto_metatrace::InternedString>,
24475    /// See base/metatrace_events.h for definitions.
24476    #[prost(oneof = "perfetto_metatrace::RecordType", tags = "1, 2, 8, 11, 9")]
24477    pub record_type: ::core::option::Option<perfetto_metatrace::RecordType>,
24478}
24479/// Nested message and enum types in `PerfettoMetatrace`.
24480pub mod perfetto_metatrace {
24481    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24482    pub struct Arg {
24483        #[prost(oneof = "arg::KeyOrInternedKey", tags = "1, 3")]
24484        pub key_or_interned_key: ::core::option::Option<arg::KeyOrInternedKey>,
24485        #[prost(oneof = "arg::ValueOrInternedValue", tags = "2, 4")]
24486        pub value_or_interned_value: ::core::option::Option<arg::ValueOrInternedValue>,
24487    }
24488    /// Nested message and enum types in `Arg`.
24489    pub mod arg {
24490        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
24491        pub enum KeyOrInternedKey {
24492            #[prost(string, tag = "1")]
24493            Key(::prost::alloc::string::String),
24494            #[prost(uint64, tag = "3")]
24495            KeyIid(u64),
24496        }
24497        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
24498        pub enum ValueOrInternedValue {
24499            #[prost(string, tag = "2")]
24500            Value(::prost::alloc::string::String),
24501            #[prost(uint64, tag = "4")]
24502            ValueIid(u64),
24503        }
24504    }
24505    /// Interned strings corresponding to the |event_name_iid|, |key_iid| and
24506    /// |value_iid| above.
24507    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24508    pub struct InternedString {
24509        #[prost(uint64, optional, tag = "1")]
24510        pub iid: ::core::option::Option<u64>,
24511        #[prost(string, optional, tag = "2")]
24512        pub value: ::core::option::Option<::prost::alloc::string::String>,
24513    }
24514    /// See base/metatrace_events.h for definitions.
24515    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
24516    pub enum RecordType {
24517        #[prost(uint32, tag = "1")]
24518        EventId(u32),
24519        #[prost(uint32, tag = "2")]
24520        CounterId(u32),
24521        /// For trace processor metatracing.
24522        #[prost(string, tag = "8")]
24523        EventName(::prost::alloc::string::String),
24524        #[prost(uint64, tag = "11")]
24525        EventNameIid(u64),
24526        #[prost(string, tag = "9")]
24527        CounterName(::prost::alloc::string::String),
24528    }
24529}
24530#[derive(Clone, PartialEq, ::prost::Message)]
24531pub struct TraceProvenance {
24532    #[prost(message, repeated, tag = "2")]
24533    pub buffers: ::prost::alloc::vec::Vec<trace_provenance::Buffer>,
24534}
24535/// Nested message and enum types in `TraceProvenance`.
24536pub mod trace_provenance {
24537    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24538    pub struct Sequence {
24539        /// The trusted_packet_sequence_id reported in each TracePacket.
24540        #[prost(uint32, optional, tag = "1")]
24541        pub id: ::core::option::Option<u32>,
24542        /// ID of the producer, as per Producer.id.
24543        #[prost(int32, optional, tag = "2")]
24544        pub producer_id: ::core::option::Option<i32>,
24545    }
24546    /// Describes a trace buffer and all the sequences writing to it.
24547    #[derive(Clone, PartialEq, ::prost::Message)]
24548    pub struct Buffer {
24549        #[prost(message, repeated, tag = "1")]
24550        pub sequences: ::prost::alloc::vec::Vec<Sequence>,
24551    }
24552}
24553/// Events emitted by the tracing service.
24554/// Next id: 12.
24555#[derive(Clone, PartialEq, ::prost::Message)]
24556pub struct TracingServiceEvent {
24557    /// When each of the following booleans are set to true, they report the
24558    /// point in time (through TracePacket's timestamp) where the condition
24559    /// they describe happened.
24560    /// The order of the booleans below matches the timestamp ordering
24561    /// they would generally be expected to have.
24562    #[prost(
24563        oneof = "tracing_service_event::EventType",
24564        tags = "2, 1, 9, 3, 4, 5, 6, 7, 8, 10, 11"
24565    )]
24566    pub event_type: ::core::option::Option<tracing_service_event::EventType>,
24567}
24568/// Nested message and enum types in `TracingServiceEvent`.
24569pub mod tracing_service_event {
24570    #[derive(Clone, PartialEq, ::prost::Message)]
24571    pub struct DataSources {
24572        #[prost(message, repeated, tag = "1")]
24573        pub data_source: ::prost::alloc::vec::Vec<data_sources::DataSource>,
24574    }
24575    /// Nested message and enum types in `DataSources`.
24576    pub mod data_sources {
24577        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24578        pub struct DataSource {
24579            #[prost(string, optional, tag = "1")]
24580            pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
24581            #[prost(string, optional, tag = "2")]
24582            pub data_source_name: ::core::option::Option<::prost::alloc::string::String>,
24583        }
24584    }
24585    /// When each of the following booleans are set to true, they report the
24586    /// point in time (through TracePacket's timestamp) where the condition
24587    /// they describe happened.
24588    /// The order of the booleans below matches the timestamp ordering
24589    /// they would generally be expected to have.
24590    #[derive(Clone, PartialEq, ::prost::Oneof)]
24591    pub enum EventType {
24592        /// Emitted when we start tracing and specifically, this will be before any
24593        /// producer is notified about the existence of this trace. This is always
24594        /// emitted before the all_data_sources_started event. This event is also
24595        /// guaranteed to be seen (byte-offset wise) before any data packets from
24596        /// producers.
24597        #[prost(bool, tag = "2")]
24598        TracingStarted(bool),
24599        /// Emitted after all data sources saw the start event and ACKed it.
24600        /// This identifies the point in time when it's safe to assume that all data
24601        /// sources have been recording events.
24602        #[prost(bool, tag = "1")]
24603        AllDataSourcesStarted(bool),
24604        /// Emitted when a flush is started.
24605        #[prost(bool, tag = "9")]
24606        FlushStarted(bool),
24607        /// Emitted when all data sources have been flushed successfully or with an
24608        /// error (including timeouts). This can generally happen many times over the
24609        /// course of the trace.
24610        #[prost(bool, tag = "3")]
24611        AllDataSourcesFlushed(bool),
24612        /// Emitted when reading back the central tracing buffers has been completed.
24613        /// If |write_into_file| is specified, this can happen many times over the
24614        /// course of the trace.
24615        #[prost(bool, tag = "4")]
24616        ReadTracingBuffersCompleted(bool),
24617        /// Emitted after tracing has been disabled and specifically, this will be
24618        /// after all packets from producers have been included in the central
24619        /// tracing buffer.
24620        #[prost(bool, tag = "5")]
24621        TracingDisabled(bool),
24622        /// Emitted if perfetto --save-for-bugreport was invoked while the current
24623        /// tracing session was running and it had the highest bugreport_score. In
24624        /// this case the original consumer will see a nearly empty trace, because
24625        /// the contents are routed onto the bugreport file. This event flags the
24626        /// situation explicitly. Traces that contain this marker should be discarded
24627        /// by test infrastructures / pipelines.
24628        /// Deprecated since Android U, where --save-for-bugreport uses
24629        /// non-destructive cloning.
24630        #[prost(bool, tag = "6")]
24631        SeizedForBugreport(bool),
24632        /// Emitted when not all data sources in all producers reply to a start
24633        /// request after some time.
24634        #[prost(message, tag = "7")]
24635        SlowStartingDataSources(DataSources),
24636        /// Emitted when the last flush request has failed. Lists data sources that
24637        /// did not reply on time.
24638        #[prost(message, tag = "8")]
24639        LastFlushSlowDataSources(DataSources),
24640        /// If this was a cloned tracing session, emitted when the tracing serice
24641        /// started the clone operation.
24642        #[prost(bool, tag = "10")]
24643        CloneStarted(bool),
24644        /// If this was a cloned tracing session, emitted when the tracing service
24645        /// finished the clone operation (for a specific buffer).
24646        #[prost(uint32, tag = "11")]
24647        BufferCloned(u32),
24648    }
24649}
24650/// Stats for the tracing v2 ring buffer of one producer since connection.
24651/// The service emits one packet for each connected producer that has a data
24652/// source in the session and an attached ring buffer. A producer that only uses
24653/// the SMB has no stats packet. A cloned session keeps the stats from the time
24654/// of the clone.
24655///
24656/// These stats include producer identity, so they are separate from TraceStats
24657/// and pass through the session's trace filter.
24658///
24659/// Next id: 22.
24660#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24661pub struct ExperimentalTracingV2ProducerStats {
24662    /// The producer that owns the ring buffer.
24663    #[prost(uint32, optional, tag = "1")]
24664    pub producer_id: ::core::option::Option<u32>,
24665    #[prost(int32, optional, tag = "2")]
24666    pub pid: ::core::option::Option<i32>,
24667    #[prost(string, optional, tag = "3")]
24668    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
24669    /// Layout of the attached ring buffer.
24670    #[prost(uint32, optional, tag = "4")]
24671    pub chunk_size_bytes: ::core::option::Option<u32>,
24672    #[prost(uint32, optional, tag = "5")]
24673    pub num_chunks: ::core::option::Option<u32>,
24674    /// Num. chunks that the service copied out of the ring buffer.
24675    #[prost(uint64, optional, tag = "6")]
24676    pub chunks_read: ::core::option::Option<u64>,
24677    /// Total size of the packet fragments in |chunks_read|. It excludes the
24678    /// chunk headers and the fragment sizes.
24679    #[prost(uint64, optional, tag = "7")]
24680    pub bytes_read: ::core::option::Option<u64>,
24681    /// Num. chunks discarded because their writer marked them as lossy.
24682    /// A writer marks the next chunk it gets after it dropped data, e.g. when
24683    /// the ring buffer was full.
24684    #[prost(uint64, optional, tag = "8")]
24685    pub data_loss_chunks: ::core::option::Option<u64>,
24686    /// Num. chunks discarded because the sizes of their fragments are invalid.
24687    /// Either a size cannot be decoded, or the fragments do not fit in the
24688    /// chunk. A nonzero value points to a writer bug or to corrupt memory.
24689    #[prost(uint64, optional, tag = "9")]
24690    pub malformed_chunks: ::core::option::Option<u64>,
24691    /// Num. chunks discarded because the service does not know their format.
24692    #[prost(uint64, optional, tag = "10")]
24693    pub unsupported_format_chunks: ::core::option::Option<u64>,
24694    /// The chunk's writer ID was zero or out of range.
24695    #[prost(uint64, optional, tag = "11")]
24696    pub invalid_writer_chunks: ::core::option::Option<u64>,
24697    /// The chunk's target buffer is not a TraceBuffer that the producer can
24698    /// write to.
24699    #[prost(uint64, optional, tag = "12")]
24700    pub invalid_destination_chunks: ::core::option::Option<u64>,
24701    /// The trace buffer refused the chunk. Its BufferStats say why, in
24702    /// |abi_violations| or |chunks_discarded|.
24703    #[prost(uint64, optional, tag = "13")]
24704    pub trace_buffer_rejected_chunks: ::core::option::Option<u64>,
24705    /// Num. chunks that the service read while their writer was still filling
24706    /// them. The writer then moves its open fragment to another chunk.
24707    #[prost(uint64, optional, tag = "14")]
24708    pub rewrite_requests: ::core::option::Option<u64>,
24709    /// Num. ring buffer positions that gave no chunk to the service. They are
24710    /// positions that no writer claimed, chunks with no published fragment and
24711    /// the discarded chunks above.
24712    #[prost(uint64, optional, tag = "15")]
24713    pub positions_skipped: ::core::option::Option<u64>,
24714    /// Num. times the service read the ring buffer. It reads it when the
24715    /// producer sends a DrainV2RingBuffer request, on its own (e.g. on a
24716    /// flush), and to retry a pass that stopped early.
24717    #[prost(uint64, optional, tag = "16")]
24718    pub drain_passes: ::core::option::Option<u64>,
24719    /// Time that the service spent in |drain_passes|, measured with
24720    /// CLOCK_MONOTONIC. It does not count time when the device was suspended.
24721    #[prost(uint64, optional, tag = "17")]
24722    pub drain_time_ns: ::core::option::Option<u64>,
24723    /// Time of the longest of |drain_passes|, on the same clock. The service
24724    /// has one main thread, so a long pass delays every other producer and
24725    /// request.
24726    #[prost(uint64, optional, tag = "18")]
24727    pub drain_max_time_ns: ::core::option::Option<u64>,
24728    /// Num. packets that the writers dropped before the packets reached a
24729    /// chunk. This includes packets dropped before the service attached the
24730    /// ring buffer. A writer adds its drops when it flushes or stops dropping,
24731    /// so the value can lag.
24732    #[prost(uint64, optional, tag = "19")]
24733    pub writer_dropped_packets: ::core::option::Option<u64>,
24734    /// Num. times a writer waited for a free chunk, and the total time of those
24735    /// waits. This is time that the app's threads were blocked. A writer checks
24736    /// again after about 100 ms, so a longer stall counts several times.
24737    #[prost(uint64, optional, tag = "20")]
24738    pub writer_stalls: ::core::option::Option<u64>,
24739    #[prost(uint64, optional, tag = "21")]
24740    pub writer_stall_time_ms: ::core::option::Option<u64>,
24741}
24742/// Energy consumer based on aidl class:
24743/// android.hardware.power.stats.EnergyConsumer.
24744#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24745pub struct AndroidEnergyConsumer {
24746    /// Unique ID of this energy consumer.  Matches the ID in a
24747    /// AndroidEnergyEstimationBreakdown.
24748    #[prost(int32, optional, tag = "1")]
24749    pub energy_consumer_id: ::core::option::Option<i32>,
24750    /// For a group of energy consumers of the same logical type, sorting by
24751    /// ordinal gives their physical order. Ordinals must be consecutive integers
24752    /// starting from 0.
24753    #[prost(int32, optional, tag = "2")]
24754    pub ordinal: ::core::option::Option<i32>,
24755    /// Type of this energy consumer.
24756    #[prost(string, optional, tag = "3")]
24757    pub r#type: ::core::option::Option<::prost::alloc::string::String>,
24758    /// Unique name of this energy consumer. Vendor/device specific. Opaque to
24759    /// framework.
24760    #[prost(string, optional, tag = "4")]
24761    pub name: ::core::option::Option<::prost::alloc::string::String>,
24762}
24763#[derive(Clone, PartialEq, ::prost::Message)]
24764pub struct AndroidEnergyConsumerDescriptor {
24765    #[prost(message, repeated, tag = "1")]
24766    pub energy_consumers: ::prost::alloc::vec::Vec<AndroidEnergyConsumer>,
24767}
24768/// Energy data retrieve using the ODPM(On Device Power Monitor) API.
24769/// This proto represents the aidl class:
24770/// android.hardware.power.stats.EnergyConsumerResult.
24771#[derive(Clone, PartialEq, ::prost::Message)]
24772pub struct AndroidEnergyEstimationBreakdown {
24773    /// The first trace packet of each session should include a energy consumer
24774    /// descriptor.
24775    #[prost(message, optional, tag = "1")]
24776    pub energy_consumer_descriptor: ::core::option::Option<
24777        AndroidEnergyConsumerDescriptor,
24778    >,
24779    /// ID of the AndroidEnergyConsumer associated with this result.  Matches
24780    /// the energy_consumer_id in the AndroidEnergyConsumerDescriptor that
24781    /// should be sent at the beginning of a trace.
24782    #[prost(int32, optional, tag = "2")]
24783    pub energy_consumer_id: ::core::option::Option<i32>,
24784    /// Total accumulated energy since boot in microwatt-seconds (uWs)
24785    #[prost(int64, optional, tag = "3")]
24786    pub energy_uws: ::core::option::Option<i64>,
24787    /// Optional attributed energy per Android ID / Linux UID for this
24788    /// EnergyConsumer. Sum total of attributed energy must be less than or equal
24789    /// to total accumulated energy.
24790    #[prost(message, repeated, tag = "4")]
24791    pub per_uid_breakdown: ::prost::alloc::vec::Vec<
24792        android_energy_estimation_breakdown::EnergyUidBreakdown,
24793    >,
24794}
24795/// Nested message and enum types in `AndroidEnergyEstimationBreakdown`.
24796pub mod android_energy_estimation_breakdown {
24797    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24798    pub struct EnergyUidBreakdown {
24799        /// Android ID/Linux UID, the accumulated energy is attributed to.
24800        #[prost(int32, optional, tag = "1")]
24801        pub uid: ::core::option::Option<i32>,
24802        /// Accumulated energy since boot in microwatt-seconds (uWs).
24803        #[prost(int64, optional, tag = "2")]
24804        pub energy_uws: ::core::option::Option<i64>,
24805    }
24806}
24807#[derive(Clone, PartialEq, ::prost::Message)]
24808pub struct EntityStateResidency {
24809    /// This is only emitted at the beginning of the trace.
24810    #[prost(message, repeated, tag = "1")]
24811    pub power_entity_state: ::prost::alloc::vec::Vec<
24812        entity_state_residency::PowerEntityState,
24813    >,
24814    #[prost(message, repeated, tag = "2")]
24815    pub residency: ::prost::alloc::vec::Vec<entity_state_residency::StateResidency>,
24816}
24817/// Nested message and enum types in `EntityStateResidency`.
24818pub mod entity_state_residency {
24819    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24820    pub struct PowerEntityState {
24821        /// Index corresponding to the entity
24822        #[prost(int32, optional, tag = "1")]
24823        pub entity_index: ::core::option::Option<i32>,
24824        /// Index corresponding to the state
24825        #[prost(int32, optional, tag = "2")]
24826        pub state_index: ::core::option::Option<i32>,
24827        /// Name of the entity. This is device-specific, determined by the PowerStats
24828        /// HAL, and cannot be configured by the user. An example would be
24829        /// "Bluetooth".
24830        #[prost(string, optional, tag = "3")]
24831        pub entity_name: ::core::option::Option<::prost::alloc::string::String>,
24832        /// Name of the state. This is device-specific, determined by the PowerStats
24833        /// HAL, and cannot be configured by the user. An example would be
24834        /// "Active".
24835        #[prost(string, optional, tag = "4")]
24836        pub state_name: ::core::option::Option<::prost::alloc::string::String>,
24837    }
24838    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24839    pub struct StateResidency {
24840        /// Index corresponding to PowerEntityState.entity_index
24841        #[prost(int32, optional, tag = "1")]
24842        pub entity_index: ::core::option::Option<i32>,
24843        /// Index corresponding to PowerEntityState.state_index
24844        #[prost(int32, optional, tag = "2")]
24845        pub state_index: ::core::option::Option<i32>,
24846        /// Time since boot that this entity has been in this state
24847        #[prost(uint64, optional, tag = "3")]
24848        pub total_time_in_state_ms: ::core::option::Option<u64>,
24849        /// Total number of times since boot that the entity has entered this state
24850        #[prost(uint64, optional, tag = "4")]
24851        pub total_state_entry_count: ::core::option::Option<u64>,
24852        /// Timestamp of the last time the entity entered this state
24853        #[prost(uint64, optional, tag = "5")]
24854        pub last_entry_timestamp_ms: ::core::option::Option<u64>,
24855    }
24856}
24857#[derive(Clone, PartialEq, ::prost::Message)]
24858pub struct BatteryCounters {
24859    /// Battery capacity in microampere-hours(µAh). Also known as Coulomb counter.
24860    #[prost(int64, optional, tag = "1")]
24861    pub charge_counter_uah: ::core::option::Option<i64>,
24862    /// Remaining battery capacity percentage of total capacity
24863    #[prost(float, optional, tag = "2")]
24864    pub capacity_percent: ::core::option::Option<f32>,
24865    /// Instantaneous battery current in microamperes(µA).
24866    /// Negative values indicate current being drained from the battery and
24867    /// positive values indicate current feeding the battery from a charge source
24868    /// (USB).
24869    ///
24870    /// See <https://perfetto.dev/docs/data-sources/battery-counters> for more info.
24871    #[prost(int64, optional, tag = "3")]
24872    pub current_ua: ::core::option::Option<i64>,
24873    /// Instantaneous battery current in microamperes(µA).
24874    #[prost(int64, optional, tag = "4")]
24875    pub current_avg_ua: ::core::option::Option<i64>,
24876    /// Battery name, emitted only on multiple batteries.
24877    #[prost(string, optional, tag = "5")]
24878    pub name: ::core::option::Option<::prost::alloc::string::String>,
24879    /// Battery capacity in microwatt-hours(µWh).
24880    #[prost(int64, optional, tag = "6")]
24881    pub energy_counter_uwh: ::core::option::Option<i64>,
24882    /// Battery voltage in microvolts(µV).
24883    #[prost(int64, optional, tag = "7")]
24884    pub voltage_uv: ::core::option::Option<i64>,
24885}
24886#[derive(Clone, PartialEq, ::prost::Message)]
24887pub struct PowerRails {
24888    /// This is only emitted at the beginning of the trace.
24889    #[prost(message, repeated, tag = "1")]
24890    pub rail_descriptor: ::prost::alloc::vec::Vec<power_rails::RailDescriptor>,
24891    #[prost(message, repeated, tag = "2")]
24892    pub energy_data: ::prost::alloc::vec::Vec<power_rails::EnergyData>,
24893    /// A unique session id that can be used to match energy data to sets of
24894    /// descriptors. The indices used by rail descriptors and energy data packets
24895    /// are meant to be unique to a given session uuid. When multiple data sources
24896    /// are running in parallel, each data source should use a unique id.
24897    #[prost(uint64, optional, tag = "3")]
24898    pub session_uuid: ::core::option::Option<u64>,
24899}
24900/// Nested message and enum types in `PowerRails`.
24901pub mod power_rails {
24902    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24903    pub struct RailDescriptor {
24904        /// Index corresponding to the rail
24905        #[prost(uint32, optional, tag = "1")]
24906        pub index: ::core::option::Option<u32>,
24907        /// Name of the rail
24908        #[prost(string, optional, tag = "2")]
24909        pub rail_name: ::core::option::Option<::prost::alloc::string::String>,
24910        /// Name of the subsystem to which this rail belongs
24911        #[prost(string, optional, tag = "3")]
24912        pub subsys_name: ::core::option::Option<::prost::alloc::string::String>,
24913        /// Hardware sampling rate (Hz).
24914        #[prost(uint32, optional, tag = "4")]
24915        pub sampling_rate: ::core::option::Option<u32>,
24916    }
24917    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24918    pub struct EnergyData {
24919        /// Index corresponding to RailDescriptor.index
24920        #[prost(uint32, optional, tag = "1")]
24921        pub index: ::core::option::Option<u32>,
24922        /// Time since device boot(CLOCK_BOOTTIME) in milli-seconds.
24923        #[prost(uint64, optional, tag = "2")]
24924        pub timestamp_ms: ::core::option::Option<u64>,
24925        /// Accumulated energy since device boot in microwatt-seconds (uWs).
24926        #[prost(uint64, optional, tag = "3")]
24927        pub energy: ::core::option::Option<u64>,
24928    }
24929}
24930#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24931pub struct JavaFrame {
24932    #[prost(string, optional, tag = "1")]
24933    pub method_name: ::core::option::Option<::prost::alloc::string::String>,
24934    #[prost(string, optional, tag = "2")]
24935    pub source_file: ::core::option::Option<::prost::alloc::string::String>,
24936    #[prost(int32, optional, tag = "3")]
24937    pub line_number: ::core::option::Option<i32>,
24938}
24939#[derive(Clone, PartialEq, ::prost::Message)]
24940pub struct JavaStack {
24941    #[prost(message, repeated, tag = "1")]
24942    pub frames: ::prost::alloc::vec::Vec<JavaFrame>,
24943}
24944#[derive(Clone, PartialEq, ::prost::Message)]
24945pub struct ArtProcessMetadata {
24946    #[prost(int32, optional, tag = "1")]
24947    pub pid: ::core::option::Option<i32>,
24948    #[prost(int32, optional, tag = "2")]
24949    pub uid: ::core::option::Option<i32>,
24950    /// /proc/self/cmdline argv0
24951    #[prost(string, optional, tag = "3")]
24952    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
24953    /// Set by VMRuntime.setProcessPackageName
24954    #[prost(string, optional, tag = "4")]
24955    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
24956    /// OutOfMemoryError details (if heap dump was triggered by an OOM)
24957    /// The size of the allocation that ended up failing with OOME
24958    #[prost(uint64, optional, tag = "5")]
24959    pub oom_allocation_size: ::core::option::Option<u64>,
24960    /// Amount of free memory until the runtime would need to grow the heap
24961    #[prost(uint64, optional, tag = "6")]
24962    pub oom_total_bytes_free: ::core::option::Option<u64>,
24963    /// Amount of memory remaining until the max heap size supported
24964    #[prost(uint64, optional, tag = "7")]
24965    pub oom_free_bytes_until_oom: ::core::option::Option<u64>,
24966    /// Stacktrace for the thread doing the failing allocation
24967    #[prost(message, optional, tag = "8")]
24968    pub oom_thread_java_stack: ::core::option::Option<JavaStack>,
24969    /// Full OOME exception message
24970    #[prost(string, optional, tag = "9")]
24971    pub oom_error_msg: ::core::option::Option<::prost::alloc::string::String>,
24972}
24973#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24974pub struct ObfuscatedMember {
24975    /// This is the obfuscated field name relative to the class containing the
24976    /// ObfuscatedMember.
24977    #[prost(string, optional, tag = "1")]
24978    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
24979    /// If this is fully qualified (i.e. contains a '.') this is the deobfuscated
24980    /// field name including its class. Otherwise, this is this the unqualified
24981    /// deobfuscated field name relative to the class containing this
24982    /// ObfuscatedMember.
24983    #[prost(string, optional, tag = "2")]
24984    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
24985    /// R8 inline method support: line number ranges for disambiguation.
24986    /// When multiple methods map to the same obfuscated name, the line number
24987    /// from the stack frame is used to select the correct mapping.
24988    ///
24989    /// Format in R8 mapping: "1:3:void foo():10:12 -> a"
24990    /// - obfuscated_line_start/end = 1:3 (line range in obfuscated code)
24991    /// - source_line_start/end = 10:12 (line range in original source)
24992    ///
24993    /// Methods with the same obfuscated_name and overlapping obfuscated line
24994    /// ranges form an inline chain, ordered innermost (inlined) first.
24995    #[prost(uint32, optional, tag = "3")]
24996    pub obfuscated_line_start: ::core::option::Option<u32>,
24997    #[prost(uint32, optional, tag = "4")]
24998    pub obfuscated_line_end: ::core::option::Option<u32>,
24999    #[prost(uint32, optional, tag = "5")]
25000    pub source_line_start: ::core::option::Option<u32>,
25001    #[prost(uint32, optional, tag = "6")]
25002    pub source_line_end: ::core::option::Option<u32>,
25003}
25004#[derive(Clone, PartialEq, ::prost::Message)]
25005pub struct ObfuscatedClass {
25006    #[prost(string, optional, tag = "1")]
25007    pub obfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
25008    #[prost(string, optional, tag = "2")]
25009    pub deobfuscated_name: ::core::option::Option<::prost::alloc::string::String>,
25010    /// fields.
25011    #[prost(message, repeated, tag = "3")]
25012    pub obfuscated_members: ::prost::alloc::vec::Vec<ObfuscatedMember>,
25013    #[prost(message, repeated, tag = "4")]
25014    pub obfuscated_methods: ::prost::alloc::vec::Vec<ObfuscatedMember>,
25015    #[prost(message, optional, tag = "5")]
25016    pub merged_classes: ::core::option::Option<obfuscated_class::MergedClasses>,
25017}
25018/// Nested message and enum types in `ObfuscatedClass`.
25019pub mod obfuscated_class {
25020    /// Information about a single class merged by optimization into this
25021    /// obfuscated class.
25022    #[derive(Clone, PartialEq, ::prost::Message)]
25023    pub struct MergedClass {
25024        #[prost(string, optional, tag = "1")]
25025        pub name: ::core::option::Option<::prost::alloc::string::String>,
25026        #[prost(int32, optional, tag = "2")]
25027        pub class_id: ::core::option::Option<i32>,
25028        #[prost(message, optional, tag = "3")]
25029        pub merged_classes: ::core::option::Option<MergedClasses>,
25030    }
25031    /// Set of classes merged into this obfuscated class by optimization.
25032    #[derive(Clone, PartialEq, ::prost::Message)]
25033    pub struct MergedClasses {
25034        #[prost(string, optional, tag = "1")]
25035        pub class_id_field_name: ::core::option::Option<::prost::alloc::string::String>,
25036        #[prost(message, repeated, tag = "2")]
25037        pub merged_classes: ::prost::alloc::vec::Vec<MergedClass>,
25038        /// Set to true if other unknown classes may have been merged into this
25039        /// class by optimization (e.g. when using older R8 mapping versions that
25040        /// do not emit mergedClasses metadata).
25041        #[prost(bool, optional, tag = "3")]
25042        pub unknown_merged_classes: ::core::option::Option<bool>,
25043    }
25044}
25045#[derive(Clone, PartialEq, ::prost::Message)]
25046pub struct DeobfuscationMapping {
25047    #[prost(string, optional, tag = "1")]
25048    pub package_name: ::core::option::Option<::prost::alloc::string::String>,
25049    #[prost(int64, optional, tag = "2")]
25050    pub version_code: ::core::option::Option<i64>,
25051    #[prost(message, repeated, tag = "3")]
25052    pub obfuscated_classes: ::prost::alloc::vec::Vec<ObfuscatedClass>,
25053}
25054/// This file contains a mixture of messages emitted by various sampling
25055/// profilers:
25056///
25057/// Memory allocator profiling
25058/// ----------------
25059/// ProfilePacket:
25060///    The packet emitted by heapprofd, which started off as a native heap
25061///    (malloc/free) profiler, but now supports custom allocators as well. Each
25062///    packet contains a preaggregated state of the heap at snapshot time, which
25063///    report the total allocated/free bytes per callstack (plus other info such
25064///    as the number of samples).
25065/// StreamingAllocation/StreamingFree:
25066///    Emitted by heapprofd when configured in streaming mode (i.e. when
25067///    stream_allocations = true). This is only for local testing, and doesn't
25068///    report callstacks (only address time and size of each alloc/free). It can
25069///    lead to enormous traces, as it contains the stream of each alloc/free call.
25070///
25071/// Callstack sampling
25072/// ------------------
25073/// StreamingProfilePacket:
25074///    The packet emitted by the chromium in-process sampling profiler, which is
25075///    based on periodically sending a signal to itself, and unwinding the stack
25076///    in the signal handler. Each packet contains a series of individual stack
25077///    samples for a Chromium thread.
25078///
25079/// Callstack and performance counter sampling
25080/// ---------------------
25081/// PerfSample:
25082///    The packet emitted by traced_perf sampling performance profiler based on
25083///    the perf_event_open syscall. Each packet represents an individual sample
25084///    of a performance counter (which might be a timer), and optionally a
25085///    callstack of the process that was scheduled at the time of the sample.
25086///
25087/// The packet emitted by heapprofd for each heap snapshot. A snapshot can
25088/// involve more than one ProfilePacket if the snapshot is big (when |continued|
25089/// is true). The cardinality and grouping is as follows:
25090/// A ProfilePacket contains:
25091///   - 1+ per-process heap snapshots (ProcessHeapSamples). Normally there is only
25092///     one heap per process (the main malloc/free heap), but there can be more if
25093///     the process is using the heapprofd API to profile custom allocators.
25094///   - Globally interned strings, mappings and frames (to allow de-duplicating
25095///     frames/mapping in common between different processes).
25096/// A ProcessHeapSamples contains:
25097///   - The process and heap identifier.
25098///   - A number of HeapSample, one for each callsite that had some alloc/frees.
25099///   - Statistics about heapprofd internals (e.g., sampling/unwinding timings).
25100/// A HeapSample contains statistics about callsites:
25101///   - Total number of bytes allocated and freed from that callsite.
25102///   - Total number of alloc/free calls sampled.
25103///   - Stats at the local maximum when dump_at_max = true.
25104/// See <https://perfetto.dev/docs/data-sources/native-heap-profiler> for more.
25105#[derive(Clone, PartialEq, ::prost::Message)]
25106pub struct ProfilePacket {
25107    /// The following interning tables are only used in Android version Q.
25108    /// In newer versions, these tables are in InternedData
25109    /// (see protos/perfetto/trace/interned_data) and are shared across
25110    /// multiple ProfilePackets.
25111    /// For backwards compatibility, consumers need to first look up interned
25112    /// data in the tables within the ProfilePacket, and then, if they are empty,
25113    /// look up in the InternedData instead.
25114    #[prost(message, repeated, tag = "1")]
25115    pub strings: ::prost::alloc::vec::Vec<InternedString>,
25116    #[prost(message, repeated, tag = "4")]
25117    pub mappings: ::prost::alloc::vec::Vec<Mapping>,
25118    #[prost(message, repeated, tag = "2")]
25119    pub frames: ::prost::alloc::vec::Vec<Frame>,
25120    #[prost(message, repeated, tag = "3")]
25121    pub callstacks: ::prost::alloc::vec::Vec<Callstack>,
25122    #[prost(message, repeated, tag = "5")]
25123    pub process_dumps: ::prost::alloc::vec::Vec<profile_packet::ProcessHeapSamples>,
25124    /// If this is true, the next ProfilePacket in this package_sequence_id is a
25125    /// continuation of this one.
25126    /// To get all samples for a process, accummulate its
25127    /// ProcessHeapSamples.samples until you see continued=false.
25128    #[prost(bool, optional, tag = "6")]
25129    pub continued: ::core::option::Option<bool>,
25130    /// Index of this ProfilePacket on its package_sequence_id. Can be used
25131    /// to detect dropped data.
25132    /// Verify these are consecutive.
25133    #[prost(uint64, optional, tag = "7")]
25134    pub index: ::core::option::Option<u64>,
25135}
25136/// Nested message and enum types in `ProfilePacket`.
25137pub mod profile_packet {
25138    /// Next ID: 9
25139    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25140    pub struct HeapSample {
25141        #[prost(uint64, optional, tag = "1")]
25142        pub callstack_id: ::core::option::Option<u64>,
25143        /// bytes allocated at this callstack.
25144        #[prost(uint64, optional, tag = "2")]
25145        pub self_allocated: ::core::option::Option<u64>,
25146        /// bytes allocated at this callstack that have been freed.
25147        #[prost(uint64, optional, tag = "3")]
25148        pub self_freed: ::core::option::Option<u64>,
25149        /// Bytes allocated by this callstack but not freed at the time the malloc
25150        /// heap usage of this process was maximal. This is only set if dump_at_max
25151        /// is true in HeapprofdConfig. In that case, self_allocated, self_freed and
25152        /// self_idle will not be set.
25153        #[prost(uint64, optional, tag = "8")]
25154        pub self_max: ::core::option::Option<u64>,
25155        /// Number of allocations that were sampled at this callstack but not freed
25156        /// at the time the malloc heap usage of this process was maximal. This is
25157        /// only set if dump_at_max is true in HeapprofdConfig. In that case,
25158        /// self_allocated, self_freed and self_idle will not be set.
25159        #[prost(uint64, optional, tag = "9")]
25160        pub self_max_count: ::core::option::Option<u64>,
25161        /// timestamp \[opt\]
25162        #[prost(uint64, optional, tag = "4")]
25163        pub timestamp: ::core::option::Option<u64>,
25164        /// Number of allocations that were sampled at this callstack.
25165        #[prost(uint64, optional, tag = "5")]
25166        pub alloc_count: ::core::option::Option<u64>,
25167        /// Number of allocations that were sampled at this callstack that have been
25168        /// freed.
25169        #[prost(uint64, optional, tag = "6")]
25170        pub free_count: ::core::option::Option<u64>,
25171    }
25172    #[derive(Clone, PartialEq, ::prost::Message)]
25173    pub struct Histogram {
25174        #[prost(message, repeated, tag = "1")]
25175        pub buckets: ::prost::alloc::vec::Vec<histogram::Bucket>,
25176    }
25177    /// Nested message and enum types in `Histogram`.
25178    pub mod histogram {
25179        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25180        pub struct Bucket {
25181            /// This bucket counts values from the previous bucket's (or -infinity if
25182            /// this is the first bucket) upper_limit (inclusive) to this upper_limit
25183            /// (exclusive).
25184            #[prost(uint64, optional, tag = "1")]
25185            pub upper_limit: ::core::option::Option<u64>,
25186            /// This is the highest bucket. This is set instead of the upper_limit. Any
25187            /// values larger or equal to the previous bucket's upper_limit are counted
25188            /// in this bucket.
25189            #[prost(bool, optional, tag = "2")]
25190            pub max_bucket: ::core::option::Option<bool>,
25191            /// Number of values that fall into this range.
25192            #[prost(uint64, optional, tag = "3")]
25193            pub count: ::core::option::Option<u64>,
25194        }
25195    }
25196    #[derive(Clone, PartialEq, ::prost::Message)]
25197    pub struct ProcessStats {
25198        #[prost(uint64, optional, tag = "1")]
25199        pub unwinding_errors: ::core::option::Option<u64>,
25200        #[prost(uint64, optional, tag = "2")]
25201        pub heap_samples: ::core::option::Option<u64>,
25202        #[prost(uint64, optional, tag = "3")]
25203        pub map_reparses: ::core::option::Option<u64>,
25204        #[prost(message, optional, tag = "4")]
25205        pub unwinding_time_us: ::core::option::Option<Histogram>,
25206        #[prost(uint64, optional, tag = "5")]
25207        pub total_unwinding_time_us: ::core::option::Option<u64>,
25208        #[prost(uint64, optional, tag = "6")]
25209        pub client_spinlock_blocked_us: ::core::option::Option<u64>,
25210    }
25211    #[derive(Clone, PartialEq, ::prost::Message)]
25212    pub struct ProcessHeapSamples {
25213        #[prost(uint64, optional, tag = "1")]
25214        pub pid: ::core::option::Option<u64>,
25215        /// This process was profiled from startup.
25216        /// If false, this process was already running when profiling started.
25217        #[prost(bool, optional, tag = "3")]
25218        pub from_startup: ::core::option::Option<bool>,
25219        /// This process was not profiled because a concurrent session was active.
25220        /// If this is true, samples will be empty.
25221        #[prost(bool, optional, tag = "4")]
25222        pub rejected_concurrent: ::core::option::Option<bool>,
25223        /// This process disconnected while it was profiled.
25224        /// If false, the process outlived the profiling session.
25225        #[prost(bool, optional, tag = "6")]
25226        pub disconnected: ::core::option::Option<bool>,
25227        /// If disconnected, this disconnect was caused by the client overrunning
25228        /// the buffer.
25229        /// Equivalent to client_error == CLIENT_ERROR_HIT_TIMEOUT
25230        /// on new S builds.
25231        #[prost(bool, optional, tag = "7")]
25232        pub buffer_overran: ::core::option::Option<bool>,
25233        #[prost(enumeration = "process_heap_samples::ClientError", optional, tag = "14")]
25234        pub client_error: ::core::option::Option<i32>,
25235        /// If disconnected, this disconnected was caused by the shared memory
25236        /// buffer being corrupted. THIS IS ALWAYS A BUG IN HEAPPROFD OR CLIENT
25237        /// MEMORY CORRUPTION.
25238        #[prost(bool, optional, tag = "8")]
25239        pub buffer_corrupted: ::core::option::Option<bool>,
25240        /// If disconnected, this disconnect was caused by heapprofd exceeding
25241        /// guardrails during this profiling session.
25242        #[prost(bool, optional, tag = "10")]
25243        pub hit_guardrail: ::core::option::Option<bool>,
25244        #[prost(string, optional, tag = "11")]
25245        pub heap_name: ::core::option::Option<::prost::alloc::string::String>,
25246        #[prost(uint64, optional, tag = "12")]
25247        pub sampling_interval_bytes: ::core::option::Option<u64>,
25248        #[prost(uint64, optional, tag = "13")]
25249        pub orig_sampling_interval_bytes: ::core::option::Option<u64>,
25250        /// Timestamp of the state of the target process that this dump represents,
25251        /// i.e. the end of the interval covered by the dump (|start_timestamp| is
25252        /// the start). This can be different to the timestamp of the TracePackets
25253        /// for various reasons:
25254        /// * If disconnected is set above, this is the timestamp of last state
25255        ///    heapprofd had of the process before it disconnected.
25256        /// * Otherwise, if the rate of events produced by the process is high,
25257        ///    heapprofd might be behind.
25258        ///
25259        /// TODO(fmayer): This is MONOTONIC_COARSE. Refactor ClockSnapshot::Clock
25260        ///                to have a type enum that we can reuse here.
25261        #[prost(uint64, optional, tag = "9")]
25262        pub timestamp: ::core::option::Option<u64>,
25263        /// Start of the interval this dump covers (|timestamp| is the end): the
25264        /// profiling start for the first dump, the previous dump's timestamp
25265        /// afterwards. Same clock as |timestamp|. Unset on older producers.
25266        #[prost(uint64, optional, tag = "15")]
25267        pub start_timestamp: ::core::option::Option<u64>,
25268        /// Metadata about heapprofd.
25269        #[prost(message, optional, tag = "5")]
25270        pub stats: ::core::option::Option<ProcessStats>,
25271        #[prost(message, repeated, tag = "2")]
25272        pub samples: ::prost::alloc::vec::Vec<HeapSample>,
25273    }
25274    /// Nested message and enum types in `ProcessHeapSamples`.
25275    pub mod process_heap_samples {
25276        #[derive(
25277            Clone,
25278            Copy,
25279            Debug,
25280            PartialEq,
25281            Eq,
25282            Hash,
25283            PartialOrd,
25284            Ord,
25285            ::prost::Enumeration
25286        )]
25287        #[repr(i32)]
25288        pub enum ClientError {
25289            None = 0,
25290            HitTimeout = 1,
25291            InvalidStackBounds = 2,
25292        }
25293        impl ClientError {
25294            /// String value of the enum field names used in the ProtoBuf definition.
25295            ///
25296            /// The values are not transformed in any way and thus are considered stable
25297            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25298            pub fn as_str_name(&self) -> &'static str {
25299                match self {
25300                    Self::None => "CLIENT_ERROR_NONE",
25301                    Self::HitTimeout => "CLIENT_ERROR_HIT_TIMEOUT",
25302                    Self::InvalidStackBounds => "CLIENT_ERROR_INVALID_STACK_BOUNDS",
25303                }
25304            }
25305            /// Creates an enum from field names used in the ProtoBuf definition.
25306            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25307                match value {
25308                    "CLIENT_ERROR_NONE" => Some(Self::None),
25309                    "CLIENT_ERROR_HIT_TIMEOUT" => Some(Self::HitTimeout),
25310                    "CLIENT_ERROR_INVALID_STACK_BOUNDS" => Some(Self::InvalidStackBounds),
25311                    _ => None,
25312                }
25313            }
25314        }
25315    }
25316}
25317/// Packet emitted by heapprofd when stream_allocations = true. Only for local
25318/// testing. Doesn't report the callsite.
25319#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25320pub struct StreamingAllocation {
25321    /// TODO(fmayer): Add callstack.
25322    #[prost(uint64, repeated, packed = "false", tag = "1")]
25323    pub address: ::prost::alloc::vec::Vec<u64>,
25324    #[prost(uint64, repeated, packed = "false", tag = "2")]
25325    pub size: ::prost::alloc::vec::Vec<u64>,
25326    #[prost(uint64, repeated, packed = "false", tag = "3")]
25327    pub sample_size: ::prost::alloc::vec::Vec<u64>,
25328    #[prost(uint64, repeated, packed = "false", tag = "4")]
25329    pub clock_monotonic_coarse_timestamp: ::prost::alloc::vec::Vec<u64>,
25330    #[prost(uint32, repeated, packed = "false", tag = "5")]
25331    pub heap_id: ::prost::alloc::vec::Vec<u32>,
25332    #[prost(uint64, repeated, packed = "false", tag = "6")]
25333    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
25334}
25335/// Packet emitted by heapprofd when stream_allocations = true. Only for local
25336/// testing. Doesn't report the callsite.
25337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25338pub struct StreamingFree {
25339    /// TODO(fmayer): Add callstack.
25340    #[prost(uint64, repeated, packed = "false", tag = "1")]
25341    pub address: ::prost::alloc::vec::Vec<u64>,
25342    #[prost(uint32, repeated, packed = "false", tag = "2")]
25343    pub heap_id: ::prost::alloc::vec::Vec<u32>,
25344    #[prost(uint64, repeated, packed = "false", tag = "3")]
25345    pub sequence_number: ::prost::alloc::vec::Vec<u64>,
25346}
25347/// Packet emitted by the chromium in-process signal-based callstack sampler.
25348/// Represents a series of individual stack samples (sampled at discrete points
25349/// in time), rather than aggregated over an interval.
25350#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25351pub struct StreamingProfilePacket {
25352    /// Index into InternedData.callstacks
25353    #[prost(uint64, repeated, packed = "false", tag = "1")]
25354    pub callstack_iid: ::prost::alloc::vec::Vec<u64>,
25355    /// TODO(eseckler): ThreadDescriptor-based timestamps are deprecated. Replace
25356    /// this with ClockSnapshot-based delta encoding instead.
25357    #[prost(int64, repeated, packed = "false", tag = "2")]
25358    pub timestamp_delta_us: ::prost::alloc::vec::Vec<i64>,
25359    #[prost(int32, optional, tag = "3")]
25360    pub process_priority: ::core::option::Option<i32>,
25361}
25362/// Namespace for the contained enums.
25363#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25364pub struct Profiling {}
25365/// Nested message and enum types in `Profiling`.
25366pub mod profiling {
25367    #[derive(
25368        Clone,
25369        Copy,
25370        Debug,
25371        PartialEq,
25372        Eq,
25373        Hash,
25374        PartialOrd,
25375        Ord,
25376        ::prost::Enumeration
25377    )]
25378    #[repr(i32)]
25379    pub enum CpuMode {
25380        ModeUnknown = 0,
25381        ModeKernel = 1,
25382        ModeUser = 2,
25383        /// The following values aren't expected, but included for completeness:
25384        ModeHypervisor = 3,
25385        ModeGuestKernel = 4,
25386        ModeGuestUser = 5,
25387    }
25388    impl CpuMode {
25389        /// String value of the enum field names used in the ProtoBuf definition.
25390        ///
25391        /// The values are not transformed in any way and thus are considered stable
25392        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25393        pub fn as_str_name(&self) -> &'static str {
25394            match self {
25395                Self::ModeUnknown => "MODE_UNKNOWN",
25396                Self::ModeKernel => "MODE_KERNEL",
25397                Self::ModeUser => "MODE_USER",
25398                Self::ModeHypervisor => "MODE_HYPERVISOR",
25399                Self::ModeGuestKernel => "MODE_GUEST_KERNEL",
25400                Self::ModeGuestUser => "MODE_GUEST_USER",
25401            }
25402        }
25403        /// Creates an enum from field names used in the ProtoBuf definition.
25404        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25405            match value {
25406                "MODE_UNKNOWN" => Some(Self::ModeUnknown),
25407                "MODE_KERNEL" => Some(Self::ModeKernel),
25408                "MODE_USER" => Some(Self::ModeUser),
25409                "MODE_HYPERVISOR" => Some(Self::ModeHypervisor),
25410                "MODE_GUEST_KERNEL" => Some(Self::ModeGuestKernel),
25411                "MODE_GUEST_USER" => Some(Self::ModeGuestUser),
25412                _ => None,
25413            }
25414        }
25415    }
25416    /// Enumeration of libunwindstack's error codes.
25417    /// NB: the integral representations of the two enums are different.
25418    #[derive(
25419        Clone,
25420        Copy,
25421        Debug,
25422        PartialEq,
25423        Eq,
25424        Hash,
25425        PartialOrd,
25426        Ord,
25427        ::prost::Enumeration
25428    )]
25429    #[repr(i32)]
25430    pub enum StackUnwindError {
25431        UnwindErrorUnknown = 0,
25432        UnwindErrorNone = 1,
25433        UnwindErrorMemoryInvalid = 2,
25434        UnwindErrorUnwindInfo = 3,
25435        UnwindErrorUnsupported = 4,
25436        UnwindErrorInvalidMap = 5,
25437        UnwindErrorMaxFramesExceeded = 6,
25438        UnwindErrorRepeatedFrame = 7,
25439        UnwindErrorInvalidElf = 8,
25440        UnwindErrorSystemCall = 9,
25441        UnwindErrorThreadTimeout = 10,
25442        UnwindErrorThreadDoesNotExist = 11,
25443        UnwindErrorBadArch = 12,
25444        UnwindErrorMapsParse = 13,
25445        UnwindErrorInvalidParameter = 14,
25446        UnwindErrorPtraceCall = 15,
25447    }
25448    impl StackUnwindError {
25449        /// String value of the enum field names used in the ProtoBuf definition.
25450        ///
25451        /// The values are not transformed in any way and thus are considered stable
25452        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25453        pub fn as_str_name(&self) -> &'static str {
25454            match self {
25455                Self::UnwindErrorUnknown => "UNWIND_ERROR_UNKNOWN",
25456                Self::UnwindErrorNone => "UNWIND_ERROR_NONE",
25457                Self::UnwindErrorMemoryInvalid => "UNWIND_ERROR_MEMORY_INVALID",
25458                Self::UnwindErrorUnwindInfo => "UNWIND_ERROR_UNWIND_INFO",
25459                Self::UnwindErrorUnsupported => "UNWIND_ERROR_UNSUPPORTED",
25460                Self::UnwindErrorInvalidMap => "UNWIND_ERROR_INVALID_MAP",
25461                Self::UnwindErrorMaxFramesExceeded => "UNWIND_ERROR_MAX_FRAMES_EXCEEDED",
25462                Self::UnwindErrorRepeatedFrame => "UNWIND_ERROR_REPEATED_FRAME",
25463                Self::UnwindErrorInvalidElf => "UNWIND_ERROR_INVALID_ELF",
25464                Self::UnwindErrorSystemCall => "UNWIND_ERROR_SYSTEM_CALL",
25465                Self::UnwindErrorThreadTimeout => "UNWIND_ERROR_THREAD_TIMEOUT",
25466                Self::UnwindErrorThreadDoesNotExist => {
25467                    "UNWIND_ERROR_THREAD_DOES_NOT_EXIST"
25468                }
25469                Self::UnwindErrorBadArch => "UNWIND_ERROR_BAD_ARCH",
25470                Self::UnwindErrorMapsParse => "UNWIND_ERROR_MAPS_PARSE",
25471                Self::UnwindErrorInvalidParameter => "UNWIND_ERROR_INVALID_PARAMETER",
25472                Self::UnwindErrorPtraceCall => "UNWIND_ERROR_PTRACE_CALL",
25473            }
25474        }
25475        /// Creates an enum from field names used in the ProtoBuf definition.
25476        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25477            match value {
25478                "UNWIND_ERROR_UNKNOWN" => Some(Self::UnwindErrorUnknown),
25479                "UNWIND_ERROR_NONE" => Some(Self::UnwindErrorNone),
25480                "UNWIND_ERROR_MEMORY_INVALID" => Some(Self::UnwindErrorMemoryInvalid),
25481                "UNWIND_ERROR_UNWIND_INFO" => Some(Self::UnwindErrorUnwindInfo),
25482                "UNWIND_ERROR_UNSUPPORTED" => Some(Self::UnwindErrorUnsupported),
25483                "UNWIND_ERROR_INVALID_MAP" => Some(Self::UnwindErrorInvalidMap),
25484                "UNWIND_ERROR_MAX_FRAMES_EXCEEDED" => {
25485                    Some(Self::UnwindErrorMaxFramesExceeded)
25486                }
25487                "UNWIND_ERROR_REPEATED_FRAME" => Some(Self::UnwindErrorRepeatedFrame),
25488                "UNWIND_ERROR_INVALID_ELF" => Some(Self::UnwindErrorInvalidElf),
25489                "UNWIND_ERROR_SYSTEM_CALL" => Some(Self::UnwindErrorSystemCall),
25490                "UNWIND_ERROR_THREAD_TIMEOUT" => Some(Self::UnwindErrorThreadTimeout),
25491                "UNWIND_ERROR_THREAD_DOES_NOT_EXIST" => {
25492                    Some(Self::UnwindErrorThreadDoesNotExist)
25493                }
25494                "UNWIND_ERROR_BAD_ARCH" => Some(Self::UnwindErrorBadArch),
25495                "UNWIND_ERROR_MAPS_PARSE" => Some(Self::UnwindErrorMapsParse),
25496                "UNWIND_ERROR_INVALID_PARAMETER" => {
25497                    Some(Self::UnwindErrorInvalidParameter)
25498                }
25499                "UNWIND_ERROR_PTRACE_CALL" => Some(Self::UnwindErrorPtraceCall),
25500                _ => None,
25501            }
25502        }
25503    }
25504}
25505/// Packet emitted by the traced_perf sampling performance profiler, which
25506/// gathers data via the perf_event_open syscall. Each packet contains an
25507/// individual sample with a counter value, and optionally a
25508/// callstack.
25509///
25510/// Timestamps are within the root packet. The config can specify the clock, or
25511/// the implementation will default to CLOCK_MONOTONIC_RAW. Within the Android R
25512/// timeframe, the default was CLOCK_BOOTTIME.
25513///
25514/// There are several distinct views of this message:
25515/// * indication of kernel buffer data loss (kernel_records_lost set)
25516/// * indication of skipped samples (sample_skipped_reason set)
25517/// * notable event in the sampling implementation (producer_event set)
25518/// * normal sample (timebase_count set, typically also callstack_iid)
25519#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25520pub struct PerfSample {
25521    #[prost(uint32, optional, tag = "1")]
25522    pub cpu: ::core::option::Option<u32>,
25523    #[prost(uint32, optional, tag = "2")]
25524    pub pid: ::core::option::Option<u32>,
25525    #[prost(uint32, optional, tag = "3")]
25526    pub tid: ::core::option::Option<u32>,
25527    /// Execution state that the process was sampled at.
25528    #[prost(enumeration = "profiling::CpuMode", optional, tag = "5")]
25529    pub cpu_mode: ::core::option::Option<i32>,
25530    /// Value of the timebase counter (since the event was configured, no deltas).
25531    #[prost(uint64, optional, tag = "6")]
25532    pub timebase_count: ::core::option::Option<u64>,
25533    /// Value of the followers counter (since the event was configured, no deltas).
25534    #[prost(uint64, repeated, packed = "false", tag = "7")]
25535    pub follower_counts: ::prost::alloc::vec::Vec<u64>,
25536    /// Unwound callstack. Might be partial, in which case a synthetic "error"
25537    /// frame is appended, and |unwind_error| is set accordingly.
25538    #[prost(uint64, optional, tag = "4")]
25539    pub callstack_iid: ::core::option::Option<u64>,
25540    /// If set, indicates that this message is not a sample, but rather an
25541    /// indication of data loss in the ring buffer allocated for |cpu|. Such data
25542    /// loss occurs when the kernel has insufficient ring buffer capacity to write
25543    /// a record (which gets discarded). A record in this context is an individual
25544    /// ring buffer entry, and counts more than just sample records.
25545    ///
25546    /// The |timestamp| of the packet corresponds to the time that the producer
25547    /// wrote the packet for trace-sorting purposes alone, and should not be
25548    /// interpreted relative to the sample timestamps. This field is sufficient to
25549    /// detect that *some* kernel data loss happened within the trace, but not the
25550    /// specific time bounds of that loss (which would require tracking precedessor
25551    /// & successor timestamps, which is not deemed necessary at the moment).
25552    #[prost(uint64, optional, tag = "17")]
25553    pub kernel_records_lost: ::core::option::Option<u64>,
25554    #[prost(message, optional, tag = "19")]
25555    pub producer_event: ::core::option::Option<perf_sample::ProducerEvent>,
25556    /// If set, stack unwinding was incomplete due to an error.
25557    /// Unset values should be treated as UNWIND_ERROR_NONE.
25558    #[prost(oneof = "perf_sample::OptionalUnwindError", tags = "16")]
25559    pub optional_unwind_error: ::core::option::Option<perf_sample::OptionalUnwindError>,
25560    #[prost(oneof = "perf_sample::OptionalSampleSkippedReason", tags = "18")]
25561    pub optional_sample_skipped_reason: ::core::option::Option<
25562        perf_sample::OptionalSampleSkippedReason,
25563    >,
25564}
25565/// Nested message and enum types in `PerfSample`.
25566pub mod perf_sample {
25567    /// A notable event within the sampling implementation.
25568    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25569    pub struct ProducerEvent {
25570        #[prost(oneof = "producer_event::OptionalSourceStopReason", tags = "1")]
25571        pub optional_source_stop_reason: ::core::option::Option<
25572            producer_event::OptionalSourceStopReason,
25573        >,
25574    }
25575    /// Nested message and enum types in `ProducerEvent`.
25576    pub mod producer_event {
25577        #[derive(
25578            Clone,
25579            Copy,
25580            Debug,
25581            PartialEq,
25582            Eq,
25583            Hash,
25584            PartialOrd,
25585            Ord,
25586            ::prost::Enumeration
25587        )]
25588        #[repr(i32)]
25589        pub enum DataSourceStopReason {
25590            ProfilerStopUnknown = 0,
25591            ProfilerStopGuardrail = 1,
25592        }
25593        impl DataSourceStopReason {
25594            /// String value of the enum field names used in the ProtoBuf definition.
25595            ///
25596            /// The values are not transformed in any way and thus are considered stable
25597            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25598            pub fn as_str_name(&self) -> &'static str {
25599                match self {
25600                    Self::ProfilerStopUnknown => "PROFILER_STOP_UNKNOWN",
25601                    Self::ProfilerStopGuardrail => "PROFILER_STOP_GUARDRAIL",
25602                }
25603            }
25604            /// Creates an enum from field names used in the ProtoBuf definition.
25605            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25606                match value {
25607                    "PROFILER_STOP_UNKNOWN" => Some(Self::ProfilerStopUnknown),
25608                    "PROFILER_STOP_GUARDRAIL" => Some(Self::ProfilerStopGuardrail),
25609                    _ => None,
25610                }
25611            }
25612        }
25613        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
25614        pub enum OptionalSourceStopReason {
25615            #[prost(enumeration = "DataSourceStopReason", tag = "1")]
25616            SourceStopReason(i32),
25617        }
25618    }
25619    /// If set, indicates that the profiler encountered a sample that was relevant,
25620    /// but was skipped.
25621    #[derive(
25622        Clone,
25623        Copy,
25624        Debug,
25625        PartialEq,
25626        Eq,
25627        Hash,
25628        PartialOrd,
25629        Ord,
25630        ::prost::Enumeration
25631    )]
25632    #[repr(i32)]
25633    pub enum SampleSkipReason {
25634        ProfilerSkipUnknown = 0,
25635        ProfilerSkipReadStage = 1,
25636        ProfilerSkipUnwindStage = 2,
25637        ProfilerSkipUnwindEnqueue = 3,
25638        ProfilerSkipNotInScope = 4,
25639    }
25640    impl SampleSkipReason {
25641        /// String value of the enum field names used in the ProtoBuf definition.
25642        ///
25643        /// The values are not transformed in any way and thus are considered stable
25644        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25645        pub fn as_str_name(&self) -> &'static str {
25646            match self {
25647                Self::ProfilerSkipUnknown => "PROFILER_SKIP_UNKNOWN",
25648                Self::ProfilerSkipReadStage => "PROFILER_SKIP_READ_STAGE",
25649                Self::ProfilerSkipUnwindStage => "PROFILER_SKIP_UNWIND_STAGE",
25650                Self::ProfilerSkipUnwindEnqueue => "PROFILER_SKIP_UNWIND_ENQUEUE",
25651                Self::ProfilerSkipNotInScope => "PROFILER_SKIP_NOT_IN_SCOPE",
25652            }
25653        }
25654        /// Creates an enum from field names used in the ProtoBuf definition.
25655        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25656            match value {
25657                "PROFILER_SKIP_UNKNOWN" => Some(Self::ProfilerSkipUnknown),
25658                "PROFILER_SKIP_READ_STAGE" => Some(Self::ProfilerSkipReadStage),
25659                "PROFILER_SKIP_UNWIND_STAGE" => Some(Self::ProfilerSkipUnwindStage),
25660                "PROFILER_SKIP_UNWIND_ENQUEUE" => Some(Self::ProfilerSkipUnwindEnqueue),
25661                "PROFILER_SKIP_NOT_IN_SCOPE" => Some(Self::ProfilerSkipNotInScope),
25662                _ => None,
25663            }
25664        }
25665    }
25666    /// If set, stack unwinding was incomplete due to an error.
25667    /// Unset values should be treated as UNWIND_ERROR_NONE.
25668    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
25669    pub enum OptionalUnwindError {
25670        #[prost(enumeration = "super::profiling::StackUnwindError", tag = "16")]
25671        UnwindError(i32),
25672    }
25673    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
25674    pub enum OptionalSampleSkippedReason {
25675        #[prost(enumeration = "SampleSkipReason", tag = "18")]
25676        SampleSkippedReason(i32),
25677    }
25678}
25679/// Submessage for TracePacketDefaults.
25680#[derive(Clone, PartialEq, ::prost::Message)]
25681pub struct PerfSampleDefaults {
25682    /// The sampling timebase. Might not be identical to the data source config if
25683    /// the implementation decided to default/override some parameters.
25684    #[prost(message, optional, tag = "1")]
25685    pub timebase: ::core::option::Option<perf_events::Timebase>,
25686    /// Description of followers event
25687    #[prost(message, repeated, tag = "4")]
25688    pub followers: ::prost::alloc::vec::Vec<FollowerEvent>,
25689    /// If the config requested process sharding, report back the count and which
25690    /// of those bins was selected. Never changes for the duration of a trace.
25691    #[prost(uint32, optional, tag = "2")]
25692    pub process_shard_count: ::core::option::Option<u32>,
25693    #[prost(uint32, optional, tag = "3")]
25694    pub chosen_process_shard: ::core::option::Option<u32>,
25695}
25696#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25697pub struct SmapsEntry {
25698    #[prost(string, optional, tag = "1")]
25699    pub path: ::core::option::Option<::prost::alloc::string::String>,
25700    #[prost(uint64, optional, tag = "2")]
25701    pub size_kb: ::core::option::Option<u64>,
25702    #[prost(uint64, optional, tag = "3")]
25703    pub private_dirty_kb: ::core::option::Option<u64>,
25704    #[prost(uint64, optional, tag = "4")]
25705    pub swap_kb: ::core::option::Option<u64>,
25706    /// for field upload (instead of path).
25707    #[prost(string, optional, tag = "5")]
25708    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
25709    /// Fields below added and used only for Chromium memory infra, see
25710    /// crbug.com/1098746.
25711    #[prost(uint64, optional, tag = "6")]
25712    pub start_address: ::core::option::Option<u64>,
25713    #[prost(uint64, optional, tag = "7")]
25714    pub module_timestamp: ::core::option::Option<u64>,
25715    #[prost(string, optional, tag = "8")]
25716    pub module_debugid: ::core::option::Option<::prost::alloc::string::String>,
25717    #[prost(string, optional, tag = "9")]
25718    pub module_debug_path: ::core::option::Option<::prost::alloc::string::String>,
25719    #[prost(uint32, optional, tag = "10")]
25720    pub protection_flags: ::core::option::Option<u32>,
25721    #[prost(uint64, optional, tag = "11")]
25722    pub private_clean_resident_kb: ::core::option::Option<u64>,
25723    #[prost(uint64, optional, tag = "12")]
25724    pub shared_dirty_resident_kb: ::core::option::Option<u64>,
25725    #[prost(uint64, optional, tag = "13")]
25726    pub shared_clean_resident_kb: ::core::option::Option<u64>,
25727    #[prost(uint64, optional, tag = "14")]
25728    pub locked_kb: ::core::option::Option<u64>,
25729    #[prost(uint64, optional, tag = "15")]
25730    pub proportional_resident_kb: ::core::option::Option<u64>,
25731}
25732/// Structure-of-arrays style smaps packet of a single process. All packed
25733/// repeated fields, if set, must have the same length.
25734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25735pub struct PackedSmaps {
25736    /// Table of path names. Notes:
25737    /// * first element is the empty string, serialised explicitly.
25738    /// * the table might contain duplicates.
25739    #[prost(string, repeated, tag = "1")]
25740    pub string_table: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25741    /// Interned file paths as an index into |string_table|.
25742    /// Note: the "(deleted)" suffix is kept as part of the string_table entry, and
25743    /// is to be handled during trace import stage.
25744    /// Written only if config.unaggregated == true. Otherwise the string_table is
25745    /// exactly the ordered names of the aggregated mappings.
25746    #[prost(uint32, repeated, tag = "2")]
25747    pub name_id: ::prost::alloc::vec::Vec<u32>,
25748    /// How many mappings were merged by name, summing the values below.
25749    /// Written only if config.unaggregated == false.
25750    #[prost(uint32, repeated, tag = "3")]
25751    pub aggregate_count: ::prost::alloc::vec::Vec<u32>,
25752    #[prost(uint64, repeated, tag = "4")]
25753    pub size_kb: ::prost::alloc::vec::Vec<u64>,
25754    #[prost(uint64, repeated, tag = "5")]
25755    pub rss_kb: ::prost::alloc::vec::Vec<u64>,
25756    #[prost(uint64, repeated, tag = "6")]
25757    pub anonymous_kb: ::prost::alloc::vec::Vec<u64>,
25758    #[prost(uint64, repeated, tag = "7")]
25759    pub swap_kb: ::prost::alloc::vec::Vec<u64>,
25760    #[prost(uint64, repeated, tag = "8")]
25761    pub shared_clean_kb: ::prost::alloc::vec::Vec<u64>,
25762    #[prost(uint64, repeated, tag = "9")]
25763    pub shared_dirty_kb: ::prost::alloc::vec::Vec<u64>,
25764    #[prost(uint64, repeated, tag = "10")]
25765    pub private_clean_kb: ::prost::alloc::vec::Vec<u64>,
25766    #[prost(uint64, repeated, tag = "11")]
25767    pub private_dirty_kb: ::prost::alloc::vec::Vec<u64>,
25768    #[prost(uint64, repeated, tag = "12")]
25769    pub locked_kb: ::prost::alloc::vec::Vec<u64>,
25770    #[prost(uint64, repeated, tag = "13")]
25771    pub pss_kb: ::prost::alloc::vec::Vec<u64>,
25772    #[prost(uint64, repeated, tag = "14")]
25773    pub pss_dirty_kb: ::prost::alloc::vec::Vec<u64>,
25774    #[prost(uint64, repeated, tag = "15")]
25775    pub swap_pss_kb: ::prost::alloc::vec::Vec<u64>,
25776}
25777#[derive(Clone, PartialEq, ::prost::Message)]
25778pub struct SmapsPacket {
25779    #[prost(uint32, optional, tag = "1")]
25780    pub pid: ::core::option::Option<u32>,
25781    #[prost(message, repeated, tag = "2")]
25782    pub entries: ::prost::alloc::vec::Vec<SmapsEntry>,
25783    #[prost(message, optional, tag = "3")]
25784    pub packed_entries: ::core::option::Option<PackedSmaps>,
25785    #[prost(enumeration = "smaps_packet::RecordingType", optional, tag = "4")]
25786    pub recording_type: ::core::option::Option<i32>,
25787}
25788/// Nested message and enum types in `SmapsPacket`.
25789pub mod smaps_packet {
25790    /// Records how the snapshot was generated, as the message is shared by
25791    /// multiple smaps writers.
25792    /// If populating |packed_entries|, set explicitly to RECORDING_TYPE_STANDALONE
25793    /// as otherwise the trace importer might transform the data.
25794    #[derive(
25795        Clone,
25796        Copy,
25797        Debug,
25798        PartialEq,
25799        Eq,
25800        Hash,
25801        PartialOrd,
25802        Ord,
25803        ::prost::Enumeration
25804    )]
25805    #[repr(i32)]
25806    pub enum RecordingType {
25807        Unknown = 0,
25808        /// Normal recording.
25809        Standalone = 1,
25810        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
25811        /// heap dump. Recording is done inside of a forked child process, which
25812        /// means private/shared and pss fields are misleading as there is
25813        /// copy-on-write page sharing with the forked child.
25814        ArtHprofPostfork = 2,
25815        /// Android: recorded in the perfetto_hprof ART plugin as part of a managed
25816        /// heap dump, but with the original smaps calculated before forking in the
25817        /// plugin.
25818        ArtHprofPrefork = 3,
25819    }
25820    impl RecordingType {
25821        /// String value of the enum field names used in the ProtoBuf definition.
25822        ///
25823        /// The values are not transformed in any way and thus are considered stable
25824        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25825        pub fn as_str_name(&self) -> &'static str {
25826            match self {
25827                Self::Unknown => "RECORDING_TYPE_UNKNOWN",
25828                Self::Standalone => "RECORDING_TYPE_STANDALONE",
25829                Self::ArtHprofPostfork => "RECORDING_TYPE_ART_HPROF_POSTFORK",
25830                Self::ArtHprofPrefork => "RECORDING_TYPE_ART_HPROF_PREFORK",
25831            }
25832        }
25833        /// Creates an enum from field names used in the ProtoBuf definition.
25834        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25835            match value {
25836                "RECORDING_TYPE_UNKNOWN" => Some(Self::Unknown),
25837                "RECORDING_TYPE_STANDALONE" => Some(Self::Standalone),
25838                "RECORDING_TYPE_ART_HPROF_POSTFORK" => Some(Self::ArtHprofPostfork),
25839                "RECORDING_TYPE_ART_HPROF_PREFORK" => Some(Self::ArtHprofPrefork),
25840                _ => None,
25841            }
25842        }
25843    }
25844}
25845/// Per-process periodically sampled stats. These samples are wrapped in a
25846/// dedicated message (as opposite to be fields in process_tree.proto) because
25847/// they are dumped at a different rate than cmdline and thread list.
25848/// Note: not all of these stats will be present in every ProcessStats message
25849/// and sometimes processes may be missing. This is because counters are
25850/// cached to reduce emission of counters which do not change.
25851#[derive(Clone, PartialEq, ::prost::Message)]
25852pub struct ProcessStats {
25853    #[prost(message, repeated, tag = "1")]
25854    pub processes: ::prost::alloc::vec::Vec<process_stats::Process>,
25855    /// The time at which we finish collecting this batch of samples;
25856    /// the top-level packet timestamp is the time at which
25857    /// we begin collection.
25858    #[prost(uint64, optional, tag = "2")]
25859    pub collection_end_timestamp: ::core::option::Option<u64>,
25860}
25861/// Nested message and enum types in `ProcessStats`.
25862pub mod process_stats {
25863    /// Per-thread periodically sampled stats.
25864    /// Note: not all of these stats will be present in every message. See the note
25865    /// for ProcessStats.
25866    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25867    pub struct Thread {
25868        #[prost(int32, optional, tag = "1")]
25869        pub tid: ::core::option::Option<i32>,
25870    }
25871    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25872    pub struct FdInfo {
25873        #[prost(uint64, optional, tag = "1")]
25874        pub fd: ::core::option::Option<u64>,
25875        #[prost(string, optional, tag = "2")]
25876        pub path: ::core::option::Option<::prost::alloc::string::String>,
25877    }
25878    /// When adding a new field remember to update kProcMemCounterSize in
25879    /// the trace processor.
25880    #[derive(Clone, PartialEq, ::prost::Message)]
25881    pub struct Process {
25882        #[prost(int32, optional, tag = "1")]
25883        pub pid: ::core::option::Option<i32>,
25884        #[prost(message, repeated, tag = "11")]
25885        pub threads: ::prost::alloc::vec::Vec<Thread>,
25886        /// See /proc/\[pid\]/status in `man 5 proc` for a description of these fields.
25887        #[prost(uint64, optional, tag = "2")]
25888        pub vm_size_kb: ::core::option::Option<u64>,
25889        #[prost(uint64, optional, tag = "3")]
25890        pub vm_rss_kb: ::core::option::Option<u64>,
25891        #[prost(uint64, optional, tag = "4")]
25892        pub rss_anon_kb: ::core::option::Option<u64>,
25893        #[prost(uint64, optional, tag = "5")]
25894        pub rss_file_kb: ::core::option::Option<u64>,
25895        #[prost(uint64, optional, tag = "6")]
25896        pub rss_shmem_kb: ::core::option::Option<u64>,
25897        #[prost(uint64, optional, tag = "7")]
25898        pub vm_swap_kb: ::core::option::Option<u64>,
25899        #[prost(uint64, optional, tag = "8")]
25900        pub vm_locked_kb: ::core::option::Option<u64>,
25901        #[prost(uint64, optional, tag = "9")]
25902        pub vm_hwm_kb: ::core::option::Option<u64>,
25903        #[prost(int64, optional, tag = "10")]
25904        pub oom_score_adj: ::core::option::Option<i64>,
25905        /// The peak resident set size is resettable in newer Posix kernels.
25906        /// This field specifies if reset is supported and if the writer had reset
25907        /// the peaks after each process stats recording.
25908        #[prost(bool, optional, tag = "12")]
25909        pub is_peak_rss_resettable: ::core::option::Option<bool>,
25910        /// Private, shared and swap footprint of the process as measured by
25911        /// Chrome. To know more about these metrics refer to:
25912        /// <https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA>
25913        #[prost(uint32, optional, tag = "13")]
25914        pub chrome_private_footprint_kb: ::core::option::Option<u32>,
25915        #[prost(uint32, optional, tag = "14")]
25916        pub chrome_peak_resident_set_kb: ::core::option::Option<u32>,
25917        #[prost(message, repeated, tag = "15")]
25918        pub fds: ::prost::alloc::vec::Vec<FdInfo>,
25919        /// These fields are set only when scan_smaps_rollup=true
25920        #[prost(uint64, optional, tag = "16")]
25921        pub smr_rss_kb: ::core::option::Option<u64>,
25922        #[prost(uint64, optional, tag = "17")]
25923        pub smr_pss_kb: ::core::option::Option<u64>,
25924        #[prost(uint64, optional, tag = "18")]
25925        pub smr_pss_anon_kb: ::core::option::Option<u64>,
25926        #[prost(uint64, optional, tag = "19")]
25927        pub smr_pss_file_kb: ::core::option::Option<u64>,
25928        #[prost(uint64, optional, tag = "20")]
25929        pub smr_pss_shmem_kb: ::core::option::Option<u64>,
25930        #[prost(uint64, optional, tag = "23")]
25931        pub smr_swap_pss_kb: ::core::option::Option<u64>,
25932        /// Time spent scheduled in user mode in nanoseconds. Parsed from utime in
25933        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
25934        /// Resolution of "clock ticks", usually 10ms.
25935        #[prost(uint64, optional, tag = "21")]
25936        pub runtime_user_mode: ::core::option::Option<u64>,
25937        /// Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
25938        /// /proc/pid/stat. Recorded if record_process_runtime config option is set.
25939        /// Resolution of "clock ticks", usually 10ms.
25940        #[prost(uint64, optional, tag = "22")]
25941        pub runtime_kernel_mode: ::core::option::Option<u64>,
25942        /// The total size of all dmabufs referenced by a process via FDs or VMAs.
25943        #[prost(uint64, optional, tag = "24")]
25944        pub dmabuf_rss_kb: ::core::option::Option<u64>,
25945    }
25946}
25947/// Metadata about the processes and threads in the trace.
25948/// Note: this proto was designed to be filled in by traced_probes and should
25949/// only be populated with accurate information coming from the system. Other
25950/// trace writers should prefer to fill ThreadDescriptor and ProcessDescriptor
25951/// in TrackDescriptor.
25952#[derive(Clone, PartialEq, ::prost::Message)]
25953pub struct ProcessTree {
25954    /// List of processes and threads in the client. These lists are incremental
25955    /// and not exhaustive. A process and its threads might show up separately in
25956    /// different ProcessTree messages. A thread might event not show up at all, if
25957    /// no sched_switch activity was detected, for instance:
25958    /// #0 { processes: \[{pid: 10, ...}\], threads: \[{pid: 11, tgid: 10}\] }
25959    /// #1 { threads: \[{pid: 12, tgid: 10}\] }
25960    /// #2 { processes: \[{pid: 20, ...}\], threads: \[{pid: 13, tgid: 10}\] }
25961    #[prost(message, repeated, tag = "1")]
25962    pub processes: ::prost::alloc::vec::Vec<process_tree::Process>,
25963    #[prost(message, repeated, tag = "2")]
25964    pub threads: ::prost::alloc::vec::Vec<process_tree::Thread>,
25965    /// The time at which we finish collecting this process tree;
25966    /// the top-level packet timestamp is the time at which
25967    /// we begin collection.
25968    #[prost(uint64, optional, tag = "3")]
25969    pub collection_end_timestamp: ::core::option::Option<u64>,
25970}
25971/// Nested message and enum types in `ProcessTree`.
25972pub mod process_tree {
25973    /// Representation of a thread.
25974    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25975    pub struct Thread {
25976        /// The thread ID (as per gettid()) in the root PID namespace.
25977        #[prost(int32, optional, tag = "1")]
25978        pub tid: ::core::option::Option<i32>,
25979        /// Thread group id (i.e. the PID of the process, == TID of the main thread)
25980        #[prost(int32, optional, tag = "3")]
25981        pub tgid: ::core::option::Option<i32>,
25982        /// The name of the thread.
25983        #[prost(string, optional, tag = "2")]
25984        pub name: ::core::option::Option<::prost::alloc::string::String>,
25985        /// The non-root-level thread IDs if the thread runs in a PID namespace. Read
25986        /// from the NSpid entry of /proc/<tid>/status, with the first element (root-
25987        /// level thread ID) omitted.
25988        #[prost(int32, repeated, packed = "false", tag = "4")]
25989        pub nstid: ::prost::alloc::vec::Vec<i32>,
25990    }
25991    /// Representation of a process.
25992    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25993    pub struct Process {
25994        /// The UNIX process ID, aka thread group ID (as per getpid()) in the root
25995        /// PID namespace.
25996        #[prost(int32, optional, tag = "1")]
25997        pub pid: ::core::option::Option<i32>,
25998        /// The parent process ID, as per getppid().
25999        #[prost(int32, optional, tag = "2")]
26000        pub ppid: ::core::option::Option<i32>,
26001        /// The command line for the process, as per /proc/pid/cmdline, broken up on
26002        /// NUL bytes.
26003        /// If it is a kernel thread or a zombie, there will only be one cmdline
26004        /// field and it will contain /proc/pid/comm.
26005        #[prost(string, repeated, tag = "3")]
26006        pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
26007        /// If true, the |cmdline| field was filled with the main thread's "comm"
26008        /// field instead.
26009        /// Introduced in: perfetto v50.
26010        #[prost(bool, optional, tag = "9")]
26011        pub cmdline_is_comm: ::core::option::Option<bool>,
26012        /// The uid for the process, as per /proc/pid/status.
26013        #[prost(int32, optional, tag = "5")]
26014        pub uid: ::core::option::Option<i32>,
26015        /// The non-root-level process IDs if the process runs in a PID namespace.
26016        /// Read from the NSpid entry of /proc/<pid>/status, with the first element
26017        /// (root-level process ID) omitted.
26018        #[prost(int32, repeated, packed = "false", tag = "6")]
26019        pub nspid: ::prost::alloc::vec::Vec<i32>,
26020        /// Timestamp of when the process was created, in nanoseconds
26021        /// from boot. Parsed from starttime in /proc/pid/stat.
26022        /// Recorded if record_process_age config option is set.
26023        /// Resolution of "clock ticks", usually 10ms.
26024        #[prost(uint64, optional, tag = "7")]
26025        pub process_start_from_boot: ::core::option::Option<u64>,
26026        /// If true, the process is a kernel thread.
26027        /// Set only on linux v6.4+. For traces from older devices, it is possible to
26028        /// infer most kthreads by checking that they're a descendant of kthreadd
26029        /// (pid=2), or are the idle process (pid=0).
26030        /// Introduced in: perfetto v50.
26031        #[prost(bool, optional, tag = "8")]
26032        pub is_kthread: ::core::option::Option<bool>,
26033    }
26034}
26035/// Records the parameters for aligning clock readings between machines.
26036#[derive(Clone, PartialEq, ::prost::Message)]
26037pub struct RemoteClockSync {
26038    #[prost(message, repeated, tag = "1")]
26039    pub synced_clocks: ::prost::alloc::vec::Vec<remote_clock_sync::SyncedClocks>,
26040}
26041/// Nested message and enum types in `RemoteClockSync`.
26042pub mod remote_clock_sync {
26043    /// Synchronized clock snapshots taken on both sides of the relay port (the
26044    /// tracing service and the relay service). A round of clock synchronization
26045    /// IPC takes emits 2 SyncedClocks messages, i.e., client snapshot -> host
26046    /// snapshot -> client snapshot -> host snapshot.
26047    #[derive(Clone, PartialEq, ::prost::Message)]
26048    pub struct SyncedClocks {
26049        #[prost(message, optional, tag = "2")]
26050        pub client_clocks: ::core::option::Option<super::ClockSnapshot>,
26051        #[prost(message, optional, tag = "3")]
26052        pub host_clocks: ::core::option::Option<super::ClockSnapshot>,
26053    }
26054}
26055/// Deliberate empty message. See comment on StatsdAtom#atom below.
26056#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26057pub struct Atom {}
26058/// One or more statsd atoms. This must continue to match:
26059/// perfetto/protos/third_party/statsd/shell_data.proto
26060/// So that we can efficiently add data from statsd directly to the
26061/// trace.
26062#[derive(Clone, PartialEq, ::prost::Message)]
26063pub struct StatsdAtom {
26064    /// Atom should be filled with an Atom proto from:
26065    /// <https://cs.android.com/android/platform/superproject/main/+/main:frameworks/proto_logging/stats/atoms.proto?q=f:stats%2Fatoms.proto$%20message%5C%20Atom>
26066    /// We don't reference Atom directly here since we don't want to import
26067    /// Atom.proto and all its transitive dependencies into Perfetto.
26068    /// atom and timestamp_nanos have the same cardinality
26069    #[prost(message, repeated, tag = "1")]
26070    pub atom: ::prost::alloc::vec::Vec<Atom>,
26071    #[prost(int64, repeated, packed = "false", tag = "2")]
26072    pub timestamp_nanos: ::prost::alloc::vec::Vec<i64>,
26073}
26074/// Various Linux system stat counters from /proc.
26075/// The fields in this message can be reported at different rates and with
26076/// different granularity. See sys_stats_config.proto.
26077#[derive(Clone, PartialEq, ::prost::Message)]
26078pub struct SysStats {
26079    #[prost(message, repeated, tag = "1")]
26080    pub meminfo: ::prost::alloc::vec::Vec<sys_stats::MeminfoValue>,
26081    #[prost(message, repeated, tag = "2")]
26082    pub vmstat: ::prost::alloc::vec::Vec<sys_stats::VmstatValue>,
26083    /// One entry per cpu.
26084    #[prost(message, repeated, tag = "3")]
26085    pub cpu_stat: ::prost::alloc::vec::Vec<sys_stats::CpuTimes>,
26086    /// Num processes forked since boot.
26087    /// Populated only if FORK_COUNT in config.stat_counters.
26088    #[prost(uint64, optional, tag = "4")]
26089    pub num_forks: ::core::option::Option<u64>,
26090    /// Number of interrupts, broken by IRQ number.
26091    /// Populated only if IRQ_COUNTS in config.stat_counters.
26092    ///
26093    /// Total num of irqs serviced since boot.
26094    #[prost(uint64, optional, tag = "5")]
26095    pub num_irq_total: ::core::option::Option<u64>,
26096    #[prost(message, repeated, tag = "6")]
26097    pub num_irq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
26098    /// Number of softirqs, broken by softirq number.
26099    /// Populated only if SOFTIRQ_COUNTS in config.stat_counters.
26100    ///
26101    /// Total num of softirqs since boot.
26102    #[prost(uint64, optional, tag = "7")]
26103    pub num_softirq_total: ::core::option::Option<u64>,
26104    /// Per-softirq count.
26105    #[prost(message, repeated, tag = "8")]
26106    pub num_softirq: ::prost::alloc::vec::Vec<sys_stats::InterruptCount>,
26107    /// The time at which we finish collecting this set of samples;
26108    /// the top-level packet timestamp is the time at which
26109    /// we begin collection.
26110    #[prost(uint64, optional, tag = "9")]
26111    pub collection_end_timestamp: ::core::option::Option<u64>,
26112    /// One entry per device.
26113    #[prost(message, repeated, tag = "10")]
26114    pub devfreq: ::prost::alloc::vec::Vec<sys_stats::DevfreqValue>,
26115    /// Cpu current frequency from
26116    /// /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq in kHz.
26117    /// One entry per cpu. Report 0 for offline cpu
26118    #[prost(uint32, repeated, packed = "false", tag = "11")]
26119    pub cpufreq_khz: ::prost::alloc::vec::Vec<u32>,
26120    /// One entry per each node's zones.
26121    #[prost(message, repeated, tag = "12")]
26122    pub buddy_info: ::prost::alloc::vec::Vec<sys_stats::BuddyInfo>,
26123    /// One entry per disk device.
26124    #[prost(message, repeated, tag = "13")]
26125    pub disk_stat: ::prost::alloc::vec::Vec<sys_stats::DiskStat>,
26126    /// One entry per PsiResource type.
26127    #[prost(message, repeated, tag = "14")]
26128    pub psi: ::prost::alloc::vec::Vec<sys_stats::PsiSample>,
26129    #[prost(message, repeated, tag = "15")]
26130    pub thermal_zone: ::prost::alloc::vec::Vec<sys_stats::ThermalZone>,
26131    #[prost(message, repeated, tag = "16")]
26132    pub cpuidle_state: ::prost::alloc::vec::Vec<sys_stats::CpuIdleState>,
26133    /// Read GPU frequency info on Intel/AMD devices.
26134    #[prost(uint64, repeated, packed = "false", tag = "17")]
26135    pub gpufreq_mhz: ::prost::alloc::vec::Vec<u64>,
26136    #[prost(message, repeated, tag = "18")]
26137    pub slab_info: ::prost::alloc::vec::Vec<sys_stats::SlabInfo>,
26138}
26139/// Nested message and enum types in `SysStats`.
26140pub mod sys_stats {
26141    /// Counters from /proc/meminfo. Values are in KB.
26142    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26143    pub struct MeminfoValue {
26144        #[prost(enumeration = "super::MeminfoCounters", optional, tag = "1")]
26145        pub key: ::core::option::Option<i32>,
26146        #[prost(uint64, optional, tag = "2")]
26147        pub value: ::core::option::Option<u64>,
26148    }
26149    /// Counter from /proc/vmstat. Units are often pages, not KB.
26150    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26151    pub struct VmstatValue {
26152        #[prost(enumeration = "super::VmstatCounters", optional, tag = "1")]
26153        pub key: ::core::option::Option<i32>,
26154        #[prost(uint64, optional, tag = "2")]
26155        pub value: ::core::option::Option<u64>,
26156    }
26157    /// Times in each mode, since boot. Unit: nanoseconds.
26158    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26159    pub struct CpuTimes {
26160        #[prost(uint32, optional, tag = "1")]
26161        pub cpu_id: ::core::option::Option<u32>,
26162        /// Time spent in user mode.
26163        #[prost(uint64, optional, tag = "2")]
26164        pub user_ns: ::core::option::Option<u64>,
26165        /// Time spent in user mode (low prio).
26166        #[prost(uint64, optional, tag = "3")]
26167        pub user_nice_ns: ::core::option::Option<u64>,
26168        /// Time spent in system mode.
26169        #[prost(uint64, optional, tag = "4")]
26170        pub system_mode_ns: ::core::option::Option<u64>,
26171        /// Time spent in the idle task.
26172        #[prost(uint64, optional, tag = "5")]
26173        pub idle_ns: ::core::option::Option<u64>,
26174        /// Time spent waiting for I/O.
26175        #[prost(uint64, optional, tag = "6")]
26176        pub io_wait_ns: ::core::option::Option<u64>,
26177        /// Time spent servicing interrupts.
26178        #[prost(uint64, optional, tag = "7")]
26179        pub irq_ns: ::core::option::Option<u64>,
26180        /// Time spent servicing softirqs.
26181        #[prost(uint64, optional, tag = "8")]
26182        pub softirq_ns: ::core::option::Option<u64>,
26183        /// Time spent executing something else on host than this guest.
26184        #[prost(uint64, optional, tag = "9")]
26185        pub steal_ns: ::core::option::Option<u64>,
26186    }
26187    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26188    pub struct InterruptCount {
26189        #[prost(int32, optional, tag = "1")]
26190        pub irq: ::core::option::Option<i32>,
26191        #[prost(uint64, optional, tag = "2")]
26192        pub count: ::core::option::Option<u64>,
26193    }
26194    /// Frequencies for /sys/class/devfreq/ entries in kHz.
26195    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26196    pub struct DevfreqValue {
26197        #[prost(string, optional, tag = "1")]
26198        pub key: ::core::option::Option<::prost::alloc::string::String>,
26199        #[prost(uint64, optional, tag = "2")]
26200        pub value: ::core::option::Option<u64>,
26201    }
26202    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26203    pub struct BuddyInfo {
26204        #[prost(string, optional, tag = "1")]
26205        pub node: ::core::option::Option<::prost::alloc::string::String>,
26206        #[prost(string, optional, tag = "2")]
26207        pub zone: ::core::option::Option<::prost::alloc::string::String>,
26208        #[prost(uint32, repeated, packed = "false", tag = "3")]
26209        pub order_pages: ::prost::alloc::vec::Vec<u32>,
26210    }
26211    /// Counters from /proc/diskstats.
26212    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26213    pub struct DiskStat {
26214        #[prost(string, optional, tag = "1")]
26215        pub device_name: ::core::option::Option<::prost::alloc::string::String>,
26216        #[prost(uint64, optional, tag = "2")]
26217        pub read_sectors: ::core::option::Option<u64>,
26218        #[prost(uint64, optional, tag = "3")]
26219        pub read_time_ms: ::core::option::Option<u64>,
26220        #[prost(uint64, optional, tag = "4")]
26221        pub write_sectors: ::core::option::Option<u64>,
26222        #[prost(uint64, optional, tag = "5")]
26223        pub write_time_ms: ::core::option::Option<u64>,
26224        #[prost(uint64, optional, tag = "6")]
26225        pub discard_sectors: ::core::option::Option<u64>,
26226        #[prost(uint64, optional, tag = "7")]
26227        pub discard_time_ms: ::core::option::Option<u64>,
26228        #[prost(uint64, optional, tag = "8")]
26229        pub flush_count: ::core::option::Option<u64>,
26230        #[prost(uint64, optional, tag = "9")]
26231        pub flush_time_ms: ::core::option::Option<u64>,
26232    }
26233    /// Reading from /proc/pressure/*.
26234    /// Note that /proc/pressure/* exposes historical average utilization values
26235    /// (as a %), but we don't yet sample those. They could easily be added as
26236    /// additional fields should the total stall time readings be insufficient.
26237    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26238    pub struct PsiSample {
26239        #[prost(enumeration = "psi_sample::PsiResource", optional, tag = "1")]
26240        pub resource: ::core::option::Option<i32>,
26241        /// Total absolute stall time (in nanos) for a given resource.
26242        /// While PSI readings are in micros, we store in nanos for consistency with
26243        /// most other time-based counters.
26244        #[prost(uint64, optional, tag = "2")]
26245        pub total_ns: ::core::option::Option<u64>,
26246    }
26247    /// Nested message and enum types in `PsiSample`.
26248    pub mod psi_sample {
26249        /// Type of resource that may have exhibited pressure stalls.
26250        ///     * _SOME indicates some resource tasks stalled.
26251        ///     * _FULL indicates all non-idle resource tasks stalled simultaneously.
26252        #[derive(
26253            Clone,
26254            Copy,
26255            Debug,
26256            PartialEq,
26257            Eq,
26258            Hash,
26259            PartialOrd,
26260            Ord,
26261            ::prost::Enumeration
26262        )]
26263        #[repr(i32)]
26264        pub enum PsiResource {
26265            Unspecified = 0,
26266            CpuSome = 1,
26267            CpuFull = 2,
26268            IoSome = 3,
26269            IoFull = 4,
26270            MemorySome = 5,
26271            MemoryFull = 6,
26272        }
26273        impl PsiResource {
26274            /// String value of the enum field names used in the ProtoBuf definition.
26275            ///
26276            /// The values are not transformed in any way and thus are considered stable
26277            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26278            pub fn as_str_name(&self) -> &'static str {
26279                match self {
26280                    Self::Unspecified => "PSI_RESOURCE_UNSPECIFIED",
26281                    Self::CpuSome => "PSI_RESOURCE_CPU_SOME",
26282                    Self::CpuFull => "PSI_RESOURCE_CPU_FULL",
26283                    Self::IoSome => "PSI_RESOURCE_IO_SOME",
26284                    Self::IoFull => "PSI_RESOURCE_IO_FULL",
26285                    Self::MemorySome => "PSI_RESOURCE_MEMORY_SOME",
26286                    Self::MemoryFull => "PSI_RESOURCE_MEMORY_FULL",
26287                }
26288            }
26289            /// Creates an enum from field names used in the ProtoBuf definition.
26290            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26291                match value {
26292                    "PSI_RESOURCE_UNSPECIFIED" => Some(Self::Unspecified),
26293                    "PSI_RESOURCE_CPU_SOME" => Some(Self::CpuSome),
26294                    "PSI_RESOURCE_CPU_FULL" => Some(Self::CpuFull),
26295                    "PSI_RESOURCE_IO_SOME" => Some(Self::IoSome),
26296                    "PSI_RESOURCE_IO_FULL" => Some(Self::IoFull),
26297                    "PSI_RESOURCE_MEMORY_SOME" => Some(Self::MemorySome),
26298                    "PSI_RESOURCE_MEMORY_FULL" => Some(Self::MemoryFull),
26299                    _ => None,
26300                }
26301            }
26302        }
26303    }
26304    /// Reading from /sys/class/thermal/*.
26305    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26306    pub struct ThermalZone {
26307        #[prost(string, optional, tag = "1")]
26308        pub name: ::core::option::Option<::prost::alloc::string::String>,
26309        #[prost(uint64, optional, tag = "2")]
26310        pub temp: ::core::option::Option<u64>,
26311        #[prost(string, optional, tag = "3")]
26312        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
26313    }
26314    /// Reading from /sys/devices/system/cpu/cpu*/cpuidle/state*.
26315    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26316    pub struct CpuIdleStateEntry {
26317        /// Name of the idle state, e.g. C1-C10
26318        #[prost(string, optional, tag = "1")]
26319        pub state: ::core::option::Option<::prost::alloc::string::String>,
26320        #[prost(uint64, optional, tag = "2")]
26321        pub duration_us: ::core::option::Option<u64>,
26322    }
26323    #[derive(Clone, PartialEq, ::prost::Message)]
26324    pub struct CpuIdleState {
26325        #[prost(uint32, optional, tag = "1")]
26326        pub cpu_id: ::core::option::Option<u32>,
26327        #[prost(message, repeated, tag = "2")]
26328        pub cpuidle_state_entry: ::prost::alloc::vec::Vec<CpuIdleStateEntry>,
26329    }
26330    /// Reading from /proc/slabinfo.
26331    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26332    pub struct SlabInfo {
26333        #[prost(string, optional, tag = "1")]
26334        pub name: ::core::option::Option<::prost::alloc::string::String>,
26335        #[prost(uint32, optional, tag = "2")]
26336        pub pages_per_slab: ::core::option::Option<u32>,
26337        #[prost(uint32, optional, tag = "3")]
26338        pub num_slabs: ::core::option::Option<u32>,
26339    }
26340}
26341/// Information about CPUs from procfs and sysfs.
26342#[derive(Clone, PartialEq, ::prost::Message)]
26343pub struct CpuInfo {
26344    /// Describes available CPUs, one entry per CPU.
26345    #[prost(message, repeated, tag = "1")]
26346    pub cpus: ::prost::alloc::vec::Vec<cpu_info::Cpu>,
26347}
26348/// Nested message and enum types in `CpuInfo`.
26349pub mod cpu_info {
26350    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26351    pub struct ArmCpuIdentifier {
26352        /// Implementer code
26353        #[prost(uint32, optional, tag = "1")]
26354        pub implementer: ::core::option::Option<u32>,
26355        /// Architecture code
26356        #[prost(uint32, optional, tag = "2")]
26357        pub architecture: ::core::option::Option<u32>,
26358        /// CPU variant
26359        #[prost(uint32, optional, tag = "3")]
26360        pub variant: ::core::option::Option<u32>,
26361        /// CPU part
26362        #[prost(uint32, optional, tag = "4")]
26363        pub part: ::core::option::Option<u32>,
26364        /// CPU revision
26365        #[prost(uint32, optional, tag = "5")]
26366        pub revision: ::core::option::Option<u32>,
26367    }
26368    /// Information about a single CPU.
26369    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26370    pub struct Cpu {
26371        /// Value of "Processor" field from /proc/cpuinfo for this CPU.
26372        /// Example: "AArch64 Processor rev 12 (aarch64)"
26373        #[prost(string, optional, tag = "1")]
26374        pub processor: ::core::option::Option<::prost::alloc::string::String>,
26375        /// Frequencies from
26376        /// /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_frequencies
26377        /// where X is the index of this CPU.
26378        #[prost(uint32, repeated, packed = "false", tag = "2")]
26379        pub frequencies: ::prost::alloc::vec::Vec<u32>,
26380        /// Cpu capacity from /sys/devices/system/cpu/cpuX/cpu_capacity where X is
26381        /// the index of this CPU.
26382        #[prost(uint32, optional, tag = "3")]
26383        pub capacity: ::core::option::Option<u32>,
26384        /// Features is a bitmap containing a bit set for each feature defined in
26385        /// kCpuInfoFlags (cpu_info_flags_allowlist.h) for the corresponding array
26386        /// index.
26387        #[prost(uint64, optional, tag = "5")]
26388        pub features: ::core::option::Option<u64>,
26389        /// Code to identify the CPU
26390        #[prost(oneof = "cpu::Identifier", tags = "4")]
26391        pub identifier: ::core::option::Option<cpu::Identifier>,
26392    }
26393    /// Nested message and enum types in `Cpu`.
26394    pub mod cpu {
26395        /// Code to identify the CPU
26396        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
26397        pub enum Identifier {
26398            #[prost(message, tag = "4")]
26399            ArmIdentifier(super::ArmCpuIdentifier),
26400        }
26401    }
26402}
26403/// Information about GPUs on the device.
26404#[derive(Clone, PartialEq, ::prost::Message)]
26405pub struct GpuInfo {
26406    /// Describes available GPUs, one entry per GPU. The index in the list
26407    /// corresponds to the gpu_id used elsewhere in the trace.
26408    #[prost(message, repeated, tag = "1")]
26409    pub gpus: ::prost::alloc::vec::Vec<gpu_info::Gpu>,
26410}
26411/// Nested message and enum types in `GpuInfo`.
26412pub mod gpu_info {
26413    /// Information about a single GPU.
26414    #[derive(Clone, PartialEq, ::prost::Message)]
26415    pub struct Gpu {
26416        /// GPU name (e.g., "NVIDIA A100", "Adreno 740").
26417        /// Used by the Perfetto UI as the display label for GPU tracks (e.g.,
26418        /// "NVIDIA A100 Frequency" instead of "GPU 0 Frequency"). If multiple GPUs
26419        /// share the same name, consider appending an index to distinguish them
26420        /// (e.g., "NVIDIA A100 #0", "NVIDIA A100 #1").
26421        #[prost(string, optional, tag = "1")]
26422        pub name: ::core::option::Option<::prost::alloc::string::String>,
26423        /// GPU vendor string (e.g., "NVIDIA", "AMD", "Qualcomm").
26424        #[prost(string, optional, tag = "2")]
26425        pub vendor: ::core::option::Option<::prost::alloc::string::String>,
26426        /// GPU model/product identifier.
26427        #[prost(string, optional, tag = "3")]
26428        pub model: ::core::option::Option<::prost::alloc::string::String>,
26429        /// GPU architecture (e.g., "Ampere", "RDNA 3", "Adreno").
26430        #[prost(string, optional, tag = "4")]
26431        pub architecture: ::core::option::Option<::prost::alloc::string::String>,
26432        /// 16-byte device UUID when available.
26433        #[prost(bytes = "vec", optional, tag = "5")]
26434        pub uuid: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26435        /// PCI bus location (domain:bus:device.function, e.g., "0000:01:00.0").
26436        #[prost(string, optional, tag = "7")]
26437        pub pci_bdf: ::core::option::Option<::prost::alloc::string::String>,
26438        #[prost(message, repeated, tag = "6")]
26439        pub extra_info: ::prost::alloc::vec::Vec<gpu::KeyValue>,
26440    }
26441    /// Nested message and enum types in `Gpu`.
26442    pub mod gpu {
26443        /// Arbitrary key-value pairs for vendor-specific info
26444        /// (driver version, memory size, compute capability, clock speeds, etc.).
26445        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26446        pub struct KeyValue {
26447            #[prost(string, optional, tag = "1")]
26448            pub key: ::core::option::Option<::prost::alloc::string::String>,
26449            #[prost(string, optional, tag = "2")]
26450            pub value: ::core::option::Option<::prost::alloc::string::String>,
26451        }
26452    }
26453}
26454/// Hardware interrupt (IRQ) ID-to-name mappings collected from
26455/// /proc/interrupts at the start of a trace.
26456/// Emitted by the linux.system_info data source when irq_names: true is set
26457/// in SystemInfoConfig.
26458#[derive(Clone, PartialEq, ::prost::Message)]
26459pub struct InterruptInfo {
26460    /// One entry per hardware IRQ found in /proc/interrupts.
26461    #[prost(message, repeated, tag = "1")]
26462    pub irq_mapping: ::prost::alloc::vec::Vec<interrupt_info::InterruptMapping>,
26463}
26464/// Nested message and enum types in `InterruptInfo`.
26465pub mod interrupt_info {
26466    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26467    pub struct InterruptMapping {
26468        /// Numeric IRQ identifier.
26469        #[prost(uint32, optional, tag = "1")]
26470        pub irq_id: ::core::option::Option<u32>,
26471        /// Human-readable name for the IRQ (e.g. "arch_timer", "arm-pmu").
26472        #[prost(string, optional, tag = "2")]
26473        pub name: ::core::option::Option<::prost::alloc::string::String>,
26474    }
26475}
26476/// Event used by testing code.
26477#[derive(Clone, PartialEq, ::prost::Message)]
26478pub struct TestEvent {
26479    /// Arbitrary string used in tests.
26480    #[prost(string, optional, tag = "1")]
26481    pub str: ::core::option::Option<::prost::alloc::string::String>,
26482    /// The current value of the random number sequence used in tests.
26483    #[prost(uint32, optional, tag = "2")]
26484    pub seq_value: ::core::option::Option<u32>,
26485    /// Monotonically increased on each packet.
26486    #[prost(uint64, optional, tag = "3")]
26487    pub counter: ::core::option::Option<u64>,
26488    /// No more packets should follow (from the current sequence).
26489    #[prost(bool, optional, tag = "4")]
26490    pub is_last: ::core::option::Option<bool>,
26491    #[prost(message, optional, tag = "5")]
26492    pub payload: ::core::option::Option<test_event::TestPayload>,
26493    #[prost(message, optional, tag = "6")]
26494    pub protovm_patch: ::core::option::Option<test_event::ProtoVmPatch>,
26495    #[prost(message, optional, tag = "7")]
26496    pub protovm_incremental_state: ::core::option::Option<
26497        test_event::ProtoVmIncrementalState,
26498    >,
26499}
26500/// Nested message and enum types in `TestEvent`.
26501pub mod test_event {
26502    #[derive(Clone, PartialEq, ::prost::Message)]
26503    pub struct TestPayload {
26504        #[prost(string, repeated, tag = "1")]
26505        pub str: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
26506        #[prost(message, repeated, tag = "2")]
26507        pub nested: ::prost::alloc::vec::Vec<TestPayload>,
26508        #[prost(string, optional, tag = "4")]
26509        pub single_string: ::core::option::Option<::prost::alloc::string::String>,
26510        #[prost(int32, optional, tag = "5")]
26511        pub single_int: ::core::option::Option<i32>,
26512        #[prost(int32, repeated, packed = "false", tag = "6")]
26513        pub repeated_ints: ::prost::alloc::vec::Vec<i32>,
26514        /// When 0 this is the bottom-most nested message.
26515        #[prost(uint32, optional, tag = "3")]
26516        pub remaining_nesting_depth: ::core::option::Option<u32>,
26517        #[prost(message, repeated, tag = "7")]
26518        pub debug_annotations: ::prost::alloc::vec::Vec<super::DebugAnnotation>,
26519    }
26520    /// Simple ProtoVm patch and incremental state formats used for testing
26521    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26522    pub struct ProtoVmMessage {
26523        #[prost(uint32, optional, tag = "1")]
26524        pub id: ::core::option::Option<u32>,
26525        #[prost(message, optional, tag = "2")]
26526        pub submessage: ::core::option::Option<proto_vm_message::ProtoVmSubmessage>,
26527    }
26528    /// Nested message and enum types in `ProtoVmMessage`.
26529    pub mod proto_vm_message {
26530        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26531        pub struct ProtoVmSubmessage {
26532            #[prost(uint32, optional, tag = "1")]
26533            pub single_int: ::core::option::Option<u32>,
26534        }
26535    }
26536    #[derive(Clone, PartialEq, ::prost::Message)]
26537    pub struct ProtoVmPatch {
26538        #[prost(string, optional, tag = "1")]
26539        pub string_to_merge: ::core::option::Option<::prost::alloc::string::String>,
26540        #[prost(int32, optional, tag = "2")]
26541        pub int_to_merge: ::core::option::Option<i32>,
26542        #[prost(message, optional, tag = "3")]
26543        pub single_message: ::core::option::Option<ProtoVmMessage>,
26544        #[prost(message, repeated, tag = "4")]
26545        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
26546        #[prost(uint32, repeated, packed = "false", tag = "5")]
26547        pub delete_message_ids: ::prost::alloc::vec::Vec<u32>,
26548    }
26549    #[derive(Clone, PartialEq, ::prost::Message)]
26550    pub struct ProtoVmIncrementalState {
26551        #[prost(string, optional, tag = "1")]
26552        pub string_merged: ::core::option::Option<::prost::alloc::string::String>,
26553        #[prost(int32, optional, tag = "2")]
26554        pub int_merged: ::core::option::Option<i32>,
26555        #[prost(message, optional, tag = "3")]
26556        pub single_message: ::core::option::Option<ProtoVmMessage>,
26557        #[prost(message, repeated, tag = "4")]
26558        pub messages: ::prost::alloc::vec::Vec<ProtoVmMessage>,
26559    }
26560}
26561/// Default values for TracePacket fields that hold for a particular TraceWriter
26562/// packet sequence. This message contains a subset of the TracePacket fields
26563/// with matching IDs. When provided, these fields define the default values
26564/// that should be applied, at import time, to all TracePacket(s) with the same
26565/// |trusted_packet_sequence_id|, unless otherwise specified in each packet.
26566///
26567/// Should be reemitted whenever incremental state is cleared on the sequence.
26568#[derive(Clone, PartialEq, ::prost::Message)]
26569pub struct TracePacketDefaults {
26570    #[prost(uint32, optional, tag = "58")]
26571    pub timestamp_clock_id: ::core::option::Option<u32>,
26572    /// Default values for TrackEvents (e.g. default track).
26573    #[prost(message, optional, tag = "11")]
26574    pub track_event_defaults: ::core::option::Option<TrackEventDefaults>,
26575    /// Defaults for perf profiler packets (PerfSample).
26576    #[prost(message, optional, tag = "12")]
26577    pub perf_sample_defaults: ::core::option::Option<PerfSampleDefaults>,
26578    /// Defaults for transport-neutral stack sampling packets (StackSample).
26579    #[prost(message, optional, tag = "100")]
26580    pub stack_sample_defaults: ::core::option::Option<StackSampleDefaults>,
26581    /// Defaults for V8 code packets (V8JsCode, V8InternalCode, V8WasmCode,
26582    /// V8RegexpCode)
26583    #[prost(message, optional, tag = "99")]
26584    pub v8_code_defaults: ::core::option::Option<V8CodeDefaults>,
26585}
26586/// A random unique ID that identifies the trace.
26587/// This message has been introduced in v32. Prior to that, the UUID was
26588/// only (optionally) present in the TraceConfig.trace_uuid_msb/lsb fields.
26589/// This has been moved to a standalone packet to deal with new use-cases for
26590/// go/gapless-aot, where the same tracing session can be serialized several
26591/// times, in which case the UUID is changed on each snapshot and does not match
26592/// the one in the TraceConfig.
26593#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26594pub struct TraceUuid {
26595    #[prost(int64, optional, tag = "1")]
26596    pub msb: ::core::option::Option<i64>,
26597    #[prost(int64, optional, tag = "2")]
26598    pub lsb: ::core::option::Option<i64>,
26599}
26600/// Describes a process's attributes. Emitted as part of a TrackDescriptor,
26601/// usually by the process's main thread.
26602///
26603/// Next id: 9.
26604#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26605pub struct ProcessDescriptor {
26606    #[prost(int32, optional, tag = "1")]
26607    pub pid: ::core::option::Option<i32>,
26608    #[prost(string, repeated, tag = "2")]
26609    pub cmdline: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
26610    #[prost(string, optional, tag = "6")]
26611    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
26612    #[prost(int32, optional, tag = "5")]
26613    pub process_priority: ::core::option::Option<i32>,
26614    /// Process start time in nanoseconds.
26615    /// The timestamp refers to the trace clock by default. Other clock IDs
26616    /// provided in TracePacket are not supported.
26617    #[prost(int64, optional, tag = "7")]
26618    pub start_timestamp_ns: ::core::option::Option<i64>,
26619    #[prost(enumeration = "process_descriptor::ChromeProcessType", optional, tag = "4")]
26620    pub chrome_process_type: ::core::option::Option<i32>,
26621    /// To support old UI. New UI should determine default sorting by process_type.
26622    #[prost(int32, optional, tag = "3")]
26623    pub legacy_sort_index: ::core::option::Option<i32>,
26624    /// Labels can be used to further describe properties of the work performed by
26625    /// the process. For example, these can be used by Chrome renderer process to
26626    /// provide titles of frames being rendered.
26627    #[prost(string, repeated, tag = "8")]
26628    pub process_labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
26629}
26630/// Nested message and enum types in `ProcessDescriptor`.
26631pub mod process_descriptor {
26632    /// See chromium's content::ProcessType.
26633    #[derive(
26634        Clone,
26635        Copy,
26636        Debug,
26637        PartialEq,
26638        Eq,
26639        Hash,
26640        PartialOrd,
26641        Ord,
26642        ::prost::Enumeration
26643    )]
26644    #[repr(i32)]
26645    pub enum ChromeProcessType {
26646        ProcessUnspecified = 0,
26647        ProcessBrowser = 1,
26648        ProcessRenderer = 2,
26649        ProcessUtility = 3,
26650        ProcessZygote = 4,
26651        ProcessSandboxHelper = 5,
26652        ProcessGpu = 6,
26653        ProcessPpapiPlugin = 7,
26654        ProcessPpapiBroker = 8,
26655    }
26656    impl ChromeProcessType {
26657        /// String value of the enum field names used in the ProtoBuf definition.
26658        ///
26659        /// The values are not transformed in any way and thus are considered stable
26660        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26661        pub fn as_str_name(&self) -> &'static str {
26662            match self {
26663                Self::ProcessUnspecified => "PROCESS_UNSPECIFIED",
26664                Self::ProcessBrowser => "PROCESS_BROWSER",
26665                Self::ProcessRenderer => "PROCESS_RENDERER",
26666                Self::ProcessUtility => "PROCESS_UTILITY",
26667                Self::ProcessZygote => "PROCESS_ZYGOTE",
26668                Self::ProcessSandboxHelper => "PROCESS_SANDBOX_HELPER",
26669                Self::ProcessGpu => "PROCESS_GPU",
26670                Self::ProcessPpapiPlugin => "PROCESS_PPAPI_PLUGIN",
26671                Self::ProcessPpapiBroker => "PROCESS_PPAPI_BROKER",
26672            }
26673        }
26674        /// Creates an enum from field names used in the ProtoBuf definition.
26675        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26676            match value {
26677                "PROCESS_UNSPECIFIED" => Some(Self::ProcessUnspecified),
26678                "PROCESS_BROWSER" => Some(Self::ProcessBrowser),
26679                "PROCESS_RENDERER" => Some(Self::ProcessRenderer),
26680                "PROCESS_UTILITY" => Some(Self::ProcessUtility),
26681                "PROCESS_ZYGOTE" => Some(Self::ProcessZygote),
26682                "PROCESS_SANDBOX_HELPER" => Some(Self::ProcessSandboxHelper),
26683                "PROCESS_GPU" => Some(Self::ProcessGpu),
26684                "PROCESS_PPAPI_PLUGIN" => Some(Self::ProcessPpapiPlugin),
26685                "PROCESS_PPAPI_BROKER" => Some(Self::ProcessPpapiBroker),
26686                _ => None,
26687            }
26688        }
26689    }
26690}
26691/// This message specifies the "range of interest" for track events. With the
26692/// `drop_track_event_data_before` option set to `kTrackEventRangeOfInterest`,
26693/// Trace Processor drops track events outside of this range.
26694#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26695pub struct TrackEventRangeOfInterest {
26696    #[prost(int64, optional, tag = "1")]
26697    pub start_us: ::core::option::Option<i64>,
26698}
26699/// Describes a thread's attributes. Emitted as part of a TrackDescriptor,
26700/// usually by the thread's trace writer.
26701///
26702/// Next id: 9.
26703#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26704pub struct ThreadDescriptor {
26705    #[prost(int32, optional, tag = "1")]
26706    pub pid: ::core::option::Option<i32>,
26707    #[prost(int64, optional, tag = "2")]
26708    pub tid: ::core::option::Option<i64>,
26709    #[prost(string, optional, tag = "5")]
26710    pub thread_name: ::core::option::Option<::prost::alloc::string::String>,
26711    #[prost(enumeration = "thread_descriptor::ChromeThreadType", optional, tag = "4")]
26712    pub chrome_thread_type: ::core::option::Option<i32>,
26713    /// Deprecated. Use ClockSnapshot in combination with TracePacket's timestamp
26714    /// and timestamp_clock_id fields instead.
26715    #[prost(int64, optional, tag = "6")]
26716    pub reference_timestamp_us: ::core::option::Option<i64>,
26717    /// Absolute reference values. Clock values in subsequent TrackEvents can be
26718    /// encoded accumulatively and relative to these. This reduces their var-int
26719    /// encoding size.
26720    /// TODO(eseckler): Deprecated. Replace these with ClockSnapshot encoding.
26721    #[prost(int64, optional, tag = "7")]
26722    pub reference_thread_time_us: ::core::option::Option<i64>,
26723    #[prost(int64, optional, tag = "8")]
26724    pub reference_thread_instruction_count: ::core::option::Option<i64>,
26725    /// To support old UI. New UI should determine default sorting by thread_type.
26726    #[prost(int32, optional, tag = "3")]
26727    pub legacy_sort_index: ::core::option::Option<i32>,
26728}
26729/// Nested message and enum types in `ThreadDescriptor`.
26730pub mod thread_descriptor {
26731    #[derive(
26732        Clone,
26733        Copy,
26734        Debug,
26735        PartialEq,
26736        Eq,
26737        Hash,
26738        PartialOrd,
26739        Ord,
26740        ::prost::Enumeration
26741    )]
26742    #[repr(i32)]
26743    pub enum ChromeThreadType {
26744        ChromeThreadUnspecified = 0,
26745        ChromeThreadMain = 1,
26746        ChromeThreadIo = 2,
26747        /// Scheduler:
26748        ChromeThreadPoolBgWorker = 3,
26749        ChromeThreadPoolFgWorker = 4,
26750        ChromeThreadPoolFbBlocking = 5,
26751        ChromeThreadPoolBgBlocking = 6,
26752        ChromeThreadPoolService = 7,
26753        /// Compositor:
26754        ChromeThreadCompositor = 8,
26755        ChromeThreadVizCompositor = 9,
26756        ChromeThreadCompositorWorker = 10,
26757        /// Renderer:
26758        ChromeThreadServiceWorker = 11,
26759        /// Tracing related threads:
26760        ChromeThreadMemoryInfra = 50,
26761        ChromeThreadSamplingProfiler = 51,
26762    }
26763    impl ChromeThreadType {
26764        /// String value of the enum field names used in the ProtoBuf definition.
26765        ///
26766        /// The values are not transformed in any way and thus are considered stable
26767        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26768        pub fn as_str_name(&self) -> &'static str {
26769            match self {
26770                Self::ChromeThreadUnspecified => "CHROME_THREAD_UNSPECIFIED",
26771                Self::ChromeThreadMain => "CHROME_THREAD_MAIN",
26772                Self::ChromeThreadIo => "CHROME_THREAD_IO",
26773                Self::ChromeThreadPoolBgWorker => "CHROME_THREAD_POOL_BG_WORKER",
26774                Self::ChromeThreadPoolFgWorker => "CHROME_THREAD_POOL_FG_WORKER",
26775                Self::ChromeThreadPoolFbBlocking => "CHROME_THREAD_POOL_FB_BLOCKING",
26776                Self::ChromeThreadPoolBgBlocking => "CHROME_THREAD_POOL_BG_BLOCKING",
26777                Self::ChromeThreadPoolService => "CHROME_THREAD_POOL_SERVICE",
26778                Self::ChromeThreadCompositor => "CHROME_THREAD_COMPOSITOR",
26779                Self::ChromeThreadVizCompositor => "CHROME_THREAD_VIZ_COMPOSITOR",
26780                Self::ChromeThreadCompositorWorker => "CHROME_THREAD_COMPOSITOR_WORKER",
26781                Self::ChromeThreadServiceWorker => "CHROME_THREAD_SERVICE_WORKER",
26782                Self::ChromeThreadMemoryInfra => "CHROME_THREAD_MEMORY_INFRA",
26783                Self::ChromeThreadSamplingProfiler => "CHROME_THREAD_SAMPLING_PROFILER",
26784            }
26785        }
26786        /// Creates an enum from field names used in the ProtoBuf definition.
26787        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26788            match value {
26789                "CHROME_THREAD_UNSPECIFIED" => Some(Self::ChromeThreadUnspecified),
26790                "CHROME_THREAD_MAIN" => Some(Self::ChromeThreadMain),
26791                "CHROME_THREAD_IO" => Some(Self::ChromeThreadIo),
26792                "CHROME_THREAD_POOL_BG_WORKER" => Some(Self::ChromeThreadPoolBgWorker),
26793                "CHROME_THREAD_POOL_FG_WORKER" => Some(Self::ChromeThreadPoolFgWorker),
26794                "CHROME_THREAD_POOL_FB_BLOCKING" => {
26795                    Some(Self::ChromeThreadPoolFbBlocking)
26796                }
26797                "CHROME_THREAD_POOL_BG_BLOCKING" => {
26798                    Some(Self::ChromeThreadPoolBgBlocking)
26799                }
26800                "CHROME_THREAD_POOL_SERVICE" => Some(Self::ChromeThreadPoolService),
26801                "CHROME_THREAD_COMPOSITOR" => Some(Self::ChromeThreadCompositor),
26802                "CHROME_THREAD_VIZ_COMPOSITOR" => Some(Self::ChromeThreadVizCompositor),
26803                "CHROME_THREAD_COMPOSITOR_WORKER" => {
26804                    Some(Self::ChromeThreadCompositorWorker)
26805                }
26806                "CHROME_THREAD_SERVICE_WORKER" => Some(Self::ChromeThreadServiceWorker),
26807                "CHROME_THREAD_MEMORY_INFRA" => Some(Self::ChromeThreadMemoryInfra),
26808                "CHROME_THREAD_SAMPLING_PROFILER" => {
26809                    Some(Self::ChromeThreadSamplingProfiler)
26810                }
26811                _ => None,
26812            }
26813        }
26814    }
26815}
26816/// Describes the attributes for a Chrome process. Must be paired with a
26817/// ProcessDescriptor in the same TrackDescriptor.
26818///
26819/// Next id: 6.
26820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26821pub struct ChromeProcessDescriptor {
26822    /// This is a chrome_enums::ProcessType from
26823    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
26824    /// be imported here because of a dependency loop.
26825    #[prost(int32, optional, tag = "1")]
26826    pub process_type: ::core::option::Option<i32>,
26827    #[prost(int32, optional, tag = "2")]
26828    pub process_priority: ::core::option::Option<i32>,
26829    /// To support old UI. New UI should determine default sorting by process_type.
26830    #[prost(int32, optional, tag = "3")]
26831    pub legacy_sort_index: ::core::option::Option<i32>,
26832    /// Name of the hosting app for WebView. Used to match renderer processes to
26833    /// their hosting apps.
26834    #[prost(string, optional, tag = "4")]
26835    pub host_app_package_name: ::core::option::Option<::prost::alloc::string::String>,
26836    /// The ID to link crashes to trace.
26837    /// Notes:
26838    /// * The ID is per process. So, each trace may contain many IDs, and you need
26839    ///    to look for the ID from crashed process to find the crash report.
26840    /// * Having a "chrome-trace-id" in crash doesn't necessarily mean we can
26841    ///    get an uploaded trace, since uploads could have failed.
26842    /// * On the other hand, if there was a crash during the session and trace was
26843    ///    uploaded, it is very likely to find a crash report with the trace ID.
26844    /// * This is not crash ID or trace ID. It is just a random 64-bit number
26845    ///    recorded in both traces and crashes. It is possible to have collisions,
26846    ///    though very rare.
26847    #[prost(uint64, optional, tag = "5")]
26848    pub crash_trace_id: ::core::option::Option<u64>,
26849}
26850/// Describes a Chrome thread's attributes. Emitted as part of a TrackDescriptor,
26851/// usually by the thread's trace writer. Must be paired with a ThreadDescriptor
26852/// in the same TrackDescriptor.
26853///
26854/// Next id: 3.
26855#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26856pub struct ChromeThreadDescriptor {
26857    /// This is a chrome_enums::ThreadType from
26858    /// //protos/third_party/chromium/chrome_enums.proto. The enum definition can't
26859    /// be imported here because of a dependency loop.
26860    #[prost(int32, optional, tag = "1")]
26861    pub thread_type: ::core::option::Option<i32>,
26862    /// To support old UI. New UI should determine default sorting by thread_type.
26863    #[prost(int32, optional, tag = "2")]
26864    pub legacy_sort_index: ::core::option::Option<i32>,
26865    /// Indicates whether the thread's tid specified in the thread descriptor is
26866    /// namespaced by Chromium's sandbox. Only set on Linux, and from Chrome M140.
26867    #[prost(bool, optional, tag = "3")]
26868    pub is_sandboxed_tid: ::core::option::Option<bool>,
26869}
26870/// Defines properties of a counter track, e.g. for built-in counters (thread
26871/// time, instruction count, ..) or user-specified counters (e.g. memory usage of
26872/// a specific app component).
26873///
26874/// Counter tracks only support TYPE_COUNTER track events, which specify new
26875/// values for the counter. For counters that require per-slice values, counter
26876/// values can instead be provided in a more efficient encoding via TrackEvent's
26877/// |extra_counter_track_uuids| and |extra_counter_values| fields. However,
26878/// slice-type events cannot be emitted onto a counter track.
26879///
26880/// Values for counters that are only emitted on a single packet sequence can
26881/// optionally be delta-encoded, see |is_incremental|.
26882///
26883/// Next id: 7.
26884#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26885pub struct CounterDescriptor {
26886    /// For built-in counters (e.g. thread time). Custom user-specified counters
26887    /// (e.g. those emitted by TRACE_COUNTER macros of the client library)
26888    /// shouldn't set this, and instead provide a counter name via TrackDescriptor.
26889    #[prost(enumeration = "counter_descriptor::BuiltinCounterType", optional, tag = "1")]
26890    pub r#type: ::core::option::Option<i32>,
26891    /// Names of categories of the counter (usually for user-specified counters).
26892    /// In the client library, categories are a way to turn groups of individual
26893    /// counters (or events) on or off.
26894    #[prost(string, repeated, tag = "2")]
26895    pub categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
26896    /// Type of the counter's values. Built-in counters imply a value for this
26897    /// field.
26898    #[prost(enumeration = "counter_descriptor::Unit", optional, tag = "3")]
26899    pub unit: ::core::option::Option<i32>,
26900    /// In order to use a unit not defined as a part of |Unit|, a free-form unit
26901    /// name can be used instead.
26902    #[prost(string, optional, tag = "6")]
26903    pub unit_name: ::core::option::Option<::prost::alloc::string::String>,
26904    /// Multiplication factor of this counter's values, e.g. to supply
26905    /// COUNTER_THREAD_TIME_NS timestamps in microseconds instead.
26906    #[prost(int64, optional, tag = "4")]
26907    pub unit_multiplier: ::core::option::Option<i64>,
26908    /// Whether values for this counter are provided as delta values. Only
26909    /// supported for counters that are emitted on a single packet-sequence (e.g.
26910    /// thread time). Counter values in subsequent packets on the current packet
26911    /// sequence will be interpreted as delta values from the sequence's most
26912    /// recent value for the counter. When incremental state is cleared, the
26913    /// counter value is considered to be reset to 0. Thus, the first value after
26914    /// incremental state is cleared is effectively an absolute value.
26915    #[prost(bool, optional, tag = "5")]
26916    pub is_incremental: ::core::option::Option<bool>,
26917    /// When visualizing multiple counter tracks, it is often useful to have them
26918    /// share the same Y-axis range. This allows for easy comparison of their
26919    /// values.
26920    ///
26921    /// All counter tracks with the same |y_axis_share_key| and the same parent
26922    /// track (e.g. grouped under the same process track) will share their y-axis
26923    /// range in the UI.
26924    #[prost(string, optional, tag = "7")]
26925    pub y_axis_share_key: ::core::option::Option<::prost::alloc::string::String>,
26926}
26927/// Nested message and enum types in `CounterDescriptor`.
26928pub mod counter_descriptor {
26929    /// Built-in counters, usually with special meaning in the client library,
26930    /// trace processor, legacy JSON format, or UI. Trace processor will infer a
26931    /// track name from the enum value if none is provided in TrackDescriptor.
26932    ///
26933    /// Thread-scoped counters. The thread's track should be specified via
26934    /// |parent_uuid| in the TrackDescriptor for such a counter.
26935    #[derive(
26936        Clone,
26937        Copy,
26938        Debug,
26939        PartialEq,
26940        Eq,
26941        Hash,
26942        PartialOrd,
26943        Ord,
26944        ::prost::Enumeration
26945    )]
26946    #[repr(i32)]
26947    pub enum BuiltinCounterType {
26948        CounterUnspecified = 0,
26949        /// implies UNIT_TIME_NS.
26950        CounterThreadTimeNs = 1,
26951        /// implies UNIT_COUNT.
26952        CounterThreadInstructionCount = 2,
26953    }
26954    impl BuiltinCounterType {
26955        /// String value of the enum field names used in the ProtoBuf definition.
26956        ///
26957        /// The values are not transformed in any way and thus are considered stable
26958        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
26959        pub fn as_str_name(&self) -> &'static str {
26960            match self {
26961                Self::CounterUnspecified => "COUNTER_UNSPECIFIED",
26962                Self::CounterThreadTimeNs => "COUNTER_THREAD_TIME_NS",
26963                Self::CounterThreadInstructionCount => "COUNTER_THREAD_INSTRUCTION_COUNT",
26964            }
26965        }
26966        /// Creates an enum from field names used in the ProtoBuf definition.
26967        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
26968            match value {
26969                "COUNTER_UNSPECIFIED" => Some(Self::CounterUnspecified),
26970                "COUNTER_THREAD_TIME_NS" => Some(Self::CounterThreadTimeNs),
26971                "COUNTER_THREAD_INSTRUCTION_COUNT" => {
26972                    Some(Self::CounterThreadInstructionCount)
26973                }
26974                _ => None,
26975            }
26976        }
26977    }
26978    /// Type of the values for the counters - to supply lower granularity units,
26979    /// see also |unit_multiplier|.
26980    #[derive(
26981        Clone,
26982        Copy,
26983        Debug,
26984        PartialEq,
26985        Eq,
26986        Hash,
26987        PartialOrd,
26988        Ord,
26989        ::prost::Enumeration
26990    )]
26991    #[repr(i32)]
26992    pub enum Unit {
26993        Unspecified = 0,
26994        TimeNs = 1,
26995        Count = 2,
26996        /// TODO(eseckler): Support more units as necessary.
26997        SizeBytes = 3,
26998    }
26999    impl Unit {
27000        /// String value of the enum field names used in the ProtoBuf definition.
27001        ///
27002        /// The values are not transformed in any way and thus are considered stable
27003        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27004        pub fn as_str_name(&self) -> &'static str {
27005            match self {
27006                Self::Unspecified => "UNIT_UNSPECIFIED",
27007                Self::TimeNs => "UNIT_TIME_NS",
27008                Self::Count => "UNIT_COUNT",
27009                Self::SizeBytes => "UNIT_SIZE_BYTES",
27010            }
27011        }
27012        /// Creates an enum from field names used in the ProtoBuf definition.
27013        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27014            match value {
27015                "UNIT_UNSPECIFIED" => Some(Self::Unspecified),
27016                "UNIT_TIME_NS" => Some(Self::TimeNs),
27017                "UNIT_COUNT" => Some(Self::Count),
27018                "UNIT_SIZE_BYTES" => Some(Self::SizeBytes),
27019                _ => None,
27020            }
27021        }
27022    }
27023}
27024/// Descriptor for a state track.
27025/// For now, this message is empty. It is used to identify a track as a state
27026/// track.
27027#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
27028pub struct StateDescriptor {}
27029/// A named, typed key/value which is part of a track's identity.
27030///
27031/// Dimensions are the single vocabulary for identifiers which apply to a set of
27032/// tracks: *well-known* dimensions are synthesized by trace processor, while
27033/// producers can declare their own *custom* dimensions (`rank`, `shard`,
27034/// `stage`, ...) on a TrackDescriptor.
27035///
27036/// Reserved names: the names of the well-known dimensions are reserved and
27037/// cannot be used for custom dimensions. They are:
27038///   * `machine`: the machine the track belongs to.
27039///   * `gpu`: the GPU the track belongs to.
27040///   * `cpu`: the CPU the track belongs to.
27041///   * `process`: the process the track belongs to.
27042///   * `thread`: the thread the track belongs to.
27043/// Their values are derived by trace processor from the typed fields of the
27044/// TrackDescriptor (e.g. `process`, `thread`) and from import context, and mean
27045/// the same thing across data sources. A custom dimension using a reserved name
27046/// is ignored and trace processor records the
27047/// `track_descriptor_reserved_dimension_name` import error.
27048///
27049/// A dimension has no scope field: it is declared on the track described by the
27050/// containing TrackDescriptor and applies to that track and its `parent_uuid`
27051/// descendants, whether it is a process, thread or any other track. In
27052/// particular, a dimension declared on a process track doesn't apply to the
27053/// threads of the process unless their tracks are `parent_uuid` descendants of
27054/// the process track.
27055///
27056/// Declaring a *different* value for a dimension name which is already
27057/// inherited from an ancestor is invalid: trace processor records an import
27058/// error and keeps the inherited value.
27059///
27060/// The dimensions declared on a TrackDescriptor (names and values; the order
27061/// and `display_name` don't matter) are part of the identity of that track:
27062///   * they are fixed for the lifetime of the track, so every TrackDescriptor
27063///     emitted for a given `uuid`, including the first one, must declare the
27064///     same dimensions. A TrackDescriptor declaring different dimensions is
27065///     rejected as a conflicting reservation and the first one is kept.
27066///   * sibling tracks are only merged (see
27067///     `TrackDescriptor.sibling_merge_behavior`) if they declare the same
27068///     dimensions.
27069#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27070pub struct TrackDimension {
27071    /// The canonical dimension key, e.g. "rank". Must be non-empty and must not
27072    /// be one of the reserved names listed above.
27073    #[prost(oneof = "track_dimension::NameField", tags = "1, 7")]
27074    pub name_field: ::core::option::Option<track_dimension::NameField>,
27075    /// The typed value of the dimension. This is the value used for SQL queries,
27076    /// track identity and (for well-known dimensions) merging, so it must be
27077    /// stable for the whole trace.
27078    #[prost(oneof = "track_dimension::Value", tags = "2, 3, 5")]
27079    pub value: ::core::option::Option<track_dimension::Value>,
27080    /// Optional human readable label for this *value*, e.g. "worker-east" for
27081    /// rank 7. Only affects presentation: the canonical typed value above is what
27082    /// SQL and merging use.
27083    #[prost(oneof = "track_dimension::Display", tags = "4, 6")]
27084    pub display: ::core::option::Option<track_dimension::Display>,
27085}
27086/// Nested message and enum types in `TrackDimension`.
27087pub mod track_dimension {
27088    /// The canonical dimension key, e.g. "rank". Must be non-empty and must not
27089    /// be one of the reserved names listed above.
27090    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27091    pub enum NameField {
27092        #[prost(string, tag = "1")]
27093        Name(::prost::alloc::string::String),
27094        /// Interned version of `name`: corresponds to the `track_dimension_strings`
27095        /// field in InternedData, looked up like `string_value_iid`.
27096        #[prost(uint64, tag = "7")]
27097        NameIid(u64),
27098    }
27099    /// The typed value of the dimension. This is the value used for SQL queries,
27100    /// track identity and (for well-known dimensions) merging, so it must be
27101    /// stable for the whole trace.
27102    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27103    pub enum Value {
27104        #[prost(int64, tag = "2")]
27105        IntValue(i64),
27106        #[prost(string, tag = "3")]
27107        StringValue(::prost::alloc::string::String),
27108        /// Interned version of `string_value`: corresponds to the
27109        /// `track_dimension_strings` field in InternedData, looked up in the
27110        /// interned data of the sequence the TrackDescriptor is emitted on. The
27111        /// resolved string is the value, so an interned and an inline string with
27112        /// the same contents are the same value.
27113        #[prost(uint64, tag = "5")]
27114        StringValueIid(u64),
27115    }
27116    /// Optional human readable label for this *value*, e.g. "worker-east" for
27117    /// rank 7. Only affects presentation: the canonical typed value above is what
27118    /// SQL and merging use.
27119    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27120    pub enum Display {
27121        #[prost(string, tag = "4")]
27122        DisplayName(::prost::alloc::string::String),
27123        /// Interned version of `display_name`: corresponds to the
27124        /// `track_dimension_strings` field in InternedData, looked up like
27125        /// `string_value_iid`.
27126        #[prost(uint64, tag = "6")]
27127        DisplayNameIid(u64),
27128    }
27129}
27130/// Defines a track for TrackEvents. Slices and instant events on the same track
27131/// will be nested based on their timestamps, see TrackEvent::Type.
27132///
27133/// A TrackDescriptor only needs to be emitted by one trace writer / producer and
27134/// is valid for the entirety of the trace. To ensure the descriptor isn't lost
27135/// when the ring buffer wraps, it should be reemitted whenever incremental state
27136/// is cleared.
27137///
27138/// As a fallback, TrackEvents emitted without an explicit track association will
27139/// be associated with an implicit trace-global track (uuid = 0), see also
27140/// |TrackEvent::track_uuid|. It is possible but not necessary to emit a
27141/// TrackDescriptor for this implicit track.
27142///
27143/// Next id: 22.
27144#[derive(Clone, PartialEq, ::prost::Message)]
27145pub struct TrackDescriptor {
27146    /// Unique ID that identifies this track. This ID is global to the whole trace.
27147    /// Producers should ensure that it is unlikely to clash with IDs emitted by
27148    /// other producers. A value of 0 denotes the implicit trace-global track.
27149    ///
27150    /// For example, legacy TRACE_EVENT macros may use a hash involving the async
27151    /// event id + id_scope, pid, and/or tid to compute this ID.
27152    #[prost(uint64, optional, tag = "1")]
27153    pub uuid: ::core::option::Option<u64>,
27154    /// A parent track reference can be used to describe relationships between
27155    /// tracks. For example, to define an asynchronous track which is scoped to a
27156    /// specific process, specify the uuid for that process's process track here.
27157    /// Similarly, to associate a COUNTER_THREAD_TIME_NS counter track with a
27158    /// thread, specify the uuid for that thread's thread track here. In general,
27159    /// setting a parent will *nest* that track under the parent in the UI and in
27160    /// the trace processor data model (with the important exception noted below).
27161    ///
27162    /// If not specified, the track will be a root track, i.e. not nested under any
27163    /// other track.
27164    ///
27165    /// Note: if the `thread` or `process` fields are set, this value will be
27166    /// *ignored* as priority is given to those fields.
27167    ///
27168    /// Note: if the parent is set to a track with `thread` or `process` fields
27169    /// set, the track will *not* be nested under the parent in the UI and in the
27170    /// trace processor data model. Instead, the track will inherit the parent's
27171    /// thread/process association and will appear as a *sibling* of the parent.
27172    /// This semantic exists for back-compat reasons as the UI used to work this
27173    /// way for years and changing this leads to a lot of traces subtly breaking.
27174    /// If you want to force nesting, create *another* intermediate track to act as
27175    /// the parent.
27176    #[prost(uint64, optional, tag = "5")]
27177    pub parent_uuid: ::core::option::Option<u64>,
27178    /// A human-readable description of the track providing more context about its
27179    /// data. In the UI, this is shown in a popup when the track's help button is
27180    /// clicked.
27181    #[prost(string, optional, tag = "14")]
27182    pub description: ::core::option::Option<::prost::alloc::string::String>,
27183    /// Associate the track with a process, making it the process-global track.
27184    /// There should only be one such track per process (usually for instant
27185    /// events; trace processor uses this fact to detect pid reuse). If you need
27186    /// more (e.g. for asynchronous events), create child tracks using parent_uuid.
27187    ///
27188    /// Trace processor will merge events on a process track with slice-type events
27189    /// from other sources (e.g. ftrace) for the same process into a single
27190    /// timeline view.
27191    #[prost(message, optional, tag = "3")]
27192    pub process: ::core::option::Option<ProcessDescriptor>,
27193    #[prost(message, optional, tag = "6")]
27194    pub chrome_process: ::core::option::Option<ChromeProcessDescriptor>,
27195    /// Associate the track with a thread, indicating that the track's events
27196    /// describe synchronous code execution on the thread. There should only be one
27197    /// such track per thread (trace processor uses this fact to detect tid reuse).
27198    ///
27199    /// Trace processor will merge events on a thread track with slice-type events
27200    /// from other sources (e.g. ftrace) for the same thread into a single timeline
27201    /// view.
27202    #[prost(message, optional, tag = "4")]
27203    pub thread: ::core::option::Option<ThreadDescriptor>,
27204    #[prost(message, optional, tag = "7")]
27205    pub chrome_thread: ::core::option::Option<ChromeThreadDescriptor>,
27206    /// Descriptor for a counter track. If set, the track will only support
27207    /// TYPE_COUNTER TrackEvents (and values provided via TrackEvent's
27208    /// |extra_counter_values|).
27209    #[prost(message, optional, tag = "8")]
27210    pub counter: ::core::option::Option<CounterDescriptor>,
27211    /// Descriptor for a state track. If set, the track will support
27212    /// TYPE_STATE TrackEvents.
27213    #[prost(message, optional, tag = "18")]
27214    pub state: ::core::option::Option<StateDescriptor>,
27215    /// If true, forces Trace Processor to use separate tracks for track events
27216    /// and system events for the same thread.
27217    ///
27218    /// Track events timestamps in Chrome have microsecond resolution, while
27219    /// system events use nanoseconds. It results in broken event nesting when
27220    /// track events and system events share a track.
27221    #[prost(bool, optional, tag = "9")]
27222    pub disallow_merging_with_system_tracks: ::core::option::Option<bool>,
27223    #[prost(enumeration = "track_descriptor::ChildTracksOrdering", optional, tag = "11")]
27224    pub child_ordering: ::core::option::Option<i32>,
27225    /// An opaque value which allows specifying how sibling tracks should be
27226    /// ordered relative to each other: tracks with lower ranks will appear before
27227    /// tracks with higher ranks. An unspecified rank will be treated as a rank of
27228    /// 0.
27229    ///
27230    /// This rank is used in the following scenarios:
27231    /// - For standard child tracks, if the parent track has `child_ordering` set
27232    ///    to `EXPLICIT`.
27233    /// - For process tracks, if the root track descriptor (uuid = 0) has
27234    ///    `process_ordering` set to `PROCESS_ORDERING_EXPLICIT`.
27235    /// - For thread tracks, if the root track descriptor (uuid = 0) has
27236    ///    `thread_ordering` set to `THREAD_ORDERING_EXPLICIT`.
27237    ///
27238    /// In all other cases, this value is ignored.
27239    #[prost(int32, optional, tag = "12")]
27240    pub sibling_order_rank: ::core::option::Option<i32>,
27241    #[prost(
27242        enumeration = "track_descriptor::SiblingMergeBehavior",
27243        optional,
27244        tag = "15"
27245    )]
27246    pub sibling_merge_behavior: ::core::option::Option<i32>,
27247    #[prost(enumeration = "track_descriptor::ProcessOrdering", optional, tag = "19")]
27248    pub process_ordering: ::core::option::Option<i32>,
27249    #[prost(enumeration = "track_descriptor::ThreadOrdering", optional, tag = "20")]
27250    pub thread_ordering: ::core::option::Option<i32>,
27251    /// Custom, producer-declared dimensions for this track. Repeated so that a
27252    /// track can carry more than one independent dimension (e.g. `rank` and
27253    /// `stage`).
27254    ///
27255    /// Dimensions declared here apply to this track and its `parent_uuid`
27256    /// descendants. See TrackDimension for the full resolution rules.
27257    ///
27258    /// Dimensions are part of the track's identity: every descriptor emitted for
27259    /// this `uuid` must declare the same dimensions, starting with the first one,
27260    /// and only siblings declaring the same dimensions are merged. See
27261    /// TrackDimension for details.
27262    ///
27263    /// Well-known dimensions (`machine`, `gpu`, `cpu`, `process`, `thread`) are
27264    /// synthesized by trace processor from the typed fields above and from import
27265    /// context: their names are reserved and producers must *not* declare them
27266    /// here. See TrackDimension for the full list of reserved names.
27267    #[prost(message, repeated, tag = "21")]
27268    pub dimensions: ::prost::alloc::vec::Vec<TrackDimension>,
27269    /// Name of the track.
27270    ///
27271    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
27272    /// emitted before any `TrackEvent`s on the same track.
27273    ///
27274    /// Note: any name specified here will be *ignored* for the root thread scoped
27275    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
27276    /// case, the name of the track is shared by many different data sources and so
27277    /// is centrally controlled by trace processor.
27278    ///
27279    /// It's strongly recommended to only emit the name for a track uuid *once*. If
27280    /// a descriptor *has* to be emitted multiple times (e.g. between different
27281    /// processes), it's recommended to ensure that the name is consistent across
27282    /// all TrackDescriptors with the same `uuid`.
27283    ///
27284    /// If the the above recommendation is not followed and the same uuid is
27285    /// emitted with different names, it is implementation defined how the final
27286    /// name will be chosen and may change at any time.
27287    ///
27288    /// The current implementation of trace processor chooses the name in the
27289    /// following way, depending on the value of the `sibling_merge_behavior`
27290    /// field:
27291    ///
27292    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
27293    ///    * The *last* non-null name in the whole trace according to trace order
27294    ///      will be used.
27295    ///    * If no non-null name is present in the whole trace, the trace processor
27296    ///      may fall back to other sources to provide a name for the track (e.g.
27297    ///      the first event name for slice tracks, the counter name for counter
27298    ///      tracks). This is implementation defined and may change at any time.
27299    ///
27300    /// 2. If `sibling_merge_behavior` is set to any other value:
27301    ///    * The first non-null name before the first event on the track *or on any
27302    ///      descendant tracks* is processed will be used. For example, consider
27303    ///      the following sequence of events:
27304    ///        ts=100: TrackDescriptor(uuid=A)
27305    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
27306    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
27307    ///        ts=400: TrackEvent(track_uuid=B)
27308    ///      In this case, the name for track A will be "Track A" because the
27309    ///      descriptor with the name was emitted before the first event on a
27310    ///      descendant track (B).
27311    ///    * If no non-null name is present before the event is processed, the trace
27312    ///      processor may fall back to other sources to provide a name for the
27313    ///      track (e.g. the first event name for slice tracks, the counter name for
27314    ///      counter tracks). This is implementation defined and may change at any
27315    ///      time.
27316    ///    * Note on processing order: In the standard trace processor pipeline,
27317    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
27318    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
27319    ///      track, all its descriptors in the trace are processed before its
27320    ///      events. Consequently, the "first non-null name before the first event"
27321    ///      will be the name from the first `TrackDescriptor` for that track in the
27322    ///      trace file that has a non-null name. However, in a streaming parsing
27323    ///      scenario, the timestamp order of descriptors and events is significant,
27324    ///      and a descriptor arriving after an event has been processed will not be
27325    ///      used to name the track.
27326    #[prost(oneof = "track_descriptor::StaticOrDynamicName", tags = "2, 10, 13")]
27327    pub static_or_dynamic_name: ::core::option::Option<
27328        track_descriptor::StaticOrDynamicName,
27329    >,
27330    /// An opaque value which allows specifying which tracks should be merged
27331    /// together.
27332    ///
27333    /// Only meaningful when `sibling_merge_behavior` is set to
27334    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
27335    #[prost(oneof = "track_descriptor::SiblingMergeKeyField", tags = "16, 17")]
27336    pub sibling_merge_key_field: ::core::option::Option<
27337        track_descriptor::SiblingMergeKeyField,
27338    >,
27339}
27340/// Nested message and enum types in `TrackDescriptor`.
27341pub mod track_descriptor {
27342    /// Specifies how the UI should display child tracks of this track (i.e. tracks
27343    /// where `parent_uuid` is specified to this track `uuid`). Note that this
27344    /// value is simply a *hint* to the UI: the UI is not guarnateed to respect
27345    /// this if it has a good reason not to do so.
27346    ///
27347    /// Note: for tracks where `thread` or `process` are set (i.e. process tracks
27348    /// and thread tracks), this option is *ignored*. Instead, use
27349    /// `thread_ordering` and `process_ordering` on the root track descriptor (uuid
27350    /// = 0) to configure process and thread track ordering. See `parent_uuid` for
27351    /// details.
27352    #[derive(
27353        Clone,
27354        Copy,
27355        Debug,
27356        PartialEq,
27357        Eq,
27358        Hash,
27359        PartialOrd,
27360        Ord,
27361        ::prost::Enumeration
27362    )]
27363    #[repr(i32)]
27364    pub enum ChildTracksOrdering {
27365        /// The default ordering, with no bearing on how the UI will visualise the
27366        /// tracks.
27367        Unknown = 0,
27368        /// Order tracks by `name` or `static_name` depending on which one has been
27369        /// specified.
27370        Lexicographic = 1,
27371        /// Order tracks by the first `ts` event in a track.
27372        Chronological = 2,
27373        /// Order tracks by `sibling_order_rank` of child tracks. Child tracks with
27374        /// the lower values will be shown before tracks with higher values. Tracks
27375        /// with no value will be treated as having 0 rank.
27376        Explicit = 3,
27377    }
27378    impl ChildTracksOrdering {
27379        /// String value of the enum field names used in the ProtoBuf definition.
27380        ///
27381        /// The values are not transformed in any way and thus are considered stable
27382        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27383        pub fn as_str_name(&self) -> &'static str {
27384            match self {
27385                Self::Unknown => "UNKNOWN",
27386                Self::Lexicographic => "LEXICOGRAPHIC",
27387                Self::Chronological => "CHRONOLOGICAL",
27388                Self::Explicit => "EXPLICIT",
27389            }
27390        }
27391        /// Creates an enum from field names used in the ProtoBuf definition.
27392        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27393            match value {
27394                "UNKNOWN" => Some(Self::Unknown),
27395                "LEXICOGRAPHIC" => Some(Self::Lexicographic),
27396                "CHRONOLOGICAL" => Some(Self::Chronological),
27397                "EXPLICIT" => Some(Self::Explicit),
27398                _ => None,
27399            }
27400        }
27401    }
27402    /// Specifies how the analysis tools should "merge" different sibling
27403    /// TrackEvent tracks.
27404    ///
27405    /// For two or more tracks to be merged, they must be "eligible" siblings.
27406    /// Eligibility is determined by the following rules:
27407    /// 1. All tracks must have the same parent.
27408    /// 2. All tracks must have the same `sibling_merge_behavior`. The only
27409    ///     exception is `SIBLING_MERGE_BEHAVIOR_UNSPECIFIED` which is treated as
27410    ///     `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
27411    /// 3. Depending on the behavior, the corresponding key must match (e.g. `name`
27412    ///     for `BY_TRACK_NAME`, `sibling_merge_key` for `BY_SIBLING_MERGE_KEY`).
27413    /// 4. All tracks must declare the same `dimensions`.
27414    ///
27415    /// Specifically:
27416    ///    - in the UI, all tracks which are merged together will be
27417    ///      displayed as a single "visual" track.
27418    ///    - in the trace processor, all tracks which are merged together will be
27419    ///      "multiplexed" into n "analysis" tracks where n is the maximum number
27420    ///      of tracks which have an active event at the same time.
27421    ///
27422    /// When tracks are merged togther, the properties for the merged track will be
27423    /// chosen from the source tracks based on the following rules:
27424    ///    - for `sibling_order_rank`: the rank of the merged track will be the
27425    ///      smallest rank among the source tracks.
27426    ///    - for all other properties: the property taken is unspecified and can
27427    ///      be any value provided by one of the source tracks. This can lead to
27428    ///      non-deterministic behavior.
27429    ///       - examples of other properties include `name`, `child_ordering` etc.
27430    ///       - because of this, it's strongly recommended to ensure that all source
27431    ///         tracks have the same value for these properties.
27432    ///       - the trace processor will also emit an error stat if it detects
27433    ///         that the properties are not the same across all source tracks.
27434    ///
27435    /// Note: merging is done *recursively* so entire trees of tracks can be merged
27436    /// together. To make this clearer, consider an example track hierarchy (in
27437    /// the diagrams: "smk" refers to "sibling_merge_key", the first word on a
27438    /// track line, like "Updater", is its 'name' property):
27439    ///
27440    ///    Initial track hierarchy:
27441    ///      SystemActivity
27442    ///      ├── AuthService (smk: "auth_main_cluster")
27443    ///      │   └── LoginOp (smk: "login_v1")
27444    ///      ├── AuthService (smk: "auth_main_cluster")
27445    ///      │   └── LoginOp (smk: "login_v1")
27446    ///      ├── AuthService (smk: "auth_backup_cluster")
27447    ///      │   └── GuestOp (smk: "guest_v1")
27448    ///      └── UserProfileService (smk: "profile_cluster")
27449    ///          └── GetProfileOp (smk: "getprofile_v1")
27450    ///
27451    /// Merging outcomes:
27452    ///
27453    /// Scenario 1: Merging by `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`
27454    ///    - The first two "AuthService" tracks merge because they share
27455    ///      `smk: "auth_main_cluster"`. Their names are consistent ("AuthService"),
27456    ///      aligning with recommendations. The merged track is named "AuthService".
27457    ///    - The third "AuthService" track (with `smk: "auth_backup_cluster"`)
27458    ///      remains separate, as its `sibling_merge_key` is different.
27459    ///    - "UserProfileService" also remains separate.
27460    ///    - Within the merged "AuthService" (from "auth_main_cluster"):
27461    ///      "LoginOp" get merged as they have the same sibling merge key.
27462    ///
27463    ///    Resulting UI (when merging by SIBLING_MERGE_KEY):
27464    ///      SystemActivity
27465    ///      ├── AuthService (merged by smk: "auth_main_cluster")
27466    ///      │   ├── LoginOp (merged by smk: "login_v1")
27467    ///      ├── AuthService (smk: "auth_backup_cluster")
27468    ///      │   └── GuestOp (smk: "guest_v1")
27469    ///      └── UserProfileService (smk: "profile_cluster")
27470    ///          └── GetProfileOp (smk: "getprofile_v1")
27471    ///
27472    /// Scenario 2: Merging by `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`
27473    ///    - All three tracks named "AuthService" merge because they share the same
27474    ///      name. The merged track is named "AuthService". The `sibling_merge_key`
27475    ///      for this merged track would be taken from one of the source tracks
27476    ///      (e.g., "auth_main_cluster" or "auth_backup_cluster"), which could be
27477    ///      relevant if its children had key-based merge behaviors.
27478    ///    - "UserProfileService" remains separate due to its different name.
27479    ///    - Within the single merged "AuthService" track:
27480    ///      "LoginOp", "GuestOp" become siblings. "LoginOp" tracks gets merged as
27481    ///      they have the same name.
27482    ///
27483    ///    Resulting UI (when merging by SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME):
27484    ///      SystemActivity
27485    ///      ├── AuthService (merged from 3 "AuthService" tracks)
27486    ///      │   ├── LoginOp (smk: "login_v1")
27487    ///      │   └── GuestOp (smk: "guest_v1")
27488    ///      └── UserProfileService (smk: "profile_cluster")
27489    ///          └── GetProfileOp (smk: "getprofile_v1")
27490    ///
27491    /// Note: for tracks where `thread` or `process` are set, this option is
27492    /// *ignored*. See `parent_uuid` for details.
27493    #[derive(
27494        Clone,
27495        Copy,
27496        Debug,
27497        PartialEq,
27498        Eq,
27499        Hash,
27500        PartialOrd,
27501        Ord,
27502        ::prost::Enumeration
27503    )]
27504    #[repr(i32)]
27505    pub enum SiblingMergeBehavior {
27506        /// When unspecified or not set, defaults to
27507        /// `SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME`.
27508        Unspecified = 0,
27509        /// Merge this track with eligible siblings which have the same `name`.
27510        ///
27511        /// This is the default behavior.option.
27512        ///
27513        /// Fun fact: this is the default beahavior for legacy reasons as the UI has
27514        /// worked this way for years and inherited this behavior from
27515        /// chrome://tracing which has worked this way for even longer
27516        ByTrackName = 1,
27517        /// Never merge this track with any siblings. Useful if if this track has a
27518        /// specific meaning and you want to see separately from any others.
27519        None = 2,
27520        /// Merge this track with eligible siblings which have the same
27521        /// `sibling_merge_key`.
27522        BySiblingMergeKey = 3,
27523    }
27524    impl SiblingMergeBehavior {
27525        /// String value of the enum field names used in the ProtoBuf definition.
27526        ///
27527        /// The values are not transformed in any way and thus are considered stable
27528        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27529        pub fn as_str_name(&self) -> &'static str {
27530            match self {
27531                Self::Unspecified => "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED",
27532                Self::ByTrackName => "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME",
27533                Self::None => "SIBLING_MERGE_BEHAVIOR_NONE",
27534                Self::BySiblingMergeKey => "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY",
27535            }
27536        }
27537        /// Creates an enum from field names used in the ProtoBuf definition.
27538        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27539            match value {
27540                "SIBLING_MERGE_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified),
27541                "SIBLING_MERGE_BEHAVIOR_BY_TRACK_NAME" => Some(Self::ByTrackName),
27542                "SIBLING_MERGE_BEHAVIOR_NONE" => Some(Self::None),
27543                "SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY" => {
27544                    Some(Self::BySiblingMergeKey)
27545                }
27546                _ => None,
27547            }
27548        }
27549    }
27550    /// Specifies how the UI should display top-level process tracks relative to
27551    /// each other. Note that this value is simply a *hint* to the UI and is only
27552    /// valid on the root track descriptor (uuid = 0).
27553    #[derive(
27554        Clone,
27555        Copy,
27556        Debug,
27557        PartialEq,
27558        Eq,
27559        Hash,
27560        PartialOrd,
27561        Ord,
27562        ::prost::Enumeration
27563    )]
27564    #[repr(i32)]
27565    pub enum ProcessOrdering {
27566        /// The default ordering, with no bearing on how the UI will visualise the
27567        /// processes.
27568        Unspecified = 0,
27569        /// Order processes by `sibling_order_rank` of their process track
27570        /// descriptors. Processes with lower ranks will be shown before processes
27571        /// with higher ranks. Processes with no rank specified will be treated as
27572        /// having a rank of 0.
27573        Explicit = 1,
27574    }
27575    impl ProcessOrdering {
27576        /// String value of the enum field names used in the ProtoBuf definition.
27577        ///
27578        /// The values are not transformed in any way and thus are considered stable
27579        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27580        pub fn as_str_name(&self) -> &'static str {
27581            match self {
27582                Self::Unspecified => "PROCESS_ORDERING_UNSPECIFIED",
27583                Self::Explicit => "PROCESS_ORDERING_EXPLICIT",
27584            }
27585        }
27586        /// Creates an enum from field names used in the ProtoBuf definition.
27587        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27588            match value {
27589                "PROCESS_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
27590                "PROCESS_ORDERING_EXPLICIT" => Some(Self::Explicit),
27591                _ => None,
27592            }
27593        }
27594    }
27595    /// Specifies how the UI should display thread tracks within a process group
27596    /// relative to each other. Note that this value is simply a *hint* to the UI
27597    /// and is only valid on the root track descriptor (uuid = 0).
27598    #[derive(
27599        Clone,
27600        Copy,
27601        Debug,
27602        PartialEq,
27603        Eq,
27604        Hash,
27605        PartialOrd,
27606        Ord,
27607        ::prost::Enumeration
27608    )]
27609    #[repr(i32)]
27610    pub enum ThreadOrdering {
27611        /// The default ordering, with no bearing on how the UI will visualise the
27612        /// threads.
27613        Unspecified = 0,
27614        /// Order threads by `sibling_order_rank` of their thread track descriptors.
27615        /// Threads with lower ranks will be shown before threads with higher ranks.
27616        /// Threads with no rank specified will be treated as having a rank of 0.
27617        Explicit = 1,
27618    }
27619    impl ThreadOrdering {
27620        /// String value of the enum field names used in the ProtoBuf definition.
27621        ///
27622        /// The values are not transformed in any way and thus are considered stable
27623        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27624        pub fn as_str_name(&self) -> &'static str {
27625            match self {
27626                Self::Unspecified => "THREAD_ORDERING_UNSPECIFIED",
27627                Self::Explicit => "THREAD_ORDERING_EXPLICIT",
27628            }
27629        }
27630        /// Creates an enum from field names used in the ProtoBuf definition.
27631        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27632            match value {
27633                "THREAD_ORDERING_UNSPECIFIED" => Some(Self::Unspecified),
27634                "THREAD_ORDERING_EXPLICIT" => Some(Self::Explicit),
27635                _ => None,
27636            }
27637        }
27638    }
27639    /// Name of the track.
27640    ///
27641    /// Optional but *strongly recommended* to be specified in a `TrackDescriptor`
27642    /// emitted before any `TrackEvent`s on the same track.
27643    ///
27644    /// Note: any name specified here will be *ignored* for the root thread scoped
27645    /// tracks when `disallow_merging_with_system_tracks` is not set, as in this
27646    /// case, the name of the track is shared by many different data sources and so
27647    /// is centrally controlled by trace processor.
27648    ///
27649    /// It's strongly recommended to only emit the name for a track uuid *once*. If
27650    /// a descriptor *has* to be emitted multiple times (e.g. between different
27651    /// processes), it's recommended to ensure that the name is consistent across
27652    /// all TrackDescriptors with the same `uuid`.
27653    ///
27654    /// If the the above recommendation is not followed and the same uuid is
27655    /// emitted with different names, it is implementation defined how the final
27656    /// name will be chosen and may change at any time.
27657    ///
27658    /// The current implementation of trace processor chooses the name in the
27659    /// following way, depending on the value of the `sibling_merge_behavior`
27660    /// field:
27661    ///
27662    /// 1. If `sibling_merge_behavior` is set to `SIBLING_MERGE_BEHAVIOR_NONE`:
27663    ///    * The *last* non-null name in the whole trace according to trace order
27664    ///      will be used.
27665    ///    * If no non-null name is present in the whole trace, the trace processor
27666    ///      may fall back to other sources to provide a name for the track (e.g.
27667    ///      the first event name for slice tracks, the counter name for counter
27668    ///      tracks). This is implementation defined and may change at any time.
27669    ///
27670    /// 2. If `sibling_merge_behavior` is set to any other value:
27671    ///    * The first non-null name before the first event on the track *or on any
27672    ///      descendant tracks* is processed will be used. For example, consider
27673    ///      the following sequence of events:
27674    ///        ts=100: TrackDescriptor(uuid=A)
27675    ///        ts=200: TrackDescriptor(uuid=B, parent_uuid=A)
27676    ///        ts=300: TrackDescriptor(uuid=A, name="Track A")
27677    ///        ts=400: TrackEvent(track_uuid=B)
27678    ///      In this case, the name for track A will be "Track A" because the
27679    ///      descriptor with the name was emitted before the first event on a
27680    ///      descendant track (B).
27681    ///    * If no non-null name is present before the event is processed, the trace
27682    ///      processor may fall back to other sources to provide a name for the
27683    ///      track (e.g. the first event name for slice tracks, the counter name for
27684    ///      counter tracks). This is implementation defined and may change at any
27685    ///      time.
27686    ///    * Note on processing order: In the standard trace processor pipeline,
27687    ///      `TrackDescriptor`s are processed during a "tokenization" phase, which
27688    ///      occurs before any `TrackEvent`s are parsed. This means that for a given
27689    ///      track, all its descriptors in the trace are processed before its
27690    ///      events. Consequently, the "first non-null name before the first event"
27691    ///      will be the name from the first `TrackDescriptor` for that track in the
27692    ///      trace file that has a non-null name. However, in a streaming parsing
27693    ///      scenario, the timestamp order of descriptors and events is significant,
27694    ///      and a descriptor arriving after an event has been processed will not be
27695    ///      used to name the track.
27696    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27697    pub enum StaticOrDynamicName {
27698        #[prost(string, tag = "2")]
27699        Name(::prost::alloc::string::String),
27700        /// This field is only set by the SDK when perfetto::StaticString is
27701        /// provided.
27702        #[prost(string, tag = "10")]
27703        StaticName(::prost::alloc::string::String),
27704        /// Equivalent to name, used just to mark that the data is coming from
27705        /// android.os.Trace.
27706        #[prost(string, tag = "13")]
27707        AtraceName(::prost::alloc::string::String),
27708    }
27709    /// An opaque value which allows specifying which tracks should be merged
27710    /// together.
27711    ///
27712    /// Only meaningful when `sibling_merge_behavior` is set to
27713    /// `SIBLING_MERGE_BEHAVIOR_BY_SIBLING_MERGE_KEY`.
27714    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27715    pub enum SiblingMergeKeyField {
27716        #[prost(string, tag = "16")]
27717        SiblingMergeKey(::prost::alloc::string::String),
27718        #[prost(uint64, tag = "17")]
27719        SiblingMergeKeyInt(u64),
27720    }
27721}
27722/// Translation rules for the trace processor.
27723/// See the comments for each rule type for specific meaning.
27724#[derive(Clone, PartialEq, ::prost::Message)]
27725pub struct TranslationTable {
27726    #[prost(oneof = "translation_table::Table", tags = "1, 2, 3, 4, 5, 6")]
27727    pub table: ::core::option::Option<translation_table::Table>,
27728}
27729/// Nested message and enum types in `TranslationTable`.
27730pub mod translation_table {
27731    #[derive(Clone, PartialEq, ::prost::Oneof)]
27732    pub enum Table {
27733        #[prost(message, tag = "1")]
27734        ChromeHistogram(super::ChromeHistorgramTranslationTable),
27735        #[prost(message, tag = "2")]
27736        ChromeUserEvent(super::ChromeUserEventTranslationTable),
27737        #[prost(message, tag = "3")]
27738        ChromePerformanceMark(super::ChromePerformanceMarkTranslationTable),
27739        #[prost(message, tag = "4")]
27740        SliceName(super::SliceNameTranslationTable),
27741        #[prost(message, tag = "5")]
27742        ProcessTrackName(super::ProcessTrackNameTranslationTable),
27743        #[prost(message, tag = "6")]
27744        ChromeStudy(super::ChromeStudyTranslationTable),
27745    }
27746}
27747/// Chrome histogram sample hash -> name translation rules.
27748#[derive(Clone, PartialEq, ::prost::Message)]
27749pub struct ChromeHistorgramTranslationTable {
27750    #[prost(map = "uint64, string", tag = "1")]
27751    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
27752}
27753/// Chrome user event action hash -> name translation rules.
27754#[derive(Clone, PartialEq, ::prost::Message)]
27755pub struct ChromeUserEventTranslationTable {
27756    #[prost(map = "uint64, string", tag = "1")]
27757    pub action_hash_to_name: ::std::collections::HashMap<
27758        u64,
27759        ::prost::alloc::string::String,
27760    >,
27761}
27762/// Chrome performance mark translation rules.
27763#[derive(Clone, PartialEq, ::prost::Message)]
27764pub struct ChromePerformanceMarkTranslationTable {
27765    #[prost(map = "uint32, string", tag = "1")]
27766    pub site_hash_to_name: ::std::collections::HashMap<
27767        u32,
27768        ::prost::alloc::string::String,
27769    >,
27770    #[prost(map = "uint32, string", tag = "2")]
27771    pub mark_hash_to_name: ::std::collections::HashMap<
27772        u32,
27773        ::prost::alloc::string::String,
27774    >,
27775}
27776/// Raw -> deobfuscated slice name translation rules.
27777#[derive(Clone, PartialEq, ::prost::Message)]
27778pub struct SliceNameTranslationTable {
27779    #[prost(map = "string, string", tag = "1")]
27780    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
27781        ::prost::alloc::string::String,
27782        ::prost::alloc::string::String,
27783    >,
27784}
27785/// Raw -> deobfuscated process track name translation rules.
27786#[derive(Clone, PartialEq, ::prost::Message)]
27787pub struct ProcessTrackNameTranslationTable {
27788    #[prost(map = "string, string", tag = "1")]
27789    pub raw_to_deobfuscated_name: ::std::collections::HashMap<
27790        ::prost::alloc::string::String,
27791        ::prost::alloc::string::String,
27792    >,
27793}
27794/// Chrome study hash -> name translation rules.
27795#[derive(Clone, PartialEq, ::prost::Message)]
27796pub struct ChromeStudyTranslationTable {
27797    #[prost(map = "uint64, string", tag = "1")]
27798    pub hash_to_name: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
27799}
27800/// When a TracingSession receives a trigger it records the boot time nanoseconds
27801/// in the TracePacket's timestamp field as well as the name of the producer that
27802/// triggered it. We emit this data so filtering can be done on triggers received
27803/// in the trace.
27804#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27805pub struct Trigger {
27806    /// Name of the trigger which was received.
27807    #[prost(string, optional, tag = "1")]
27808    pub trigger_name: ::core::option::Option<::prost::alloc::string::String>,
27809    /// The actual producer that activated |trigger|.
27810    #[prost(string, optional, tag = "2")]
27811    pub producer_name: ::core::option::Option<::prost::alloc::string::String>,
27812    /// The verified UID of the producer.
27813    #[prost(int32, optional, tag = "3")]
27814    pub trusted_producer_uid: ::core::option::Option<i32>,
27815    /// The value of stop_delay_ms from the configuration.
27816    #[prost(uint64, optional, tag = "4")]
27817    pub stop_delay_ms: ::core::option::Option<u64>,
27818}
27819/// Common state for UIs visualizing Perfetto traces.
27820/// This message can be appended as a TracePacket by UIs to save the
27821/// visible state (e.g. scroll position/zoom state) for future opening
27822/// of the trace.
27823/// Design doc: go/trace-ui-state.
27824#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27825pub struct UiState {
27826    /// The start and end bounds of the viewport of the UI in nanoseconds.
27827    ///
27828    /// This is the absolute time associated to slices and other events in
27829    /// trace processor tables (i.e. the |ts| column of most tables)
27830    #[prost(int64, optional, tag = "1")]
27831    pub timeline_start_ts: ::core::option::Option<i64>,
27832    #[prost(int64, optional, tag = "2")]
27833    pub timeline_end_ts: ::core::option::Option<i64>,
27834    #[prost(message, optional, tag = "3")]
27835    pub highlight_process: ::core::option::Option<ui_state::HighlightProcess>,
27836}
27837/// Nested message and enum types in `UiState`.
27838pub mod ui_state {
27839    /// Indicates that the given process should be highlighted by the UI.
27840    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
27841    pub struct HighlightProcess {
27842        #[prost(oneof = "highlight_process::Selector", tags = "1, 2")]
27843        pub selector: ::core::option::Option<highlight_process::Selector>,
27844    }
27845    /// Nested message and enum types in `HighlightProcess`.
27846    pub mod highlight_process {
27847        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
27848        pub enum Selector {
27849            /// The pid of the process to highlight. This is useful for UIs to focus
27850            /// on tracks of a particular process in the trace.
27851            ///
27852            /// If more than one process in a trace has the same pid, it is UI
27853            /// implementation specific how the process to be focused will be
27854            /// chosen.
27855            #[prost(uint32, tag = "1")]
27856            Pid(u32),
27857            /// The command line of the process to highlight; for most Android apps,
27858            /// this is the package name of the app. This is useful for UIs to focus
27859            /// on a particular app in the trace.
27860            ///
27861            /// If more than one process hasthe same cmdline, it is UI implementation
27862            /// specific how the process to be focused will be chosen.
27863            #[prost(string, tag = "2")]
27864            Cmdline(::prost::alloc::string::String),
27865        }
27866    }
27867}
27868/// TracePacket is the root object of a Perfetto trace.
27869/// A Perfetto trace is a linear sequence of TracePacket(s).
27870///
27871/// The tracing service guarantees that all TracePacket(s) written by a given
27872/// TraceWriter are seen in-order, without gaps or duplicates. If, for any
27873/// reason, a TraceWriter sequence becomes invalid, no more packets are returned
27874/// to the Consumer (or written into the trace file).
27875/// TracePacket(s) written by different TraceWriter(s), hence even different
27876/// data sources, can be seen in arbitrary order.
27877/// The consumer can re-establish a total order, if interested, using the packet
27878/// timestamps, after having synchronized the different clocks onto a global
27879/// clock.
27880///
27881/// The tracing service is agnostic of the content of TracePacket, with the
27882/// exception of few fields (e.g.. trusted_*, trace_config) that are written by
27883/// the service itself.
27884///
27885/// See the [Buffers and Dataflow](/docs/concepts/buffers.md) doc for details.
27886///
27887/// Next reserved id: 14 (up to 15).
27888/// Next id: 141.
27889#[derive(Clone, PartialEq, ::prost::Message)]
27890pub struct TracePacket {
27891    /// The timestamp of the TracePacket.
27892    /// By default this timestamps refers to the trace clock (CLOCK_BOOTTIME on
27893    /// Android). It can be overridden using a different timestamp_clock_id.
27894    /// The clock domain definition in ClockSnapshot can also override:
27895    /// - The unit (default: 1ns).
27896    /// - The absolute vs delta encoding (default: absolute timestamp).
27897    #[prost(uint64, optional, tag = "8")]
27898    pub timestamp: ::core::option::Option<u64>,
27899    /// Specifies the ID of the clock used for the TracePacket |timestamp|. Can be
27900    /// one of the built-in types from ClockSnapshot::BuiltinClocks, or a
27901    /// producer-defined clock id.
27902    /// If unspecified and if no default per-sequence value has been provided via
27903    /// TracePacketDefaults, it defaults to BuiltinClocks::BOOTTIME.
27904    #[prost(uint32, optional, tag = "58")]
27905    pub timestamp_clock_id: ::core::option::Option<u32>,
27906    /// Trusted process id of the producer which generated this packet, written by
27907    /// the service.
27908    #[prost(int32, optional, tag = "79")]
27909    pub trusted_pid: ::core::option::Option<i32>,
27910    /// Incrementally emitted interned data, valid only on the packet's sequence
27911    /// (packets with the same |trusted_packet_sequence_id|). The writer will
27912    /// usually emit new interned data in the same TracePacket that first refers to
27913    /// it (since the last reset of interning state). It may also be emitted
27914    /// proactively in advance of referring to them in later packets.
27915    #[prost(message, optional, tag = "12")]
27916    pub interned_data: ::core::option::Option<InternedData>,
27917    #[prost(uint32, optional, tag = "13")]
27918    pub sequence_flags: ::core::option::Option<u32>,
27919    /// DEPRECATED. Moved to SequenceFlags::SEQ_INCREMENTAL_STATE_CLEARED.
27920    #[prost(bool, optional, tag = "41")]
27921    pub incremental_state_cleared: ::core::option::Option<bool>,
27922    /// Default values for fields of later TracePackets emitted on this packet's
27923    /// sequence (TracePackets with the same |trusted_packet_sequence_id|).
27924    /// It must be reemitted when incremental state is cleared (see
27925    /// |incremental_state_cleared|).
27926    /// Requires that any future packet emitted on the same sequence specifies
27927    /// the SEQ_NEEDS_INCREMENTAL_STATE flag.
27928    /// TracePacketDefaults always override the global defaults for any future
27929    /// packet on this sequence (regardless of SEQ_NEEDS_INCREMENTAL_STATE).
27930    #[prost(message, optional, tag = "59")]
27931    pub trace_packet_defaults: ::core::option::Option<TracePacketDefaults>,
27932    /// Set by the service if, for the current packet sequence (see
27933    /// |trusted_packet_sequence_id|), either:
27934    /// * this is the first packet, or
27935    /// * one or multiple packets were dropped since the last packet that the
27936    ///    consumer read from the sequence. This can happen if chunks in the trace
27937    ///    buffer are overridden before the consumer could read them when the trace
27938    ///    is configured in ring buffer mode.
27939    ///
27940    /// 0 means not dropped, nonzero means dropped (so this stays compatible with
27941    /// the historical bool semantics). The value is a DataLossReason bitmask:
27942    /// DATA_LOSS_PRESENT (bit 0) is always set when there is a loss, and
27943    /// TraceBufferV2 additionally sets a bit identifying the cause. TraceBufferV1
27944    /// and producer-signalled drops set the bare value 1 (DATA_LOSS_PRESENT), i.e.
27945    /// dropped with no specific cause attributed.
27946    ///
27947    /// When packet loss occurs, incrementally emitted data (including interned
27948    /// data) on the sequence should be considered invalid up until the next packet
27949    /// with SEQ_INCREMENTAL_STATE_CLEARED set.
27950    #[prost(uint32, optional, tag = "42")]
27951    pub previous_packet_dropped: ::core::option::Option<u32>,
27952    /// Flag set by a producer (starting from SDK v29) if, for the current packet
27953    /// sequence (see |trusted_packet_sequence_id|), this is the first packet.
27954    ///
27955    /// This flag can be used for distinguishing the two situations when
27956    /// processing the trace:
27957    /// 1. There are no prior events for the sequence because of data loss, e.g.
27958    ///     due to ring buffer wrapping.
27959    /// 2. There are no prior events for the sequence because it didn't start
27960    ///     before this packet (= there's definitely no preceding data loss).
27961    ///
27962    /// Given that older SDK versions do not support this flag, this flag not
27963    /// being present for a particular sequence does not necessarily imply data
27964    /// loss.
27965    #[prost(bool, optional, tag = "87")]
27966    pub first_packet_on_sequence: ::core::option::Option<bool>,
27967    /// The machine ID for identifying trace packets in a multi-machine tracing
27968    /// session. Is emitted by the tracing service for producers running on a
27969    /// remote host (e.g. a VM guest). For more context: go/crosetto-vm-tracing.
27970    #[prost(uint32, optional, tag = "98")]
27971    pub machine_id: ::core::option::Option<u32>,
27972    #[prost(
27973        oneof = "trace_packet::Data",
27974        tags = "11, 60, 117, 118, 120, 122, 129, 2, 90, 9, 4, 5, 6, 7, 89, 33, 34, 35, 139, 37, 74, 75, 38, 40, 39, 45, 46, 109, 47, 48, 49, 51, 52, 53, 54, 131, 57, 62, 63, 65, 66, 67, 68, 69, 134, 135, 70, 71, 73, 77, 78, 82, 83, 84, 86, 91, 124, 125, 126, 127, 128, 130, 61, 64, 43, 44, 1, 36, 50, 133, 72, 95, 99, 100, 101, 102, 103, 107, 110, 111, 113, 115, 119, 123, 132, 138, 140, 900, 76"
27975    )]
27976    pub data: ::core::option::Option<trace_packet::Data>,
27977    /// Trusted user id of the producer which generated this packet. Keep in sync
27978    /// with TrustedPacket.trusted_uid.
27979    ///
27980    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
27981    /// instead.
27982    #[prost(oneof = "trace_packet::OptionalTrustedUid", tags = "3")]
27983    pub optional_trusted_uid: ::core::option::Option<trace_packet::OptionalTrustedUid>,
27984    /// Service-assigned identifier of the packet sequence this packet belongs to.
27985    /// Uniquely identifies a producer + writer pair within the tracing session. A
27986    /// value of zero denotes an invalid ID. Keep in sync with
27987    /// TrustedPacket.trusted_packet_sequence_id.
27988    #[prost(oneof = "trace_packet::OptionalTrustedPacketSequenceId", tags = "10")]
27989    pub optional_trusted_packet_sequence_id: ::core::option::Option<
27990        trace_packet::OptionalTrustedPacketSequenceId,
27991    >,
27992}
27993/// Nested message and enum types in `TracePacket`.
27994pub mod trace_packet {
27995    /// Encapsulates the state and configuration of the ProtoVM instances running
27996    /// when the trace was snapshotted. This allows TP to re-instantiate the VMs
27997    /// and use them to inflate patches into full-state packets.
27998    /// Note: this message can't be defined in a dedicated file because it has a
27999    /// recursive dependency with TracePacket (see 'state' field below).
28000    #[derive(Clone, PartialEq, ::prost::Message)]
28001    pub struct ProtoVms {
28002        #[prost(message, repeated, tag = "1")]
28003        pub instance: ::prost::alloc::vec::Vec<proto_vms::Instance>,
28004    }
28005    /// Nested message and enum types in `ProtoVms`.
28006    pub mod proto_vms {
28007        #[derive(Clone, PartialEq, ::prost::Message)]
28008        pub struct Instance {
28009            #[prost(message, optional, tag = "1")]
28010            pub program: ::core::option::Option<super::super::VmProgram>,
28011            #[prost(message, optional, tag = "2")]
28012            pub state: ::core::option::Option<super::super::TracePacket>,
28013            #[prost(uint32, optional, tag = "3")]
28014            pub memory_limit_kb: ::core::option::Option<u32>,
28015            #[prost(int32, repeated, packed = "false", tag = "4")]
28016            pub producer_id: ::prost::alloc::vec::Vec<i32>,
28017        }
28018    }
28019    #[derive(
28020        Clone,
28021        Copy,
28022        Debug,
28023        PartialEq,
28024        Eq,
28025        Hash,
28026        PartialOrd,
28027        Ord,
28028        ::prost::Enumeration
28029    )]
28030    #[repr(i32)]
28031    pub enum SequenceFlags {
28032        SeqUnspecified = 0,
28033        /// Set by the writer to indicate that it will re-emit any incremental data
28034        /// for the packet's sequence before referring to it again. This includes
28035        /// interned data as well as periodically emitted data like
28036        /// Process/ThreadDescriptors. This flag only affects the current packet
28037        /// sequence (see |trusted_packet_sequence_id|).
28038        ///
28039        /// When set, this TracePacket and subsequent TracePackets on the same
28040        /// sequence will not refer to any incremental data emitted before this
28041        /// TracePacket. For example, previously emitted interned data will be
28042        /// re-emitted if it is referred to again.
28043        ///
28044        /// When the reader detects packet loss (|previous_packet_dropped|), it needs
28045        /// to skip packets in the sequence until the next one with this flag set, to
28046        /// ensure intact incremental data.
28047        SeqIncrementalStateCleared = 1,
28048        /// This packet requires incremental state, such as TracePacketDefaults or
28049        /// InternedData, to be parsed correctly. The trace reader should skip this
28050        /// packet if incremental state is not valid on this sequence, i.e. if no
28051        /// packet with the SEQ_INCREMENTAL_STATE_CLEARED flag has been seen on the
28052        /// current |trusted_packet_sequence_id|.
28053        SeqNeedsIncrementalState = 2,
28054    }
28055    impl SequenceFlags {
28056        /// String value of the enum field names used in the ProtoBuf definition.
28057        ///
28058        /// The values are not transformed in any way and thus are considered stable
28059        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28060        pub fn as_str_name(&self) -> &'static str {
28061            match self {
28062                Self::SeqUnspecified => "SEQ_UNSPECIFIED",
28063                Self::SeqIncrementalStateCleared => "SEQ_INCREMENTAL_STATE_CLEARED",
28064                Self::SeqNeedsIncrementalState => "SEQ_NEEDS_INCREMENTAL_STATE",
28065            }
28066        }
28067        /// Creates an enum from field names used in the ProtoBuf definition.
28068        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28069            match value {
28070                "SEQ_UNSPECIFIED" => Some(Self::SeqUnspecified),
28071                "SEQ_INCREMENTAL_STATE_CLEARED" => Some(Self::SeqIncrementalStateCleared),
28072                "SEQ_NEEDS_INCREMENTAL_STATE" => Some(Self::SeqNeedsIncrementalState),
28073                _ => None,
28074            }
28075        }
28076    }
28077    /// Bit flags OR-ed together into |previous_packet_dropped| to describe why
28078    /// packets were dropped. DATA_LOSS_PRESENT is set on every loss; the remaining
28079    /// bits attribute the cause and are set either by TraceBufferV2 in the service
28080    /// or by the producer's trace writer.
28081    #[derive(
28082        Clone,
28083        Copy,
28084        Debug,
28085        PartialEq,
28086        Eq,
28087        Hash,
28088        PartialOrd,
28089        Ord,
28090        ::prost::Enumeration
28091    )]
28092    #[repr(i32)]
28093    pub enum DataLossReason {
28094        DataLossUnspecified = 0,
28095        /// A loss was detected (set on every loss). On its own (value 1) it means
28096        /// dropped with no specific cause, e.g. TraceBufferV1 or a producer.
28097        DataLossPresent = 1,
28098        /// A read started on a non-successor ChunkID (a gap in the stream), or a
28099        /// proto-group sequence resumed after a recorded loss.
28100        DataLossReadGap = 2,
28101        /// A chunk's fragments couldn't be tokenized (malformed / out-of-bounds),
28102        /// or a proto-group packet couldn't be rewritten. The buffer stats
28103        /// abi_violations and oversized_packets_dropped tell the two rewrite
28104        /// failures apart.
28105        DataLossChunkCorrupted = 4,
28106        /// A continuation/end fragment with no preceding begin fragment.
28107        DataLossOrphanContinuation = 8,
28108        /// Reassembly abandoned because of a ChunkID gap mid-packet.
28109        DataLossReassemblyGap = 16,
28110        /// Reassembly abandoned because the fragment chain was broken even though
28111        /// the ChunkIDs were contiguous.
28112        DataLossReassemblyBrokenChain = 32,
28113        /// Unconsumed fragments were evicted while overwriting (ring buffer wrap).
28114        DataLossOverwrite = 64,
28115        /// The trace writer aborted an in-progress fragmented packet (it stamped
28116        /// the kPacketSizeDropPacket sentinel in the last fragment header).
28117        DataLossWriterAbort = 128,
28118        /// The producer's shared memory buffer was full: the trace writer couldn't
28119        /// acquire a chunk and dropped packets until one became available. Set by
28120        /// the producer, not the service.
28121        DataLossSmbFull = 256,
28122    }
28123    impl DataLossReason {
28124        /// String value of the enum field names used in the ProtoBuf definition.
28125        ///
28126        /// The values are not transformed in any way and thus are considered stable
28127        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28128        pub fn as_str_name(&self) -> &'static str {
28129            match self {
28130                Self::DataLossUnspecified => "DATA_LOSS_UNSPECIFIED",
28131                Self::DataLossPresent => "DATA_LOSS_PRESENT",
28132                Self::DataLossReadGap => "DATA_LOSS_READ_GAP",
28133                Self::DataLossChunkCorrupted => "DATA_LOSS_CHUNK_CORRUPTED",
28134                Self::DataLossOrphanContinuation => "DATA_LOSS_ORPHAN_CONTINUATION",
28135                Self::DataLossReassemblyGap => "DATA_LOSS_REASSEMBLY_GAP",
28136                Self::DataLossReassemblyBrokenChain => {
28137                    "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN"
28138                }
28139                Self::DataLossOverwrite => "DATA_LOSS_OVERWRITE",
28140                Self::DataLossWriterAbort => "DATA_LOSS_WRITER_ABORT",
28141                Self::DataLossSmbFull => "DATA_LOSS_SMB_FULL",
28142            }
28143        }
28144        /// Creates an enum from field names used in the ProtoBuf definition.
28145        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28146            match value {
28147                "DATA_LOSS_UNSPECIFIED" => Some(Self::DataLossUnspecified),
28148                "DATA_LOSS_PRESENT" => Some(Self::DataLossPresent),
28149                "DATA_LOSS_READ_GAP" => Some(Self::DataLossReadGap),
28150                "DATA_LOSS_CHUNK_CORRUPTED" => Some(Self::DataLossChunkCorrupted),
28151                "DATA_LOSS_ORPHAN_CONTINUATION" => Some(Self::DataLossOrphanContinuation),
28152                "DATA_LOSS_REASSEMBLY_GAP" => Some(Self::DataLossReassemblyGap),
28153                "DATA_LOSS_REASSEMBLY_BROKEN_CHAIN" => {
28154                    Some(Self::DataLossReassemblyBrokenChain)
28155                }
28156                "DATA_LOSS_OVERWRITE" => Some(Self::DataLossOverwrite),
28157                "DATA_LOSS_WRITER_ABORT" => Some(Self::DataLossWriterAbort),
28158                "DATA_LOSS_SMB_FULL" => Some(Self::DataLossSmbFull),
28159                _ => None,
28160            }
28161        }
28162    }
28163    #[derive(Clone, PartialEq, ::prost::Oneof)]
28164    pub enum Data {
28165        ///
28166        /// == STABLE PUBLIC API: TrackEvent ==
28167        ///
28168        /// TrackEvent is the stable, extensible API for recording trace events.
28169        /// See docs/instrumentation/track-events.md for details.
28170        #[prost(message, tag = "11")]
28171        TrackEvent(super::TrackEvent),
28172        #[prost(message, tag = "60")]
28173        TrackDescriptor(super::TrackDescriptor),
28174        ///
28175        /// == STABLE PUBLIC API: GENERIC KERNEL EVENTS ==
28176        ///
28177        /// Stable API for OS-level and hardware events from non-ftrace data
28178        /// sources.
28179        #[prost(message, tag = "117")]
28180        GenericKernelTaskStateEvent(super::GenericKernelTaskStateEvent),
28181        #[prost(message, tag = "118")]
28182        GenericKernelCpuFreqEvent(super::GenericKernelCpuFrequencyEvent),
28183        #[prost(message, tag = "120")]
28184        GenericKernelTaskRenameEvent(super::GenericKernelTaskRenameEvent),
28185        #[prost(message, tag = "122")]
28186        GenericKernelProcessTree(super::GenericKernelProcessTree),
28187        #[prost(message, tag = "129")]
28188        GenericGpuFrequencyEvent(super::GenericGpuFrequencyEvent),
28189        /// IDs up to 15 are reserved. They take only one byte to encode their
28190        /// preamble so should be used for frequent events.
28191        #[prost(message, tag = "2")]
28192        ProcessTree(super::ProcessTree),
28193        #[prost(message, tag = "90")]
28194        TrackEventRangeOfInterest(super::TrackEventRangeOfInterest),
28195        #[prost(message, tag = "9")]
28196        ProcessStats(super::ProcessStats),
28197        #[prost(message, tag = "4")]
28198        InodeFileMap(super::InodeFileMap),
28199        #[prost(message, tag = "5")]
28200        ChromeEvents(super::ChromeEventBundle),
28201        #[prost(message, tag = "6")]
28202        ClockSnapshot(super::ClockSnapshot),
28203        #[prost(message, tag = "7")]
28204        SysStats(super::SysStats),
28205        #[prost(message, tag = "89")]
28206        TraceUuid(super::TraceUuid),
28207        #[prost(message, tag = "33")]
28208        TraceConfig(super::TraceConfig),
28209        #[prost(message, tag = "34")]
28210        FtraceStats(super::FtraceStats),
28211        #[prost(message, tag = "35")]
28212        TraceStats(super::TraceStats),
28213        #[prost(message, tag = "139")]
28214        ExperimentalTracingV2ProducerStats(super::ExperimentalTracingV2ProducerStats),
28215        #[prost(message, tag = "37")]
28216        ProfilePacket(super::ProfilePacket),
28217        #[prost(message, tag = "74")]
28218        StreamingAllocation(super::StreamingAllocation),
28219        #[prost(message, tag = "75")]
28220        StreamingFree(super::StreamingFree),
28221        #[prost(message, tag = "38")]
28222        Battery(super::BatteryCounters),
28223        #[prost(message, tag = "40")]
28224        PowerRails(super::PowerRails),
28225        #[prost(message, tag = "39")]
28226        AndroidLog(super::AndroidLogPacket),
28227        #[prost(message, tag = "45")]
28228        SystemInfo(super::SystemInfo),
28229        #[prost(message, tag = "46")]
28230        Trigger(super::Trigger),
28231        #[prost(message, tag = "109")]
28232        ChromeTrigger(super::ChromeTrigger),
28233        #[prost(message, tag = "47")]
28234        PackagesList(super::PackagesList),
28235        #[prost(message, tag = "48")]
28236        ChromeBenchmarkMetadata(super::ChromeBenchmarkMetadata),
28237        #[prost(message, tag = "49")]
28238        PerfettoMetatrace(super::PerfettoMetatrace),
28239        #[prost(message, tag = "51")]
28240        ChromeMetadata(super::ChromeMetadataPacket),
28241        #[prost(message, tag = "52")]
28242        GpuCounterEvent(super::GpuCounterEvent),
28243        #[prost(message, tag = "53")]
28244        GpuRenderStageEvent(super::GpuRenderStageEvent),
28245        #[prost(message, tag = "54")]
28246        StreamingProfilePacket(super::StreamingProfilePacket),
28247        #[prost(message, tag = "131")]
28248        ArtProcessMetadata(super::ArtProcessMetadata),
28249        #[prost(message, tag = "57")]
28250        GraphicsFrameEvent(super::GraphicsFrameEvent),
28251        #[prost(message, tag = "62")]
28252        VulkanMemoryEvent(super::VulkanMemoryEvent),
28253        #[prost(message, tag = "63")]
28254        GpuLog(super::GpuLog),
28255        #[prost(message, tag = "65")]
28256        VulkanApiEvent(super::VulkanApiEvent),
28257        #[prost(message, tag = "66")]
28258        PerfSample(super::PerfSample),
28259        #[prost(message, tag = "67")]
28260        CpuInfo(super::CpuInfo),
28261        #[prost(message, tag = "68")]
28262        SmapsPacket(super::SmapsPacket),
28263        #[prost(message, tag = "69")]
28264        ServiceEvent(super::TracingServiceEvent),
28265        #[prost(message, tag = "134")]
28266        ConcurrentSessionEvent(super::ConcurrentSessionEvent),
28267        /// Transport-neutral stack sampling (see profiling/stack_sample.proto).
28268        /// Independent of PerfSample.
28269        #[prost(message, tag = "135")]
28270        StackSample(super::StackSample),
28271        #[prost(message, tag = "70")]
28272        InitialDisplayState(super::InitialDisplayState),
28273        #[prost(message, tag = "71")]
28274        GpuMemTotalEvent(super::GpuMemTotalEvent),
28275        #[prost(message, tag = "73")]
28276        MemoryTrackerSnapshot(super::MemoryTrackerSnapshot),
28277        #[prost(message, tag = "77")]
28278        AndroidEnergyEstimationBreakdown(super::AndroidEnergyEstimationBreakdown),
28279        #[prost(message, tag = "78")]
28280        UiState(super::UiState),
28281        #[prost(message, tag = "82")]
28282        TranslationTable(super::TranslationTable),
28283        #[prost(message, tag = "83")]
28284        AndroidGameInterventionList(super::AndroidGameInterventionList),
28285        #[prost(message, tag = "84")]
28286        StatsdAtom(super::StatsdAtom),
28287        #[prost(message, tag = "86")]
28288        AndroidSystemProperty(super::AndroidSystemProperty),
28289        #[prost(message, tag = "91")]
28290        EntityStateResidency(super::EntityStateResidency),
28291        #[prost(message, tag = "124")]
28292        TraceProvenance(super::TraceProvenance),
28293        #[prost(message, tag = "125")]
28294        Protovms(ProtoVms),
28295        #[prost(message, tag = "126")]
28296        TraceAttributes(super::TraceAttributes),
28297        #[prost(message, tag = "127")]
28298        AndroidAflags(super::AndroidAflags),
28299        #[prost(message, tag = "128")]
28300        GpuInfo(super::GpuInfo),
28301        #[prost(message, tag = "130")]
28302        InterruptInfo(super::InterruptInfo),
28303        /// Only used in profile packets.
28304        #[prost(message, tag = "61")]
28305        ModuleSymbols(super::ModuleSymbols),
28306        #[prost(message, tag = "64")]
28307        DeobfuscationMapping(super::DeobfuscationMapping),
28308        /// Deprecated, use TrackDescriptor instead.
28309        #[prost(message, tag = "43")]
28310        ProcessDescriptor(super::ProcessDescriptor),
28311        /// Deprecated, use TrackDescriptor instead.
28312        #[prost(message, tag = "44")]
28313        ThreadDescriptor(super::ThreadDescriptor),
28314        /// Events from the Linux kernel ftrace infrastructure.
28315        #[prost(message, tag = "1")]
28316        FtraceEvents(super::FtraceEventBundle),
28317        /// This field is emitted at periodic intervals (~10s) and
28318        /// contains always the binary representation of the UUID
28319        /// {82477a76-b28d-42ba-81dc-33326d57a079}. This is used to be able to
28320        /// efficiently partition long traces without having to fully parse them.
28321        #[prost(bytes, tag = "36")]
28322        SynchronizationMarker(::prost::alloc::vec::Vec<u8>),
28323        /// Zero or more proto encoded trace packets compressed using deflate.
28324        /// Each compressed_packets TracePacket (including the two field ids and
28325        /// sizes) should be less than 512KB.
28326        #[prost(bytes, tag = "50")]
28327        CompressedPackets(::prost::alloc::vec::Vec<u8>),
28328        /// The zstd counterpart of |compressed_packets|.
28329        #[prost(bytes, tag = "133")]
28330        ZstdCompressedPackets(::prost::alloc::vec::Vec<u8>),
28331        /// Data sources can extend the trace proto with custom extension protos (see
28332        /// docs/instrumentation/extensions.md). When they do that, the descriptor of
28333        /// their extension proto descriptor is serialized in this packet. This
28334        /// allows trace_processor to deserialize extended messages using reflection
28335        /// even if the extension proto is not checked in the Perfetto repo.
28336        #[prost(message, tag = "72")]
28337        ExtensionDescriptor(super::ExtensionDescriptor),
28338        /// Events from the Windows etw infrastructure.
28339        #[prost(message, tag = "95")]
28340        EtwEvents(super::EtwTraceEventBundle),
28341        #[prost(message, tag = "99")]
28342        V8JsCode(super::V8JsCode),
28343        #[prost(message, tag = "100")]
28344        V8InternalCode(super::V8InternalCode),
28345        #[prost(message, tag = "101")]
28346        V8WasmCode(super::V8WasmCode),
28347        #[prost(message, tag = "102")]
28348        V8RegExpCode(super::V8RegExpCode),
28349        #[prost(message, tag = "103")]
28350        V8CodeMove(super::V8CodeMove),
28351        /// Clock synchronization with remote machines.
28352        #[prost(message, tag = "107")]
28353        RemoteClockSync(super::RemoteClockSync),
28354        #[prost(message, tag = "110")]
28355        PixelModemEvents(super::PixelModemEvents),
28356        #[prost(message, tag = "111")]
28357        PixelModemTokenDatabase(super::PixelModemTokenDatabase),
28358        #[prost(message, tag = "113")]
28359        CloneSnapshotTrigger(super::Trigger),
28360        #[prost(message, tag = "115")]
28361        KernelWakelockData(super::KernelWakelockData),
28362        #[prost(message, tag = "119")]
28363        CpuPerUidData(super::CpuPerUidData),
28364        #[prost(message, tag = "123")]
28365        UserList(super::AndroidUserList),
28366        #[prost(message, tag = "132")]
28367        JournaldEvent(super::SystemdJournaldEvent),
28368        /// Injected into TracePacket by perfetto post-reboot recovery to record
28369        /// recovered trace metadata.
28370        #[prost(message, tag = "138")]
28371        RecoveredTraceInfo(super::RecoveredTraceInfo),
28372        /// Values of the cgroup v2 memory controller, from the "linux.cgroup" data
28373        /// source.
28374        #[prost(message, tag = "140")]
28375        MemcgStats(super::MemcgStats),
28376        /// This field is only used for testing.
28377        /// In previous versions of this proto this field had the id 268435455
28378        /// This caused many problems:
28379        /// - protozero decoder does not handle field ids larger than 999.
28380        /// - old versions of protoc produce Java bindings with syntax errors when
28381        ///    the field id is large enough.
28382        #[prost(message, tag = "900")]
28383        ForTesting(super::TestEvent),
28384        #[prost(message, tag = "76")]
28385        FrameTimelineEvent(super::FrameTimelineEvent),
28386    }
28387    /// Trusted user id of the producer which generated this packet. Keep in sync
28388    /// with TrustedPacket.trusted_uid.
28389    ///
28390    /// TODO(eseckler): Emit this field in a PacketSequenceDescriptor message
28391    /// instead.
28392    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
28393    pub enum OptionalTrustedUid {
28394        #[prost(int32, tag = "3")]
28395        TrustedUid(i32),
28396    }
28397    /// Service-assigned identifier of the packet sequence this packet belongs to.
28398    /// Uniquely identifies a producer + writer pair within the tracing session. A
28399    /// value of zero denotes an invalid ID. Keep in sync with
28400    /// TrustedPacket.trusted_packet_sequence_id.
28401    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
28402    pub enum OptionalTrustedPacketSequenceId {
28403        #[prost(uint32, tag = "10")]
28404        TrustedPacketSequenceId(u32),
28405    }
28406}
28407/// Do NOT add any other field here. This is just a convenience wrapper for
28408/// the use case of a trace being saved to a file. There are other cases
28409/// (streaming) where TracePacket are directly streamed without being wrapped
28410/// in a Trace proto. Nothing should ever rely on the full trace, all the
28411/// logic should be based on TracePacket(s).
28412#[derive(Clone, PartialEq, ::prost::Message)]
28413pub struct Trace {
28414    #[prost(message, repeated, tag = "1")]
28415    pub packet: ::prost::alloc::vec::Vec<TracePacket>,
28416}
28417/// Re-added for Fuchsia/Starnix compatibility:
28418#[derive(Clone, PartialEq, ::prost::Message)]
28419pub struct FrameTimelineEvent {
28420    #[prost(oneof = "frame_timeline_event::Event", tags = "1, 2, 3, 4, 5")]
28421    pub event: ::core::option::Option<frame_timeline_event::Event>,
28422}
28423/// Nested message and enum types in `FrameTimelineEvent`.
28424pub mod frame_timeline_event {
28425    /// Indicates the start of expected timeline slice for SurfaceFrames.
28426    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
28427    pub struct ExpectedSurfaceFrameStart {
28428        /// Cookie used to correlate between the start and end messages of the same
28429        /// frame. Since all values except the ts are same for start and end, cookie
28430        /// helps in preventing redundant data transmission.
28431        /// The same cookie is used only by start and end messages of a single frame
28432        /// and is otherwise unique.
28433        #[prost(int64, optional, tag = "1")]
28434        pub cookie: ::core::option::Option<i64>,
28435        /// Token received by the app for its work. Can be shared between multiple
28436        /// layers of the same app (example: pip mode).
28437        #[prost(int64, optional, tag = "2")]
28438        pub token: ::core::option::Option<i64>,
28439        /// The corresponding DisplayFrame token is required to link the App's work
28440        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
28441        /// DisplayFrame.
28442        /// this.display_frame_token = DisplayFrame.token
28443        #[prost(int64, optional, tag = "3")]
28444        pub display_frame_token: ::core::option::Option<i64>,
28445        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
28446        /// the respective process track group.
28447        #[prost(int32, optional, tag = "4")]
28448        pub pid: ::core::option::Option<i32>,
28449        #[prost(string, optional, tag = "5")]
28450        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
28451    }
28452    /// Indicates the start of actual timeline slice for SurfaceFrames. Also
28453    /// includes the jank information.
28454    #[derive(Clone, PartialEq, ::prost::Message)]
28455    pub struct ActualSurfaceFrameStart {
28456        /// Cookie used to correlate between the start and end messages of the same
28457        /// frame. Since all values except the ts are same for start and end, cookie
28458        /// helps in preventing redundant data transmission.
28459        /// The same cookie is used only by start and end messages of a single frame
28460        /// and is otherwise unique.
28461        #[prost(int64, optional, tag = "1")]
28462        pub cookie: ::core::option::Option<i64>,
28463        /// Token received by the app for its work. Can be shared between multiple
28464        /// layers of the same app (example: pip mode).
28465        #[prost(int64, optional, tag = "2")]
28466        pub token: ::core::option::Option<i64>,
28467        /// The corresponding DisplayFrame token is required to link the App's work
28468        /// with SurfaceFlinger's work. Many SurfaceFrames can be mapped to a single
28469        /// DisplayFrame.
28470        /// this.display_frame_token = DisplayFrame.token
28471        #[prost(int64, optional, tag = "3")]
28472        pub display_frame_token: ::core::option::Option<i64>,
28473        /// Pid of the app. Used in creating the timeline tracks (and slices) inside
28474        /// the respective process track group.
28475        #[prost(int32, optional, tag = "4")]
28476        pub pid: ::core::option::Option<i32>,
28477        #[prost(string, optional, tag = "5")]
28478        pub layer_name: ::core::option::Option<::prost::alloc::string::String>,
28479        #[prost(enumeration = "PresentType", optional, tag = "6")]
28480        pub present_type: ::core::option::Option<i32>,
28481        #[prost(bool, optional, tag = "7")]
28482        pub on_time_finish: ::core::option::Option<bool>,
28483        #[prost(bool, optional, tag = "8")]
28484        pub gpu_composition: ::core::option::Option<bool>,
28485        /// A bitmask of JankType. More than one reason can be attributed to a janky
28486        /// frame.
28487        #[prost(int32, optional, tag = "9")]
28488        pub jank_type: ::core::option::Option<i32>,
28489        #[prost(enumeration = "PredictionType", optional, tag = "10")]
28490        pub prediction_type: ::core::option::Option<i32>,
28491        #[prost(bool, optional, tag = "11")]
28492        pub is_buffer: ::core::option::Option<bool>,
28493        #[prost(enumeration = "JankSeverityType", optional, tag = "12")]
28494        pub jank_severity_type: ::core::option::Option<i32>,
28495        #[prost(float, optional, tag = "13")]
28496        pub present_delay_millis: ::core::option::Option<f32>,
28497        #[prost(float, optional, tag = "14")]
28498        pub vsync_resynced_jitter_millis: ::core::option::Option<f32>,
28499        #[prost(float, optional, tag = "15")]
28500        pub jank_severity_score: ::core::option::Option<f32>,
28501        /// experimental value for jank_type. Do not consider in jank analysis.
28502        #[prost(int32, optional, tag = "16")]
28503        pub jank_type_experimental: ::core::option::Option<i32>,
28504        /// experimental value for present_type. Do not consider in jank analysis.
28505        #[prost(enumeration = "PresentType", optional, tag = "17")]
28506        pub present_type_experimental: ::core::option::Option<i32>,
28507        /// jank metadata information (for debug).
28508        #[prost(float, optional, tag = "18")]
28509        pub jank_debug_metadata: ::core::option::Option<f32>,
28510        #[prost(
28511            enumeration = "actual_surface_frame_start::LatchedFenceState",
28512            optional,
28513            tag = "19"
28514        )]
28515        pub latched_fence_state: ::core::option::Option<i32>,
28516        /// animation time (ms) used when drawing this frame.
28517        #[prost(float, optional, tag = "20")]
28518        pub animation_time_millis: ::core::option::Option<f32>,
28519    }
28520    /// Nested message and enum types in `ActualSurfaceFrameStart`.
28521    pub mod actual_surface_frame_start {
28522        #[derive(
28523            Clone,
28524            Copy,
28525            Debug,
28526            PartialEq,
28527            Eq,
28528            Hash,
28529            PartialOrd,
28530            Ord,
28531            ::prost::Enumeration
28532        )]
28533        #[repr(i32)]
28534        pub enum LatchedFenceState {
28535            LatchedUnknown = 0,
28536            LatchedSignaled = 1,
28537            LatchedUnsignaled = 2,
28538            LatchedDelayedLatchUnsignaled = 3,
28539        }
28540        impl LatchedFenceState {
28541            /// String value of the enum field names used in the ProtoBuf definition.
28542            ///
28543            /// The values are not transformed in any way and thus are considered stable
28544            /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28545            pub fn as_str_name(&self) -> &'static str {
28546                match self {
28547                    Self::LatchedUnknown => "LATCHED_UNKNOWN",
28548                    Self::LatchedSignaled => "LATCHED_SIGNALED",
28549                    Self::LatchedUnsignaled => "LATCHED_UNSIGNALED",
28550                    Self::LatchedDelayedLatchUnsignaled => {
28551                        "LATCHED_DELAYED_LATCH_UNSIGNALED"
28552                    }
28553                }
28554            }
28555            /// Creates an enum from field names used in the ProtoBuf definition.
28556            pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28557                match value {
28558                    "LATCHED_UNKNOWN" => Some(Self::LatchedUnknown),
28559                    "LATCHED_SIGNALED" => Some(Self::LatchedSignaled),
28560                    "LATCHED_UNSIGNALED" => Some(Self::LatchedUnsignaled),
28561                    "LATCHED_DELAYED_LATCH_UNSIGNALED" => {
28562                        Some(Self::LatchedDelayedLatchUnsignaled)
28563                    }
28564                    _ => None,
28565                }
28566            }
28567        }
28568    }
28569    /// Indicates the start of expected timeline slice for DisplayFrames.
28570    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
28571    pub struct ExpectedDisplayFrameStart {
28572        /// Cookie used to correlate between the start and end messages of the same
28573        /// frame. Since all values except the ts are same for start and end, cookie
28574        /// helps in preventing redundant data transmission.
28575        /// The same cookie is used only by start and end messages of a single frame
28576        /// and is otherwise unique.
28577        #[prost(int64, optional, tag = "1")]
28578        pub cookie: ::core::option::Option<i64>,
28579        /// Token received by SurfaceFlinger for its work
28580        /// this.token = SurfaceFrame.display_frame_token
28581        #[prost(int64, optional, tag = "2")]
28582        pub token: ::core::option::Option<i64>,
28583        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
28584        /// inside the SurfaceFlinger process group.
28585        #[prost(int32, optional, tag = "3")]
28586        pub pid: ::core::option::Option<i32>,
28587    }
28588    /// Indicates the start of actual timeline slice for DisplayFrames. Also
28589    /// includes the jank information.
28590    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
28591    pub struct ActualDisplayFrameStart {
28592        /// Cookie used to correlate between the start and end messages of the same
28593        /// frame. Since all values except the ts are same for start and end, cookie
28594        /// helps in preventing redundant data transmission.
28595        /// The same cookie is used only by start and end messages of a single frame
28596        /// and is otherwise unique.
28597        #[prost(int64, optional, tag = "1")]
28598        pub cookie: ::core::option::Option<i64>,
28599        /// Token received by SurfaceFlinger for its work
28600        /// this.token = SurfaceFrame.display_frame_token
28601        #[prost(int64, optional, tag = "2")]
28602        pub token: ::core::option::Option<i64>,
28603        /// Pid of SurfaceFlinger. Used in creating the timeline tracks (and slices)
28604        /// inside the SurfaceFlinger process group.
28605        #[prost(int32, optional, tag = "3")]
28606        pub pid: ::core::option::Option<i32>,
28607        #[prost(enumeration = "PresentType", optional, tag = "4")]
28608        pub present_type: ::core::option::Option<i32>,
28609        #[prost(bool, optional, tag = "5")]
28610        pub on_time_finish: ::core::option::Option<bool>,
28611        #[prost(bool, optional, tag = "6")]
28612        pub gpu_composition: ::core::option::Option<bool>,
28613        /// A bitmask of JankType. More than one reason can be attributed to a janky
28614        /// frame.
28615        #[prost(int32, optional, tag = "7")]
28616        pub jank_type: ::core::option::Option<i32>,
28617        #[prost(enumeration = "PredictionType", optional, tag = "8")]
28618        pub prediction_type: ::core::option::Option<i32>,
28619        #[prost(enumeration = "JankSeverityType", optional, tag = "9")]
28620        pub jank_severity_type: ::core::option::Option<i32>,
28621        #[prost(float, optional, tag = "10")]
28622        pub present_delay_millis: ::core::option::Option<f32>,
28623        #[prost(float, optional, tag = "11")]
28624        pub jank_severity_score: ::core::option::Option<f32>,
28625        /// experimental value for jank_type. Do not consider in jank analysis.
28626        #[prost(int32, optional, tag = "12")]
28627        pub jank_type_experimental: ::core::option::Option<i32>,
28628        /// experimental value for present_type. Do not consider in jank analysis.
28629        #[prost(enumeration = "PresentType", optional, tag = "13")]
28630        pub present_type_experimental: ::core::option::Option<i32>,
28631        /// jank metadata information (for debug).
28632        #[prost(float, optional, tag = "14")]
28633        pub jank_debug_metadata: ::core::option::Option<f32>,
28634        #[prost(int64, optional, tag = "15")]
28635        pub latched_unsignaled_count: ::core::option::Option<i64>,
28636        #[prost(int64, optional, tag = "16")]
28637        pub addressable_unsignaled_latch_count: ::core::option::Option<i64>,
28638    }
28639    /// FrameEnd just sends the cookie to indicate that the corresponding
28640    /// <display/surface>frame slice's end.
28641    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
28642    pub struct FrameEnd {
28643        #[prost(int64, optional, tag = "1")]
28644        pub cookie: ::core::option::Option<i64>,
28645    }
28646    /// Specifies the reason(s) most likely to have caused the jank.
28647    /// Used as a bitmask.
28648    #[derive(
28649        Clone,
28650        Copy,
28651        Debug,
28652        PartialEq,
28653        Eq,
28654        Hash,
28655        PartialOrd,
28656        Ord,
28657        ::prost::Enumeration
28658    )]
28659    #[repr(i32)]
28660    pub enum JankType {
28661        JankUnspecified = 0,
28662        JankNone = 1,
28663        JankSfScheduling = 2,
28664        JankPredictionError = 4,
28665        JankDisplayHal = 8,
28666        JankSfCpuDeadlineMissed = 16,
28667        JankSfGpuDeadlineMissed = 32,
28668        JankAppDeadlineMissed = 64,
28669        JankBufferStuffing = 128,
28670        JankUnknown = 256,
28671        JankSfStuffing = 512,
28672        JankDropped = 1024,
28673        JankNonAnimating = 2048,
28674        JankAppResyncedJitter = 4096,
28675        JankDisplayNotOn = 8192,
28676        JankDisplayModeChangeInProgress = 16384,
28677        JankDisplayPowerModeChangeInProgress = 32768,
28678    }
28679    impl JankType {
28680        /// String value of the enum field names used in the ProtoBuf definition.
28681        ///
28682        /// The values are not transformed in any way and thus are considered stable
28683        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28684        pub fn as_str_name(&self) -> &'static str {
28685            match self {
28686                Self::JankUnspecified => "JANK_UNSPECIFIED",
28687                Self::JankNone => "JANK_NONE",
28688                Self::JankSfScheduling => "JANK_SF_SCHEDULING",
28689                Self::JankPredictionError => "JANK_PREDICTION_ERROR",
28690                Self::JankDisplayHal => "JANK_DISPLAY_HAL",
28691                Self::JankSfCpuDeadlineMissed => "JANK_SF_CPU_DEADLINE_MISSED",
28692                Self::JankSfGpuDeadlineMissed => "JANK_SF_GPU_DEADLINE_MISSED",
28693                Self::JankAppDeadlineMissed => "JANK_APP_DEADLINE_MISSED",
28694                Self::JankBufferStuffing => "JANK_BUFFER_STUFFING",
28695                Self::JankUnknown => "JANK_UNKNOWN",
28696                Self::JankSfStuffing => "JANK_SF_STUFFING",
28697                Self::JankDropped => "JANK_DROPPED",
28698                Self::JankNonAnimating => "JANK_NON_ANIMATING",
28699                Self::JankAppResyncedJitter => "JANK_APP_RESYNCED_JITTER",
28700                Self::JankDisplayNotOn => "JANK_DISPLAY_NOT_ON",
28701                Self::JankDisplayModeChangeInProgress => {
28702                    "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS"
28703                }
28704                Self::JankDisplayPowerModeChangeInProgress => {
28705                    "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS"
28706                }
28707            }
28708        }
28709        /// Creates an enum from field names used in the ProtoBuf definition.
28710        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28711            match value {
28712                "JANK_UNSPECIFIED" => Some(Self::JankUnspecified),
28713                "JANK_NONE" => Some(Self::JankNone),
28714                "JANK_SF_SCHEDULING" => Some(Self::JankSfScheduling),
28715                "JANK_PREDICTION_ERROR" => Some(Self::JankPredictionError),
28716                "JANK_DISPLAY_HAL" => Some(Self::JankDisplayHal),
28717                "JANK_SF_CPU_DEADLINE_MISSED" => Some(Self::JankSfCpuDeadlineMissed),
28718                "JANK_SF_GPU_DEADLINE_MISSED" => Some(Self::JankSfGpuDeadlineMissed),
28719                "JANK_APP_DEADLINE_MISSED" => Some(Self::JankAppDeadlineMissed),
28720                "JANK_BUFFER_STUFFING" => Some(Self::JankBufferStuffing),
28721                "JANK_UNKNOWN" => Some(Self::JankUnknown),
28722                "JANK_SF_STUFFING" => Some(Self::JankSfStuffing),
28723                "JANK_DROPPED" => Some(Self::JankDropped),
28724                "JANK_NON_ANIMATING" => Some(Self::JankNonAnimating),
28725                "JANK_APP_RESYNCED_JITTER" => Some(Self::JankAppResyncedJitter),
28726                "JANK_DISPLAY_NOT_ON" => Some(Self::JankDisplayNotOn),
28727                "JANK_DISPLAY_MODE_CHANGE_IN_PROGRESS" => {
28728                    Some(Self::JankDisplayModeChangeInProgress)
28729                }
28730                "JANK_DISPLAY_POWER_MODE_CHANGE_IN_PROGRESS" => {
28731                    Some(Self::JankDisplayPowerModeChangeInProgress)
28732                }
28733                _ => None,
28734            }
28735        }
28736    }
28737    /// Specifies the severity of a jank.
28738    #[derive(
28739        Clone,
28740        Copy,
28741        Debug,
28742        PartialEq,
28743        Eq,
28744        Hash,
28745        PartialOrd,
28746        Ord,
28747        ::prost::Enumeration
28748    )]
28749    #[repr(i32)]
28750    pub enum JankSeverityType {
28751        SeverityUnknown = 0,
28752        SeverityNone = 1,
28753        SeverityPartial = 2,
28754        SeverityFull = 3,
28755    }
28756    impl JankSeverityType {
28757        /// String value of the enum field names used in the ProtoBuf definition.
28758        ///
28759        /// The values are not transformed in any way and thus are considered stable
28760        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28761        pub fn as_str_name(&self) -> &'static str {
28762            match self {
28763                Self::SeverityUnknown => "SEVERITY_UNKNOWN",
28764                Self::SeverityNone => "SEVERITY_NONE",
28765                Self::SeverityPartial => "SEVERITY_PARTIAL",
28766                Self::SeverityFull => "SEVERITY_FULL",
28767            }
28768        }
28769        /// Creates an enum from field names used in the ProtoBuf definition.
28770        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28771            match value {
28772                "SEVERITY_UNKNOWN" => Some(Self::SeverityUnknown),
28773                "SEVERITY_NONE" => Some(Self::SeverityNone),
28774                "SEVERITY_PARTIAL" => Some(Self::SeverityPartial),
28775                "SEVERITY_FULL" => Some(Self::SeverityFull),
28776                _ => None,
28777            }
28778        }
28779    }
28780    /// Specifies how a frame was presented on screen w.r.t. timing.
28781    /// Can be different for SurfaceFrame and DisplayFrame.
28782    #[derive(
28783        Clone,
28784        Copy,
28785        Debug,
28786        PartialEq,
28787        Eq,
28788        Hash,
28789        PartialOrd,
28790        Ord,
28791        ::prost::Enumeration
28792    )]
28793    #[repr(i32)]
28794    pub enum PresentType {
28795        PresentUnspecified = 0,
28796        PresentOnTime = 1,
28797        PresentLate = 2,
28798        PresentEarly = 3,
28799        PresentDropped = 4,
28800        PresentUnknown = 5,
28801    }
28802    impl PresentType {
28803        /// String value of the enum field names used in the ProtoBuf definition.
28804        ///
28805        /// The values are not transformed in any way and thus are considered stable
28806        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28807        pub fn as_str_name(&self) -> &'static str {
28808            match self {
28809                Self::PresentUnspecified => "PRESENT_UNSPECIFIED",
28810                Self::PresentOnTime => "PRESENT_ON_TIME",
28811                Self::PresentLate => "PRESENT_LATE",
28812                Self::PresentEarly => "PRESENT_EARLY",
28813                Self::PresentDropped => "PRESENT_DROPPED",
28814                Self::PresentUnknown => "PRESENT_UNKNOWN",
28815            }
28816        }
28817        /// Creates an enum from field names used in the ProtoBuf definition.
28818        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28819            match value {
28820                "PRESENT_UNSPECIFIED" => Some(Self::PresentUnspecified),
28821                "PRESENT_ON_TIME" => Some(Self::PresentOnTime),
28822                "PRESENT_LATE" => Some(Self::PresentLate),
28823                "PRESENT_EARLY" => Some(Self::PresentEarly),
28824                "PRESENT_DROPPED" => Some(Self::PresentDropped),
28825                "PRESENT_UNKNOWN" => Some(Self::PresentUnknown),
28826                _ => None,
28827            }
28828        }
28829    }
28830    /// Specifies if the predictions for the frame are still valid, expired or
28831    /// unknown.
28832    #[derive(
28833        Clone,
28834        Copy,
28835        Debug,
28836        PartialEq,
28837        Eq,
28838        Hash,
28839        PartialOrd,
28840        Ord,
28841        ::prost::Enumeration
28842    )]
28843    #[repr(i32)]
28844    pub enum PredictionType {
28845        PredictionUnspecified = 0,
28846        PredictionValid = 1,
28847        PredictionExpired = 2,
28848        PredictionUnknown = 3,
28849    }
28850    impl PredictionType {
28851        /// String value of the enum field names used in the ProtoBuf definition.
28852        ///
28853        /// The values are not transformed in any way and thus are considered stable
28854        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28855        pub fn as_str_name(&self) -> &'static str {
28856            match self {
28857                Self::PredictionUnspecified => "PREDICTION_UNSPECIFIED",
28858                Self::PredictionValid => "PREDICTION_VALID",
28859                Self::PredictionExpired => "PREDICTION_EXPIRED",
28860                Self::PredictionUnknown => "PREDICTION_UNKNOWN",
28861            }
28862        }
28863        /// Creates an enum from field names used in the ProtoBuf definition.
28864        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28865            match value {
28866                "PREDICTION_UNSPECIFIED" => Some(Self::PredictionUnspecified),
28867                "PREDICTION_VALID" => Some(Self::PredictionValid),
28868                "PREDICTION_EXPIRED" => Some(Self::PredictionExpired),
28869                "PREDICTION_UNKNOWN" => Some(Self::PredictionUnknown),
28870                _ => None,
28871            }
28872        }
28873    }
28874    #[derive(Clone, PartialEq, ::prost::Oneof)]
28875    pub enum Event {
28876        #[prost(message, tag = "1")]
28877        ExpectedDisplayFrameStart(ExpectedDisplayFrameStart),
28878        #[prost(message, tag = "2")]
28879        ActualDisplayFrameStart(ActualDisplayFrameStart),
28880        #[prost(message, tag = "3")]
28881        ExpectedSurfaceFrameStart(ExpectedSurfaceFrameStart),
28882        #[prost(message, tag = "4")]
28883        ActualSurfaceFrameStart(ActualSurfaceFrameStart),
28884        #[prost(message, tag = "5")]
28885        FrameEnd(FrameEnd),
28886    }
28887}
28888#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28889#[repr(i32)]
28890pub enum VmCursorEnum {
28891    VmCursorUnspecified = 0,
28892    VmCursorSrc = 1,
28893    VmCursorDst = 2,
28894    VmCursorBoth = 3,
28895}
28896impl VmCursorEnum {
28897    /// String value of the enum field names used in the ProtoBuf definition.
28898    ///
28899    /// The values are not transformed in any way and thus are considered stable
28900    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28901    pub fn as_str_name(&self) -> &'static str {
28902        match self {
28903            Self::VmCursorUnspecified => "VM_CURSOR_UNSPECIFIED",
28904            Self::VmCursorSrc => "VM_CURSOR_SRC",
28905            Self::VmCursorDst => "VM_CURSOR_DST",
28906            Self::VmCursorBoth => "VM_CURSOR_BOTH",
28907        }
28908    }
28909    /// Creates an enum from field names used in the ProtoBuf definition.
28910    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28911        match value {
28912            "VM_CURSOR_UNSPECIFIED" => Some(Self::VmCursorUnspecified),
28913            "VM_CURSOR_SRC" => Some(Self::VmCursorSrc),
28914            "VM_CURSOR_DST" => Some(Self::VmCursorDst),
28915            "VM_CURSOR_BOTH" => Some(Self::VmCursorBoth),
28916            _ => None,
28917        }
28918    }
28919}
28920/// Builtin clock domains used in Perfetto traces.
28921///
28922/// The default trace time clock is BUILTIN_CLOCK_TRACE_FILE: a synthetic clock
28923/// representing the trace file's own timeline. Each trace file gets its own
28924/// instance (scoped by trace file index).
28925///
28926/// For backwards compatibility, Perfetto proto traces register BOOTTIME as a
28927/// fallback: if the first timestamp conversion uses a clock other than the
28928/// trace file clock and no explicit clock snapshot data exists, the trace time
28929/// is switched to BOOTTIME. This fallback does not fire for modern traces that
28930/// include ClockSnapshots or that only use the trace file clock directly.
28931///
28932/// The `primary_trace_clock` field in ClockSnapshot can definitively override
28933/// the trace time clock regardless of the above.
28934#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
28935#[repr(i32)]
28936pub enum BuiltinClock {
28937    Unknown = 0,
28938    /// Corresponds to CLOCK_REALTIME. See clock_gettime(2).
28939    Realtime = 1,
28940    /// Corresponds to CLOCK_REALTIME_COARSE. See clock_gettime(2).
28941    RealtimeCoarse = 2,
28942    /// Corresponds to CLOCK_MONOTONIC. See clock_gettime(2).
28943    Monotonic = 3,
28944    /// Corresponds to CLOCK_MONOTONIC_COARSE. See clock_gettime(2).
28945    MonotonicCoarse = 4,
28946    /// Corresponds to CLOCK_MONOTONIC_RAW. See clock_gettime(2).
28947    MonotonicRaw = 5,
28948    /// Corresponds to CLOCK_BOOTTIME. See clock_gettime(2).
28949    /// For proto traces, this is used as a backwards-compatible fallback trace
28950    /// time clock when no explicit clock snapshots are present.
28951    Boottime = 6,
28952    /// TSC (Time Stamp Counter). Architecture-specific high-resolution counter.
28953    Tsc = 9,
28954    /// Corresponds to the perf event clock (PERF_CLOCK).
28955    Perf = 10,
28956    /// A synthetic clock representing the trace file's own timeline. Each trace
28957    /// file gets its own instance (scoped by trace file index). This is the
28958    /// default trace time clock before any clock snapshot or format-specific
28959    /// override takes effect.
28960    TraceFile = 11,
28961    MaxId = 63,
28962}
28963impl BuiltinClock {
28964    /// String value of the enum field names used in the ProtoBuf definition.
28965    ///
28966    /// The values are not transformed in any way and thus are considered stable
28967    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
28968    pub fn as_str_name(&self) -> &'static str {
28969        match self {
28970            Self::Unknown => "BUILTIN_CLOCK_UNKNOWN",
28971            Self::Realtime => "BUILTIN_CLOCK_REALTIME",
28972            Self::RealtimeCoarse => "BUILTIN_CLOCK_REALTIME_COARSE",
28973            Self::Monotonic => "BUILTIN_CLOCK_MONOTONIC",
28974            Self::MonotonicCoarse => "BUILTIN_CLOCK_MONOTONIC_COARSE",
28975            Self::MonotonicRaw => "BUILTIN_CLOCK_MONOTONIC_RAW",
28976            Self::Boottime => "BUILTIN_CLOCK_BOOTTIME",
28977            Self::Tsc => "BUILTIN_CLOCK_TSC",
28978            Self::Perf => "BUILTIN_CLOCK_PERF",
28979            Self::TraceFile => "BUILTIN_CLOCK_TRACE_FILE",
28980            Self::MaxId => "BUILTIN_CLOCK_MAX_ID",
28981        }
28982    }
28983    /// Creates an enum from field names used in the ProtoBuf definition.
28984    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
28985        match value {
28986            "BUILTIN_CLOCK_UNKNOWN" => Some(Self::Unknown),
28987            "BUILTIN_CLOCK_REALTIME" => Some(Self::Realtime),
28988            "BUILTIN_CLOCK_REALTIME_COARSE" => Some(Self::RealtimeCoarse),
28989            "BUILTIN_CLOCK_MONOTONIC" => Some(Self::Monotonic),
28990            "BUILTIN_CLOCK_MONOTONIC_COARSE" => Some(Self::MonotonicCoarse),
28991            "BUILTIN_CLOCK_MONOTONIC_RAW" => Some(Self::MonotonicRaw),
28992            "BUILTIN_CLOCK_BOOTTIME" => Some(Self::Boottime),
28993            "BUILTIN_CLOCK_TSC" => Some(Self::Tsc),
28994            "BUILTIN_CLOCK_PERF" => Some(Self::Perf),
28995            "BUILTIN_CLOCK_TRACE_FILE" => Some(Self::TraceFile),
28996            "BUILTIN_CLOCK_MAX_ID" => Some(Self::MaxId),
28997            _ => None,
28998        }
28999    }
29000}
29001/// Semantic types for string fields. This tells the filter what kind of
29002/// data the field contains, so it can apply the right filtering rules.
29003/// See /rfcs/0011-subset-string-filter-rules.md for design details.
29004/// Introduced in: Perfetto v54.
29005#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29006#[repr(i32)]
29007pub enum SemanticType {
29008    Unspecified = 0,
29009    Atrace = 1,
29010    Job = 2,
29011    Wakelock = 3,
29012}
29013impl SemanticType {
29014    /// String value of the enum field names used in the ProtoBuf definition.
29015    ///
29016    /// The values are not transformed in any way and thus are considered stable
29017    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29018    pub fn as_str_name(&self) -> &'static str {
29019        match self {
29020            Self::Unspecified => "SEMANTIC_TYPE_UNSPECIFIED",
29021            Self::Atrace => "SEMANTIC_TYPE_ATRACE",
29022            Self::Job => "SEMANTIC_TYPE_JOB",
29023            Self::Wakelock => "SEMANTIC_TYPE_WAKELOCK",
29024        }
29025    }
29026    /// Creates an enum from field names used in the ProtoBuf definition.
29027    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
29028        match value {
29029            "SEMANTIC_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
29030            "SEMANTIC_TYPE_ATRACE" => Some(Self::Atrace),
29031            "SEMANTIC_TYPE_JOB" => Some(Self::Job),
29032            "SEMANTIC_TYPE_WAKELOCK" => Some(Self::Wakelock),
29033            _ => None,
29034        }
29035    }
29036}
29037/// Values from NDK's android/log.h.
29038#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29039#[repr(i32)]
29040pub enum AndroidLogId {
29041    /// MAIN.
29042    LidDefault = 0,
29043    LidRadio = 1,
29044    LidEvents = 2,
29045    LidSystem = 3,
29046    LidCrash = 4,
29047    LidStats = 5,
29048    LidSecurity = 6,
29049    LidKernel = 7,
29050}
29051impl AndroidLogId {
29052    /// String value of the enum field names used in the ProtoBuf definition.
29053    ///
29054    /// The values are not transformed in any way and thus are considered stable
29055    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29056    pub fn as_str_name(&self) -> &'static str {
29057        match self {
29058            Self::LidDefault => "LID_DEFAULT",
29059            Self::LidRadio => "LID_RADIO",
29060            Self::LidEvents => "LID_EVENTS",
29061            Self::LidSystem => "LID_SYSTEM",
29062            Self::LidCrash => "LID_CRASH",
29063            Self::LidStats => "LID_STATS",
29064            Self::LidSecurity => "LID_SECURITY",
29065            Self::LidKernel => "LID_KERNEL",
29066        }
29067    }
29068    /// Creates an enum from field names used in the ProtoBuf definition.
29069    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
29070        match value {
29071            "LID_DEFAULT" => Some(Self::LidDefault),
29072            "LID_RADIO" => Some(Self::LidRadio),
29073            "LID_EVENTS" => Some(Self::LidEvents),
29074            "LID_SYSTEM" => Some(Self::LidSystem),
29075            "LID_CRASH" => Some(Self::LidCrash),
29076            "LID_STATS" => Some(Self::LidStats),
29077            "LID_SECURITY" => Some(Self::LidSecurity),
29078            "LID_KERNEL" => Some(Self::LidKernel),
29079            _ => None,
29080        }
29081    }
29082}
29083#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29084#[repr(i32)]
29085pub enum AndroidLogPriority {
29086    PrioUnspecified = 0,
29087    /// _DEFAULT, but should never be seen in logs.
29088    PrioUnused = 1,
29089    PrioVerbose = 2,
29090    PrioDebug = 3,
29091    PrioInfo = 4,
29092    PrioWarn = 5,
29093    PrioError = 6,
29094    PrioFatal = 7,
29095}
29096impl AndroidLogPriority {
29097    /// String value of the enum field names used in the ProtoBuf definition.
29098    ///
29099    /// The values are not transformed in any way and thus are considered stable
29100    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29101    pub fn as_str_name(&self) -> &'static str {
29102        match self {
29103            Self::PrioUnspecified => "PRIO_UNSPECIFIED",
29104            Self::PrioUnused => "PRIO_UNUSED",
29105            Self::PrioVerbose => "PRIO_VERBOSE",
29106            Self::PrioDebug => "PRIO_DEBUG",
29107            Self::PrioInfo => "PRIO_INFO",
29108            Self::PrioWarn => "PRIO_WARN",
29109            Self::PrioError => "PRIO_ERROR",
29110            Self::PrioFatal => "PRIO_FATAL",
29111        }
29112    }
29113    /// Creates an enum from field names used in the ProtoBuf definition.
29114    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
29115        match value {
29116            "PRIO_UNSPECIFIED" => Some(Self::PrioUnspecified),
29117            "PRIO_UNUSED" => Some(Self::PrioUnused),
29118            "PRIO_VERBOSE" => Some(Self::PrioVerbose),
29119            "PRIO_DEBUG" => Some(Self::PrioDebug),
29120            "PRIO_INFO" => Some(Self::PrioInfo),
29121            "PRIO_WARN" => Some(Self::PrioWarn),
29122            "PRIO_ERROR" => Some(Self::PrioError),
29123            "PRIO_FATAL" => Some(Self::PrioFatal),
29124            _ => None,
29125        }
29126    }
29127}
29128#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29129#[repr(i32)]
29130pub enum ProtoLogLevel {
29131    ProtologLevelUndefined = 0,
29132    ProtologLevelDebug = 1,
29133    ProtologLevelVerbose = 2,
29134    ProtologLevelInfo = 3,
29135    ProtologLevelWarn = 4,
29136    ProtologLevelError = 5,
29137    ProtologLevelWtf = 6,
29138}
29139impl ProtoLogLevel {
29140    /// String value of the enum field names used in the ProtoBuf definition.
29141    ///
29142    /// The values are not transformed in any way and thus are considered stable
29143    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
29144    pub fn as_str_name(&self) -> &'static str {
29145        match self {
29146            Self::ProtologLevelUndefined => "PROTOLOG_LEVEL_UNDEFINED",
29147            Self::ProtologLevelDebug => "PROTOLOG_LEVEL_DEBUG",
29148            Self::ProtologLevelVerbose => "PROTOLOG_LEVEL_VERBOSE",
29149            Self::ProtologLevelInfo => "PROTOLOG_LEVEL_INFO",
29150            Self::ProtologLevelWarn => "PROTOLOG_LEVEL_WARN",
29151            Self::ProtologLevelError => "PROTOLOG_LEVEL_ERROR",
29152            Self::ProtologLevelWtf => "PROTOLOG_LEVEL_WTF",
29153        }
29154    }
29155    /// Creates an enum from field names used in the ProtoBuf definition.
29156    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
29157        match value {
29158            "PROTOLOG_LEVEL_UNDEFINED" => Some(Self::ProtologLevelUndefined),
29159            "PROTOLOG_LEVEL_DEBUG" => Some(Self::ProtologLevelDebug),
29160            "PROTOLOG_LEVEL_VERBOSE" => Some(Self::ProtologLevelVerbose),
29161            "PROTOLOG_LEVEL_INFO" => Some(Self::ProtologLevelInfo),
29162            "PROTOLOG_LEVEL_WARN" => Some(Self::ProtologLevelWarn),
29163            "PROTOLOG_LEVEL_ERROR" => Some(Self::ProtologLevelError),
29164            "PROTOLOG_LEVEL_WTF" => Some(Self::ProtologLevelWtf),
29165            _ => None,
29166        }
29167    }
29168}
29169/// This enum is obtained by post-processing
29170/// AOSP/frameworks/proto_logging/stats/atoms.proto through
29171/// AOSP/external/perfetto/tools/update-statsd-descriptor, which extracts one
29172/// enum value for each proto field defined in the upstream atoms.proto.
29173#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
29174#[repr(i32)]
29175pub enum AtomId {
29176    AtomUnspecified = 0,
29177    AtomBleScanStateChanged = 2,
29178    AtomProcessStateChanged = 3,
29179    AtomBleScanResultReceived = 4,
29180    AtomSensorStateChanged = 5,
29181    AtomGpsScanStateChanged = 6,
29182    AtomSyncStateChanged = 7,
29183    AtomScheduledJobStateChanged = 8,
29184    AtomScreenBrightnessChanged = 9,
29185    AtomWakelockStateChanged = 10,
29186    AtomLongPartialWakelockStateChanged = 11,
29187    AtomMobileRadioPowerStateChanged = 12,
29188    AtomWifiRadioPowerStateChanged = 13,
29189    AtomActivityManagerSleepStateChanged = 14,
29190    AtomMemoryFactorStateChanged = 15,
29191    AtomExcessiveCpuUsageReported = 16,
29192    AtomCachedKillReported = 17,
29193    AtomProcessMemoryStatReported = 18,
29194    AtomLauncherEvent = 19,
29195    AtomBatterySaverModeStateChanged = 20,
29196    AtomDeviceIdleModeStateChanged = 21,
29197    AtomDeviceIdlingModeStateChanged = 22,
29198    AtomAudioStateChanged = 23,
29199    AtomMediaCodecStateChanged = 24,
29200    AtomCameraStateChanged = 25,
29201    AtomFlashlightStateChanged = 26,
29202    AtomUidProcessStateChanged = 27,
29203    AtomProcessLifeCycleStateChanged = 28,
29204    AtomScreenStateChanged = 29,
29205    AtomBatteryLevelChanged = 30,
29206    AtomChargingStateChanged = 31,
29207    AtomPluggedStateChanged = 32,
29208    AtomInteractiveStateChanged = 33,
29209    AtomTouchEventReported = 34,
29210    AtomWakeupAlarmOccurred = 35,
29211    AtomKernelWakeupReported = 36,
29212    AtomWifiLockStateChanged = 37,
29213    AtomWifiSignalStrengthChanged = 38,
29214    AtomWifiScanStateChanged = 39,
29215    AtomPhoneSignalStrengthChanged = 40,
29216    AtomSettingChanged = 41,
29217    AtomActivityForegroundStateChanged = 42,
29218    AtomIsolatedUidChanged = 43,
29219    AtomPacketWakeupOccurred = 44,
29220    AtomWallClockTimeShifted = 45,
29221    AtomAnomalyDetected = 46,
29222    AtomAppBreadcrumbReported = 47,
29223    AtomAppStartOccurred = 48,
29224    AtomAppStartCanceled = 49,
29225    AtomAppStartFullyDrawn = 50,
29226    AtomLmkKillOccurred = 51,
29227    AtomPictureInPictureStateChanged = 52,
29228    AtomWifiMulticastLockStateChanged = 53,
29229    AtomAppStartMemoryStateCaptured = 55,
29230    AtomShutdownSequenceReported = 56,
29231    AtomBootSequenceReported = 57,
29232    AtomOverlayStateChanged = 59,
29233    AtomForegroundServiceStateChanged = 60,
29234    AtomCallStateChanged = 61,
29235    AtomKeyguardStateChanged = 62,
29236    AtomKeyguardBouncerStateChanged = 63,
29237    AtomKeyguardBouncerPasswordEntered = 64,
29238    AtomAppDied = 65,
29239    AtomResourceConfigurationChanged = 66,
29240    AtomBluetoothEnabledStateChanged = 67,
29241    AtomBluetoothConnectionStateChanged = 68,
29242    AtomGpsSignalQualityChanged = 69,
29243    AtomUsbConnectorStateChanged = 70,
29244    AtomSpeakerImpedanceReported = 71,
29245    AtomHardwareFailed = 72,
29246    AtomPhysicalDropDetected = 73,
29247    AtomChargeCyclesReported = 74,
29248    AtomMobileConnectionStateChanged = 75,
29249    AtomMobileRadioTechnologyChanged = 76,
29250    AtomUsbDeviceAttached = 77,
29251    AtomAppCrashOccurred = 78,
29252    AtomAnrOccurred = 79,
29253    AtomWtfOccurred = 80,
29254    AtomLowMemReported = 81,
29255    AtomGenericAtom = 82,
29256    AtomVibratorStateChanged = 84,
29257    AtomDeferredJobStatsReported = 85,
29258    AtomThermalThrottling = 86,
29259    AtomBiometricAcquired = 87,
29260    AtomBiometricAuthenticated = 88,
29261    AtomBiometricErrorOccurred = 89,
29262    AtomUiEventReported = 90,
29263    AtomBatteryHealthSnapshot = 91,
29264    AtomSlowIo = 92,
29265    AtomBatteryCausedShutdown = 93,
29266    AtomPhoneServiceStateChanged = 94,
29267    AtomPhoneStateChanged = 95,
29268    AtomUserRestrictionChanged = 96,
29269    AtomSettingsUiChanged = 97,
29270    AtomConnectivityStateChanged = 98,
29271    AtomServiceStateChanged = 99,
29272    AtomServiceLaunchReported = 100,
29273    AtomFlagFlipUpdateOccurred = 101,
29274    AtomBinaryPushStateChanged = 102,
29275    AtomDevicePolicyEvent = 103,
29276    AtomDocsUiFileOpCanceled = 104,
29277    AtomDocsUiFileOpCopyMoveModeReported = 105,
29278    AtomDocsUiFileOpFailure = 106,
29279    AtomDocsUiProviderFileOp = 107,
29280    AtomDocsUiInvalidScopedAccessRequest = 108,
29281    AtomDocsUiLaunchReported = 109,
29282    AtomDocsUiRootVisited = 110,
29283    AtomDocsUiStartupMs = 111,
29284    AtomDocsUiUserActionReported = 112,
29285    AtomWifiEnabledStateChanged = 113,
29286    AtomWifiRunningStateChanged = 114,
29287    AtomAppCompacted = 115,
29288    AtomNetworkDnsEventReported = 116,
29289    AtomDocsUiPickerLaunchedFromReported = 117,
29290    AtomDocsUiPickResultReported = 118,
29291    AtomDocsUiSearchModeReported = 119,
29292    AtomDocsUiSearchTypeReported = 120,
29293    AtomDataStallEvent = 121,
29294    AtomRescuePartyResetReported = 122,
29295    AtomSignedConfigReported = 123,
29296    AtomGnssNiEventReported = 124,
29297    AtomBluetoothLinkLayerConnectionEvent = 125,
29298    AtomBluetoothAclConnectionStateChanged = 126,
29299    AtomBluetoothScoConnectionStateChanged = 127,
29300    AtomAppDowngraded = 128,
29301    AtomAppOptimizedAfterDowngraded = 129,
29302    AtomLowStorageStateChanged = 130,
29303    AtomGnssNfwNotificationReported = 131,
29304    AtomGnssConfigurationReported = 132,
29305    AtomUsbPortOverheatEventReported = 133,
29306    AtomNfcErrorOccurred = 134,
29307    AtomNfcStateChanged = 135,
29308    AtomNfcBeamOccurred = 136,
29309    AtomNfcCardemulationOccurred = 137,
29310    AtomNfcTagOccurred = 138,
29311    AtomNfcHceTransactionOccurred = 139,
29312    AtomSeStateChanged = 140,
29313    AtomSeOmapiReported = 141,
29314    AtomBroadcastDispatchLatencyReported = 142,
29315    AtomAttentionManagerServiceResultReported = 143,
29316    AtomAdbConnectionChanged = 144,
29317    AtomSpeechDspStatReported = 145,
29318    AtomUsbContaminantReported = 146,
29319    AtomWatchdogRollbackOccurred = 147,
29320    AtomBiometricSystemHealthIssueDetected = 148,
29321    AtomBubbleUiChanged = 149,
29322    AtomScheduledJobConstraintChanged = 150,
29323    AtomBluetoothActiveDeviceChanged = 151,
29324    AtomBluetoothA2dpPlaybackStateChanged = 152,
29325    AtomBluetoothA2dpCodecConfigChanged = 153,
29326    AtomBluetoothA2dpCodecCapabilityChanged = 154,
29327    AtomBluetoothA2dpAudioUnderrunReported = 155,
29328    AtomBluetoothA2dpAudioOverrunReported = 156,
29329    AtomBluetoothDeviceRssiReported = 157,
29330    AtomBluetoothDeviceFailedContactCounterReported = 158,
29331    AtomBluetoothDeviceTxPowerLevelReported = 159,
29332    AtomBluetoothHciTimeoutReported = 160,
29333    AtomBluetoothQualityReportReported = 161,
29334    AtomBluetoothDeviceInfoReported = 162,
29335    AtomBluetoothRemoteVersionInfoReported = 163,
29336    AtomBluetoothSdpAttributeReported = 164,
29337    AtomBluetoothBondStateChanged = 165,
29338    AtomBluetoothClassicPairingEventReported = 166,
29339    AtomBluetoothSmpPairingEventReported = 167,
29340    AtomScreenTimeoutExtensionReported = 168,
29341    AtomProcessStartTime = 169,
29342    AtomPermissionGrantRequestResultReported = 170,
29343    AtomBluetoothSocketConnectionStateChanged = 171,
29344    AtomDeviceIdentifierAccessDenied = 172,
29345    AtomBubbleDeveloperErrorReported = 173,
29346    AtomAssistGestureStageReported = 174,
29347    AtomAssistGestureFeedbackReported = 175,
29348    AtomAssistGestureProgressReported = 176,
29349    AtomTouchGestureClassified = 177,
29350    AtomHiddenApiUsed = 178,
29351    AtomStyleUiChanged = 179,
29352    AtomPrivacyIndicatorsInteracted = 180,
29353    AtomAppInstallOnExternalStorageReported = 181,
29354    AtomNetworkStackReported = 182,
29355    AtomAppMovedStorageReported = 183,
29356    AtomBiometricEnrolled = 184,
29357    AtomSystemServerWatchdogOccurred = 185,
29358    AtomTombStoneOccurred = 186,
29359    AtomBluetoothClassOfDeviceReported = 187,
29360    AtomIntelligenceEventReported = 188,
29361    AtomThermalThrottlingSeverityStateChanged = 189,
29362    AtomRoleRequestResultReported = 190,
29363    AtomMediametricsAudiopolicyReported = 191,
29364    AtomMediametricsAudiorecordReported = 192,
29365    AtomMediametricsAudiothreadReported = 193,
29366    AtomMediametricsAudiotrackReported = 194,
29367    AtomMediametricsCodecReported = 195,
29368    AtomMediametricsDrmWidevineReported = 196,
29369    AtomMediametricsExtractorReported = 197,
29370    AtomMediametricsMediadrmReported = 198,
29371    AtomMediametricsNuplayerReported = 199,
29372    AtomMediametricsRecorderReported = 200,
29373    AtomMediametricsDrmmanagerReported = 201,
29374    AtomCarPowerStateChanged = 203,
29375    AtomGarageModeInfo = 204,
29376    AtomTestAtomReported = 205,
29377    AtomContentCaptureCallerMismatchReported = 206,
29378    AtomContentCaptureServiceEvents = 207,
29379    AtomContentCaptureSessionEvents = 208,
29380    AtomContentCaptureFlushed = 209,
29381    AtomLocationManagerApiUsageReported = 210,
29382    AtomReviewPermissionsFragmentResultReported = 211,
29383    AtomRuntimePermissionsUpgradeResult = 212,
29384    AtomGrantPermissionsActivityButtonActions = 213,
29385    AtomLocationAccessCheckNotificationAction = 214,
29386    AtomAppPermissionFragmentActionReported = 215,
29387    AtomAppPermissionFragmentViewed = 216,
29388    AtomAppPermissionsFragmentViewed = 217,
29389    AtomPermissionAppsFragmentViewed = 218,
29390    AtomTextSelectionEvent = 219,
29391    AtomTextLinkifyEvent = 220,
29392    AtomConversationActionsEvent = 221,
29393    AtomLanguageDetectionEvent = 222,
29394    AtomExclusionRectStateChanged = 223,
29395    AtomBackGestureReportedReported = 224,
29396    AtomUpdateEngineUpdateAttemptReported = 225,
29397    AtomUpdateEngineSuccessfulUpdateReported = 226,
29398    AtomCameraActionEvent = 227,
29399    AtomAppCompatibilityChangeReported = 228,
29400    AtomPerfettoUploaded = 229,
29401    AtomVmsClientConnectionStateChanged = 230,
29402    AtomMediaProviderScanOccurred = 233,
29403    AtomMediaContentDeleted = 234,
29404    AtomMediaProviderPermissionRequested = 235,
29405    AtomMediaProviderSchemaChanged = 236,
29406    AtomMediaProviderIdleMaintenanceFinished = 237,
29407    AtomRebootEscrowRecoveryReported = 238,
29408    AtomBootTimeEventDurationReported = 239,
29409    AtomBootTimeEventElapsedTimeReported = 240,
29410    AtomBootTimeEventUtcTimeReported = 241,
29411    AtomBootTimeEventErrorCodeReported = 242,
29412    AtomUserspaceRebootReported = 243,
29413    AtomNotificationReported = 244,
29414    AtomNotificationPanelReported = 245,
29415    AtomNotificationChannelModified = 246,
29416    AtomIntegrityCheckResultReported = 247,
29417    AtomIntegrityRulesPushed = 248,
29418    AtomCbMessageReported = 249,
29419    AtomCbMessageError = 250,
29420    AtomWifiHealthStatReported = 251,
29421    AtomWifiFailureStatReported = 252,
29422    AtomWifiConnectionResultReported = 253,
29423    AtomAppFreezeChanged = 254,
29424    AtomSnapshotMergeReported = 255,
29425    AtomForegroundServiceAppOpSessionEnded = 256,
29426    AtomDisplayJankReported = 257,
29427    AtomAppStandbyBucketChanged = 258,
29428    AtomSharesheetStarted = 259,
29429    AtomRankingSelected = 260,
29430    AtomTvsettingsUiInteracted = 261,
29431    AtomLauncherSnapshot = 262,
29432    AtomPackageInstallerV2Reported = 263,
29433    AtomUserLifecycleJourneyReported = 264,
29434    AtomUserLifecycleEventOccurred = 265,
29435    AtomAccessibilityShortcutReported = 266,
29436    AtomAccessibilityServiceReported = 267,
29437    AtomDocsUiDragAndDropReported = 268,
29438    AtomAppUsageEventOccurred = 269,
29439    AtomAutoRevokeNotificationClicked = 270,
29440    AtomAutoRevokeFragmentAppViewed = 271,
29441    AtomAutoRevokedAppInteraction = 272,
29442    AtomAppPermissionGroupsFragmentAutoRevokeAction = 273,
29443    AtomEvsUsageStatsReported = 274,
29444    AtomAudioPowerUsageDataReported = 275,
29445    AtomTvTunerStateChanged = 276,
29446    AtomMediaoutputOpSwitchReported = 277,
29447    AtomCbMessageFiltered = 278,
29448    AtomTvTunerDvrStatus = 279,
29449    AtomTvCasSessionOpenStatus = 280,
29450    AtomAssistantInvocationReported = 281,
29451    AtomDisplayWakeReported = 282,
29452    AtomCarUserHalModifyUserRequestReported = 283,
29453    AtomCarUserHalModifyUserResponseReported = 284,
29454    AtomCarUserHalPostSwitchResponseReported = 285,
29455    AtomCarUserHalInitialUserInfoRequestReported = 286,
29456    AtomCarUserHalInitialUserInfoResponseReported = 287,
29457    AtomCarUserHalUserAssociationRequestReported = 288,
29458    AtomCarUserHalSetUserAssociationResponseReported = 289,
29459    AtomNetworkIpProvisioningReported = 290,
29460    AtomNetworkDhcpRenewReported = 291,
29461    AtomNetworkValidationReported = 292,
29462    AtomNetworkStackQuirkReported = 293,
29463    AtomMediametricsAudiorecorddeviceusageReported = 294,
29464    AtomMediametricsAudiothreaddeviceusageReported = 295,
29465    AtomMediametricsAudiotrackdeviceusageReported = 296,
29466    AtomMediametricsAudiodeviceconnectionReported = 297,
29467    AtomBlobCommitted = 298,
29468    AtomBlobLeased = 299,
29469    AtomBlobOpened = 300,
29470    AtomContactsProviderStatusReported = 301,
29471    AtomKeystoreKeyEventReported = 302,
29472    AtomNetworkTetheringReported = 303,
29473    AtomImeTouchReported = 304,
29474    AtomUiInteractionFrameInfoReported = 305,
29475    AtomUiActionLatencyReported = 306,
29476    AtomWifiDisconnectReported = 307,
29477    AtomWifiConnectionStateChanged = 308,
29478    AtomHdmiCecActiveSourceChanged = 309,
29479    AtomHdmiCecMessageReported = 310,
29480    AtomAirplaneMode = 311,
29481    AtomModemRestart = 312,
29482    AtomCarrierIdMismatchReported = 313,
29483    AtomCarrierIdTableUpdated = 314,
29484    AtomDataStallRecoveryReported = 315,
29485    AtomMediametricsMediaparserReported = 316,
29486    AtomTlsHandshakeReported = 317,
29487    AtomTextClassifierApiUsageReported = 318,
29488    AtomCarWatchdogKillStatsReported = 319,
29489    AtomMediametricsPlaybackReported = 320,
29490    AtomMediaNetworkInfoChanged = 321,
29491    AtomMediaPlaybackStateChanged = 322,
29492    AtomMediaPlaybackErrorReported = 323,
29493    AtomMediaPlaybackTrackChanged = 324,
29494    AtomWifiScanReported = 325,
29495    AtomWifiPnoScanReported = 326,
29496    AtomTifTuneChanged = 327,
29497    AtomAutoRotateReported = 328,
29498    AtomPerfettoTrigger = 329,
29499    AtomTranscodingData = 330,
29500    AtomImsServiceEntitlementUpdated = 331,
29501    AtomDeviceRotated = 333,
29502    AtomSimSpecificSettingsRestored = 334,
29503    AtomTextClassifierDownloadReported = 335,
29504    AtomPinStorageEvent = 336,
29505    AtomFaceDownReported = 337,
29506    AtomBluetoothHalCrashReasonReported = 338,
29507    AtomRebootEscrowPreparationReported = 339,
29508    AtomRebootEscrowLskfCaptureReported = 340,
29509    AtomRebootEscrowRebootReported = 341,
29510    AtomBinderLatencyReported = 342,
29511    AtomMediametricsAaudiostreamReported = 343,
29512    AtomMediaTranscodingSessionEnded = 344,
29513    AtomMagnificationUsageReported = 345,
29514    AtomMagnificationModeWithImeOnReported = 346,
29515    AtomAppSearchCallStatsReported = 347,
29516    AtomAppSearchPutDocumentStatsReported = 348,
29517    AtomDeviceControlChanged = 349,
29518    AtomDeviceStateChanged = 350,
29519    AtomInputdeviceRegistered = 351,
29520    AtomSmartspaceCardReported = 352,
29521    AtomAuthPromptAuthenticateInvoked = 353,
29522    AtomAuthManagerCanAuthenticateInvoked = 354,
29523    AtomAuthEnrollActionInvoked = 355,
29524    AtomAuthDeprecatedApiUsed = 356,
29525    AtomUnattendedRebootOccurred = 357,
29526    AtomLongRebootBlockingReported = 358,
29527    AtomLocationTimeZoneProviderStateChanged = 359,
29528    AtomFdtrackEventOccurred = 364,
29529    AtomTimeoutAutoExtendedReported = 365,
29530    AtomAlarmBatchDelivered = 367,
29531    AtomAlarmScheduled = 368,
29532    AtomCarWatchdogIoOveruseStatsReported = 369,
29533    AtomUserLevelHibernationStateChanged = 370,
29534    AtomAppSearchInitializeStatsReported = 371,
29535    AtomAppSearchQueryStatsReported = 372,
29536    AtomAppProcessDied = 373,
29537    AtomNetworkIpReachabilityMonitorReported = 374,
29538    AtomSlowInputEventReported = 375,
29539    AtomAnrOccurredProcessingStarted = 376,
29540    AtomAppSearchRemoveStatsReported = 377,
29541    AtomMediaCodecReported = 378,
29542    AtomPermissionUsageFragmentInteraction = 379,
29543    AtomPermissionDetailsInteraction = 380,
29544    AtomPrivacySensorToggleInteraction = 381,
29545    AtomPrivacyToggleDialogInteraction = 382,
29546    AtomAppSearchOptimizeStatsReported = 383,
29547    AtomNonA11yToolServiceWarningReport = 384,
29548    AtomAppCompatStateChanged = 386,
29549    AtomSizeCompatRestartButtonEventReported = 387,
29550    AtomSplitscreenUiChanged = 388,
29551    AtomNetworkDnsHandshakeReported = 389,
29552    AtomBluetoothCodePathCounter = 390,
29553    AtomBluetoothLeBatchScanReportDelay = 392,
29554    AtomAccessibilityFloatingMenuUiChanged = 393,
29555    AtomNeuralnetworksCompilationCompleted = 394,
29556    AtomNeuralnetworksExecutionCompleted = 395,
29557    AtomNeuralnetworksCompilationFailed = 396,
29558    AtomNeuralnetworksExecutionFailed = 397,
29559    AtomContextHubBooted = 398,
29560    AtomContextHubRestarted = 399,
29561    AtomContextHubLoadedNanoappSnapshotReported = 400,
29562    AtomChreCodeDownloadTransacted = 401,
29563    AtomUwbSessionInited = 402,
29564    AtomUwbSessionClosed = 403,
29565    AtomUwbFirstRangingReceived = 404,
29566    AtomUwbRangingMeasurementReceived = 405,
29567    AtomTextClassifierDownloadWorkScheduled = 406,
29568    AtomTextClassifierDownloadWorkCompleted = 407,
29569    AtomClipboardCleared = 408,
29570    AtomVmCreationRequested = 409,
29571    AtomNearbyDeviceScanStateChanged = 410,
29572    AtomApplicationLocalesChanged = 412,
29573    AtomMediametricsAudiotrackstatusReported = 413,
29574    AtomFoldStateDurationReported = 414,
29575    AtomLocationTimeZoneProviderControllerStateChanged = 415,
29576    AtomDisplayHbmStateChanged = 416,
29577    AtomDisplayHbmBrightnessChanged = 417,
29578    AtomPersistentUriPermissionsFlushed = 418,
29579    AtomEarlyBootCompOsArtifactsCheckReported = 419,
29580    AtomVbmetaDigestReported = 420,
29581    AtomApexInfoGathered = 421,
29582    AtomPvmInfoGathered = 422,
29583    AtomWearSettingsUiInteracted = 423,
29584    AtomTracingServiceReportEvent = 424,
29585    AtomMediametricsAudiorecordstatusReported = 425,
29586    AtomLauncherLatency = 426,
29587    AtomDropboxEntryDropped = 427,
29588    AtomWifiP2pConnectionReported = 428,
29589    AtomGameStateChanged = 429,
29590    AtomHotwordDetectorCreateRequested = 430,
29591    AtomHotwordDetectionServiceInitResultReported = 431,
29592    AtomHotwordDetectionServiceRestarted = 432,
29593    AtomHotwordDetectorKeyphraseTriggered = 433,
29594    AtomHotwordDetectorEvents = 434,
29595    AtomBootCompletedBroadcastCompletionLatencyReported = 437,
29596    AtomContactsIndexerUpdateStatsReported = 440,
29597    AtomAppBackgroundRestrictionsInfo = 441,
29598    AtomMmsSmsProviderGetThreadIdFailed = 442,
29599    AtomMmsSmsDatabaseHelperOnUpgradeFailed = 443,
29600    AtomPermissionReminderNotificationInteracted = 444,
29601    AtomRecentPermissionDecisionsInteracted = 445,
29602    AtomGnssPsdsDownloadReported = 446,
29603    AtomLeAudioConnectionSessionReported = 447,
29604    AtomLeAudioBroadcastSessionReported = 448,
29605    AtomDreamUiEventReported = 449,
29606    AtomTaskManagerEventReported = 450,
29607    AtomCdmAssociationAction = 451,
29608    AtomMagnificationTripleTapAndHoldActivatedSessionReported = 452,
29609    AtomMagnificationFollowTypingFocusActivatedSessionReported = 453,
29610    AtomAccessibilityTextReadingOptionsChanged = 454,
29611    AtomWifiSetupFailureCrashReported = 455,
29612    AtomUwbDeviceErrorReported = 456,
29613    AtomIsolatedCompilationScheduled = 457,
29614    AtomIsolatedCompilationEnded = 458,
29615    AtomOnsOpportunisticEsimProvisioningComplete = 459,
29616    AtomSystemServerPreWatchdogOccurred = 460,
29617    AtomTelephonyAnomalyDetected = 461,
29618    AtomLetterboxPositionChanged = 462,
29619    AtomRemoteKeyProvisioningAttempt = 463,
29620    AtomRemoteKeyProvisioningNetworkInfo = 464,
29621    AtomRemoteKeyProvisioningTiming = 465,
29622    AtomMediaoutputOpInteractionReport = 466,
29623    AtomSyncExemptionOccurred = 468,
29624    AtomAutofillPresentationEventReported = 469,
29625    AtomDockStateChanged = 470,
29626    AtomSafetySourceStateCollected = 471,
29627    AtomSafetyCenterSystemEventReported = 472,
29628    AtomSafetyCenterInteractionReported = 473,
29629    AtomSettingsProviderSettingChanged = 474,
29630    AtomBroadcastDeliveryEventReported = 475,
29631    AtomServiceRequestEventReported = 476,
29632    AtomProviderAcquisitionEventReported = 477,
29633    AtomBluetoothDeviceNameReported = 478,
29634    AtomCbConfigUpdated = 479,
29635    AtomCbModuleErrorReported = 480,
29636    AtomCbServiceFeatureChanged = 481,
29637    AtomCbReceiverFeatureChanged = 482,
29638    AtomPrivacySignalNotificationInteraction = 484,
29639    AtomPrivacySignalIssueCardInteraction = 485,
29640    AtomPrivacySignalsJobFailure = 486,
29641    AtomVibrationReported = 487,
29642    AtomUwbRangingStart = 489,
29643    AtomAppCompactedV2 = 491,
29644    AtomDisplayBrightnessChanged = 494,
29645    AtomActivityActionBlocked = 495,
29646    AtomNetworkDnsServerSupportReported = 504,
29647    AtomVmBooted = 505,
29648    AtomVmExited = 506,
29649    AtomAmbientBrightnessStatsReported = 507,
29650    AtomMediametricsSpatializercapabilitiesReported = 508,
29651    AtomMediametricsSpatializerdeviceenabledReported = 509,
29652    AtomMediametricsHeadtrackerdeviceenabledReported = 510,
29653    AtomMediametricsHeadtrackerdevicesupportedReported = 511,
29654    AtomHearingAidInfoReported = 513,
29655    AtomDeviceWideJobConstraintChanged = 514,
29656    AtomAmbientModeChanged = 515,
29657    AtomAnrLatencyReported = 516,
29658    AtomResourceApiInfo = 517,
29659    AtomSystemDefaultNetworkChanged = 518,
29660    AtomIwlanSetupDataCallResultReported = 519,
29661    AtomIwlanPdnDisconnectedReasonReported = 520,
29662    AtomAirplaneModeSessionReported = 521,
29663    AtomVmCpuStatusReported = 522,
29664    AtomVmMemStatusReported = 523,
29665    AtomPackageInstallationSessionReported = 524,
29666    AtomDefaultNetworkRematchInfo = 525,
29667    AtomNetworkSelectionPerformance = 526,
29668    AtomNetworkNsdReported = 527,
29669    AtomBluetoothDisconnectionReasonReported = 529,
29670    AtomBluetoothLocalVersionsReported = 530,
29671    AtomBluetoothRemoteSupportedFeaturesReported = 531,
29672    AtomBluetoothLocalSupportedFeaturesReported = 532,
29673    AtomBluetoothGattAppInfo = 533,
29674    AtomBrightnessConfigurationUpdated = 534,
29675    AtomWearMediaOutputSwitcherLaunched = 538,
29676    AtomWearMediaOutputSwitcherFinished = 539,
29677    AtomWearMediaOutputSwitcherConnectionReported = 540,
29678    AtomWearMediaOutputSwitcherDeviceScanTriggered = 541,
29679    AtomWearMediaOutputSwitcherFirstDeviceScanLatency = 542,
29680    AtomWearMediaOutputSwitcherConnectDeviceLatency = 543,
29681    AtomPackageManagerSnapshotReported = 544,
29682    AtomPackageManagerAppsFilterCacheBuildReported = 545,
29683    AtomPackageManagerAppsFilterCacheUpdateReported = 546,
29684    AtomLauncherImpressionEvent = 547,
29685    AtomWearMediaOutputSwitcherAllDevicesScanLatency = 549,
29686    AtomWsWatchFaceEdited = 551,
29687    AtomWsWatchFaceFavoriteActionReported = 552,
29688    AtomWsWatchFaceSetActionReported = 553,
29689    AtomPackageUninstallationReported = 554,
29690    AtomGameModeChanged = 555,
29691    AtomGameModeConfigurationChanged = 556,
29692    AtomBedtimeModeStateChanged = 557,
29693    AtomNetworkSliceSessionEnded = 558,
29694    AtomNetworkSliceDailyDataUsageReported = 559,
29695    AtomNfcTagTypeOccurred = 560,
29696    AtomNfcAidConflictOccurred = 561,
29697    AtomNfcReaderConflictOccurred = 562,
29698    AtomWsTileListChanged = 563,
29699    AtomGetTypeAccessedWithoutPermission = 564,
29700    AtomMobileBundledAppInfoGathered = 566,
29701    AtomWsWatchFaceComplicationSetChanged = 567,
29702    AtomMediaDrmCreated = 568,
29703    AtomMediaDrmErrored = 569,
29704    AtomMediaDrmSessionOpened = 570,
29705    AtomMediaDrmSessionClosed = 571,
29706    AtomUserSelectedResolution = 572,
29707    AtomUnsafeIntentEventReported = 573,
29708    AtomPerformanceHintSessionReported = 574,
29709    AtomMediametricsMidiDeviceCloseReported = 576,
29710    AtomBiometricTouchReported = 577,
29711    AtomHotwordAudioEgressEventReported = 578,
29712    AtomLocationEnabledStateChanged = 580,
29713    AtomImeRequestFinished = 581,
29714    AtomUsbComplianceWarningsReported = 582,
29715    AtomAppSupportedLocalesChanged = 583,
29716    AtomMediaProviderVolumeRecoveryReported = 586,
29717    AtomBiometricPropertiesCollected = 587,
29718    AtomKernelWakeupAttributed = 588,
29719    AtomScreenStateChangedV2 = 589,
29720    AtomWsBackupActionReported = 590,
29721    AtomWsRestoreActionReported = 591,
29722    AtomDeviceLogAccessEventReported = 592,
29723    AtomMediaSessionUpdated = 594,
29724    AtomWearOobeStateChanged = 595,
29725    AtomWsNotificationUpdated = 596,
29726    AtomNetworkValidationFailureStatsDailyReported = 601,
29727    AtomWsComplicationTapped = 602,
29728    AtomWsNotificationBlocking = 780,
29729    AtomWsNotificationBridgemodeUpdated = 822,
29730    AtomWsNotificationDismissalActioned = 823,
29731    AtomWsNotificationActioned = 824,
29732    AtomWsNotificationLatency = 880,
29733    AtomWifiBytesTransfer = 10000,
29734    AtomWifiBytesTransferByFgBg = 10001,
29735    AtomMobileBytesTransfer = 10002,
29736    AtomMobileBytesTransferByFgBg = 10003,
29737    AtomBluetoothBytesTransfer = 10006,
29738    AtomKernelWakelock = 10004,
29739    AtomSubsystemSleepState = 10005,
29740    AtomCpuTimePerUid = 10009,
29741    AtomCpuTimePerUidFreq = 10010,
29742    AtomWifiActivityInfo = 10011,
29743    AtomModemActivityInfo = 10012,
29744    AtomBluetoothActivityInfo = 10007,
29745    AtomProcessMemoryState = 10013,
29746    AtomSystemElapsedRealtime = 10014,
29747    AtomSystemUptime = 10015,
29748    AtomCpuActiveTime = 10016,
29749    AtomCpuClusterTime = 10017,
29750    AtomDiskSpace = 10018,
29751    AtomRemainingBatteryCapacity = 10019,
29752    AtomFullBatteryCapacity = 10020,
29753    AtomTemperature = 10021,
29754    AtomBinderCalls = 10022,
29755    AtomBinderCallsExceptions = 10023,
29756    AtomLooperStats = 10024,
29757    AtomDiskStats = 10025,
29758    AtomDirectoryUsage = 10026,
29759    AtomAppSize = 10027,
29760    AtomCategorySize = 10028,
29761    AtomProcStats = 10029,
29762    AtomBatteryVoltage = 10030,
29763    AtomNumFingerprintsEnrolled = 10031,
29764    AtomDiskIo = 10032,
29765    AtomPowerProfile = 10033,
29766    AtomProcStatsPkgProc = 10034,
29767    AtomProcessCpuTime = 10035,
29768    AtomCpuTimePerThreadFreq = 10037,
29769    AtomOnDevicePowerMeasurement = 10038,
29770    AtomDeviceCalculatedPowerUse = 10039,
29771    AtomProcessMemoryHighWaterMark = 10042,
29772    AtomBatteryLevel = 10043,
29773    AtomBuildInformation = 10044,
29774    AtomBatteryCycleCount = 10045,
29775    AtomDebugElapsedClock = 10046,
29776    AtomDebugFailingElapsedClock = 10047,
29777    AtomNumFacesEnrolled = 10048,
29778    AtomRoleHolder = 10049,
29779    AtomDangerousPermissionState = 10050,
29780    AtomTrainInfo = 10051,
29781    AtomTimeZoneDataInfo = 10052,
29782    AtomExternalStorageInfo = 10053,
29783    AtomGpuStatsGlobalInfo = 10054,
29784    AtomGpuStatsAppInfo = 10055,
29785    AtomSystemIonHeapSize = 10056,
29786    AtomAppsOnExternalStorageInfo = 10057,
29787    AtomFaceSettings = 10058,
29788    AtomCoolingDevice = 10059,
29789    AtomAppOps = 10060,
29790    AtomProcessSystemIonHeapSize = 10061,
29791    AtomSurfaceflingerStatsGlobalInfo = 10062,
29792    AtomSurfaceflingerStatsLayerInfo = 10063,
29793    AtomProcessMemorySnapshot = 10064,
29794    AtomVmsClientStats = 10065,
29795    AtomNotificationRemoteViews = 10066,
29796    AtomDangerousPermissionStateSampled = 10067,
29797    AtomGraphicsStats = 10068,
29798    AtomRuntimeAppOpAccess = 10069,
29799    AtomIonHeapSize = 10070,
29800    AtomPackageNotificationPreferences = 10071,
29801    AtomPackageNotificationChannelPreferences = 10072,
29802    AtomPackageNotificationChannelGroupPreferences = 10073,
29803    AtomGnssStats = 10074,
29804    AtomAttributedAppOps = 10075,
29805    AtomVoiceCallSession = 10076,
29806    AtomVoiceCallRatUsage = 10077,
29807    AtomSimSlotState = 10078,
29808    AtomSupportedRadioAccessFamily = 10079,
29809    AtomSettingSnapshot = 10080,
29810    AtomBlobInfo = 10081,
29811    AtomDataUsageBytesTransfer = 10082,
29812    AtomBytesTransferByTagAndMetered = 10083,
29813    AtomDndModeRule = 10084,
29814    AtomGeneralExternalStorageAccessStats = 10085,
29815    AtomIncomingSms = 10086,
29816    AtomOutgoingSms = 10087,
29817    AtomCarrierIdTableVersion = 10088,
29818    AtomDataCallSession = 10089,
29819    AtomCellularServiceState = 10090,
29820    AtomCellularDataServiceSwitch = 10091,
29821    AtomSystemMemory = 10092,
29822    AtomImsRegistrationTermination = 10093,
29823    AtomImsRegistrationStats = 10094,
29824    AtomCpuTimePerClusterFreq = 10095,
29825    AtomCpuCyclesPerUidCluster = 10096,
29826    AtomDeviceRotatedData = 10097,
29827    AtomCpuCyclesPerThreadGroupCluster = 10098,
29828    AtomMediaDrmActivityInfo = 10099,
29829    AtomOemManagedBytesTransfer = 10100,
29830    AtomGnssPowerStats = 10101,
29831    AtomTimeZoneDetectorState = 10102,
29832    AtomKeystore2StorageStats = 10103,
29833    AtomRkpPoolStats = 10104,
29834    AtomProcessDmabufMemory = 10105,
29835    AtomPendingAlarmInfo = 10106,
29836    AtomUserLevelHibernatedApps = 10107,
29837    AtomLauncherLayoutSnapshot = 10108,
29838    AtomGlobalHibernatedApps = 10109,
29839    AtomInputEventLatencySketch = 10110,
29840    AtomBatteryUsageStatsBeforeReset = 10111,
29841    AtomBatteryUsageStatsSinceReset = 10112,
29842    AtomBatteryUsageStatsSinceResetUsingPowerProfileModel = 10113,
29843    AtomInstalledIncrementalPackage = 10114,
29844    AtomTelephonyNetworkRequests = 10115,
29845    AtomAppSearchStorageInfo = 10116,
29846    AtomVmstat = 10117,
29847    AtomKeystore2KeyCreationWithGeneralInfo = 10118,
29848    AtomKeystore2KeyCreationWithAuthInfo = 10119,
29849    AtomKeystore2KeyCreationWithPurposeAndModesInfo = 10120,
29850    AtomKeystore2AtomWithOverflow = 10121,
29851    AtomKeystore2KeyOperationWithPurposeAndModesInfo = 10122,
29852    AtomKeystore2KeyOperationWithGeneralInfo = 10123,
29853    AtomRkpErrorStats = 10124,
29854    AtomKeystore2CrashStats = 10125,
29855    AtomVendorApexInfo = 10126,
29856    AtomAccessibilityShortcutStats = 10127,
29857    AtomAccessibilityFloatingMenuStats = 10128,
29858    AtomDataUsageBytesTransferV2 = 10129,
29859    AtomMediaCapabilities = 10130,
29860    AtomCarWatchdogSystemIoUsageSummary = 10131,
29861    AtomCarWatchdogUidIoUsageSummary = 10132,
29862    AtomImsRegistrationFeatureTagStats = 10133,
29863    AtomRcsClientProvisioningStats = 10134,
29864    AtomRcsAcsProvisioningStats = 10135,
29865    AtomSipDelegateStats = 10136,
29866    AtomSipTransportFeatureTagStats = 10137,
29867    AtomSipMessageResponse = 10138,
29868    AtomSipTransportSession = 10139,
29869    AtomImsDedicatedBearerListenerEvent = 10140,
29870    AtomImsDedicatedBearerEvent = 10141,
29871    AtomImsRegistrationServiceDescStats = 10142,
29872    AtomUceEventStats = 10143,
29873    AtomPresenceNotifyEvent = 10144,
29874    AtomGbaEvent = 10145,
29875    AtomPerSimStatus = 10146,
29876    AtomGpuWorkPerUid = 10147,
29877    AtomPersistentUriPermissionsAmountPerPackage = 10148,
29878    AtomSignedPartitionInfo = 10149,
29879    AtomPinnedFileSizesPerPackage = 10150,
29880    AtomPendingIntentsPerPackage = 10151,
29881    AtomUserInfo = 10152,
29882    AtomTelephonyNetworkRequestsV2 = 10153,
29883    AtomDeviceTelephonyProperties = 10154,
29884    AtomRemoteKeyProvisioningErrorCounts = 10155,
29885    AtomSafetyState = 10156,
29886    AtomIncomingMms = 10157,
29887    AtomOutgoingMms = 10158,
29888    AtomMultiUserInfo = 10160,
29889    AtomNetworkBpfMapInfo = 10161,
29890    AtomOutgoingShortCodeSms = 10162,
29891    AtomConnectivityStateSample = 10163,
29892    AtomNetworkSelectionRematchReasonsInfo = 10164,
29893    AtomGameModeInfo = 10165,
29894    AtomGameModeConfiguration = 10166,
29895    AtomGameModeListener = 10167,
29896    AtomNetworkSliceRequestCount = 10168,
29897    AtomWsTileSnapshot = 10169,
29898    AtomWsActiveWatchFaceComplicationSetSnapshot = 10170,
29899    AtomProcessState = 10171,
29900    AtomProcessAssociation = 10172,
29901    AtomAdpfSystemComponentInfo = 10173,
29902    AtomNotificationMemoryUse = 10174,
29903    AtomHdrCapabilities = 10175,
29904    AtomWsFavouriteWatchFaceListSnapshot = 10176,
29905    AtomWifiAwareNdpReported = 638,
29906    AtomWifiAwareAttachReported = 639,
29907    AtomWifiSelfRecoveryTriggered = 661,
29908    AtomSoftApStarted = 680,
29909    AtomSoftApStopped = 681,
29910    AtomWifiLockReleased = 687,
29911    AtomWifiLockDeactivated = 688,
29912    AtomWifiConfigSaved = 689,
29913    AtomWifiAwareResourceUsingChanged = 690,
29914    AtomWifiAwareHalApiCalled = 691,
29915    AtomWifiLocalOnlyRequestReceived = 692,
29916    AtomWifiLocalOnlyRequestScanTriggered = 693,
29917    AtomWifiThreadTaskExecuted = 694,
29918    AtomWifiStateChanged = 700,
29919    AtomPnoScanStarted = 719,
29920    AtomPnoScanStopped = 720,
29921    AtomWifiIsUnusableReported = 722,
29922    AtomWifiApCapabilitiesReported = 723,
29923    AtomSoftApStateChanged = 805,
29924    AtomScorerPredictionResultReported = 884,
29925    AtomWifiAwareCapabilities = 10190,
29926    AtomWifiModuleInfo = 10193,
29927    AtomWifiSettingInfo = 10194,
29928    AtomWifiComplexSettingInfo = 10195,
29929    AtomWifiConfiguredNetworkInfo = 10198,
29930    AtomWearPowerMenuOpened = 731,
29931    AtomWearAssistantOpened = 755,
29932    AtomFirstOverlayStateChanged = 917,
29933    AtomWsWearTimeSession = 610,
29934    AtomWsIncomingCallActionReported = 626,
29935    AtomWsCallDisconnectionReported = 627,
29936    AtomWsCallDurationReported = 628,
29937    AtomWsCallUserExperienceLatencyReported = 629,
29938    AtomWsCallInteractionReported = 630,
29939    AtomWsOnBodyStateChanged = 787,
29940    AtomWsWatchFaceRestrictedComplicationsImpacted = 802,
29941    AtomWsWatchFaceDefaultRestrictedComplicationsRemoved = 803,
29942    AtomWsComplicationsImpactedNotificationEventReported = 804,
29943    AtomWsRemoteEventUsageReported = 920,
29944    AtomWsNotificationManagedDismissalSync = 941,
29945    AtomWsBugreportEventReported = 964,
29946    AtomWsStandaloneModeSnapshot = 10197,
29947    AtomWsFavoriteWatchFaceSnapshot = 10206,
29948    AtomWsPhotosWatchFaceFeatureSnapshot = 10225,
29949    AtomWsWatchFaceCustomizationSnapshot = 10227,
29950    AtomWearAdaptiveSuspendStatsReported = 619,
29951    AtomWearPowerAnomalyServiceOperationalStatsReported = 620,
29952    AtomWearPowerAnomalyServiceEventStatsReported = 621,
29953    AtomWearTimeSyncRequested = 911,
29954    AtomWearTimeUpdateStarted = 912,
29955    AtomWearTimeSyncAttemptCompleted = 913,
29956    AtomWearTimeChanged = 914,
29957    AtomWearSetupWizardDeviceStatusReported = 953,
29958    AtomWearSetupWizardPairingCompleted = 954,
29959    AtomWearSetupWizardConnectionEstablished = 955,
29960    AtomWearSetupWizardCheckinCompleted = 956,
29961    AtomWearSetupWizardCompanionTimeReported = 957,
29962    AtomWearSetupWizardStatusReported = 958,
29963    AtomWearSetupWizardHeartbeatReported = 959,
29964    AtomWearSetupWizardFrpTriggered = 960,
29965    AtomWearSetupWizardSystemUpdateTriggered = 961,
29966    AtomWearSetupWizardPhoneSwitchTriggered = 962,
29967    AtomRendererInitialized = 736,
29968    AtomSchemaVersionReceived = 737,
29969    AtomLayoutInspected = 741,
29970    AtomLayoutExpressionInspected = 742,
29971    AtomLayoutAnimationsInspected = 743,
29972    AtomMaterialComponentsInspected = 744,
29973    AtomTileRequested = 745,
29974    AtomStateResponseReceived = 746,
29975    AtomTileResponseReceived = 747,
29976    AtomInflationFinished = 748,
29977    AtomInflationFailed = 749,
29978    AtomIgnoredInflationFailuresReported = 750,
29979    AtomDrawableRendered = 751,
29980    AtomWearModeStateChanged = 715,
29981    AtomMediaActionReported = 608,
29982    AtomMediaControlsLaunched = 609,
29983    AtomMediaSessionStateChanged = 677,
29984    AtomMediaControlApiUsageReported = 966,
29985    AtomMediaSubscriptionChanged = 990,
29986    AtomWearMediaOutputSwitcherDeviceScanApiLatency = 757,
29987    AtomWearMediaOutputSwitcherSassDeviceUnavailable = 758,
29988    AtomWearMediaOutputSwitcherFastpairApiTimeout = 759,
29989    AtomMediatorUpdated = 721,
29990    AtomSysproxyBluetoothBytesTransfer = 10196,
29991    AtomSysproxyConnectionUpdated = 786,
29992    AtomWearCompanionConnectionState = 921,
29993    AtomSysproxyServiceStateUpdated = 949,
29994    AtomUwbActivityInfo = 10188,
29995    AtomTestUprobestatsAtomReported = 915,
29996    AtomTvLowPowerStandbyPolicy = 679,
29997    AtomExternalTvInputEvent = 717,
29998    AtomBootIntegrityInfoReported = 775,
29999    AtomThreadnetworkTelemetryDataReported = 738,
30000    AtomThreadnetworkTopoEntryRepeated = 739,
30001    AtomThreadnetworkDeviceInfoReported = 740,
30002    AtomCellularRadioPowerStateChanged = 713,
30003    AtomEmergencyNumbersInfo = 10180,
30004    AtomDataNetworkValidation = 10207,
30005    AtomDataRatStateChanged = 854,
30006    AtomConnectedChannelChanged = 882,
30007    AtomCellularIdentifierDisclosed = 800,
30008    AtomSatelliteController = 10182,
30009    AtomSatelliteSession = 10183,
30010    AtomSatelliteIncomingDatagram = 10184,
30011    AtomSatelliteOutgoingDatagram = 10185,
30012    AtomSatelliteProvision = 10186,
30013    AtomSatelliteSosMessageRecommender = 10187,
30014    AtomCarrierRoamingSatelliteSession = 10211,
30015    AtomCarrierRoamingSatelliteControllerStats = 10212,
30016    AtomControllerStatsPerPackage = 10213,
30017    AtomSatelliteEntitlement = 10214,
30018    AtomSatelliteConfigUpdater = 10215,
30019    AtomSatelliteAccessController = 10219,
30020    AtomQualifiedRatListChanged = 634,
30021    AtomQnsImsCallDropStats = 635,
30022    AtomQnsFallbackRestrictionChanged = 636,
30023    AtomQnsRatPreferenceMismatchInfo = 10177,
30024    AtomQnsHandoverTimeMillis = 10178,
30025    AtomQnsHandoverPingpong = 10179,
30026    AtomIwlanUnderlyingNetworkValidationResultReported = 923,
30027    AtomEmergencyNumberDialed = 637,
30028    AtomCallStats = 10221,
30029    AtomCallAudioRouteStats = 10222,
30030    AtomTelecomApiStats = 10223,
30031    AtomTelecomErrorStats = 10224,
30032    AtomLockscreenShortcutSelected = 611,
30033    AtomLockscreenShortcutTriggered = 612,
30034    AtomLauncherImpressionEventV2 = 716,
30035    AtomDisplaySwitchLatencyTracked = 753,
30036    AtomNotificationListenerService = 829,
30037    AtomNavHandleTouchPoints = 869,
30038    AtomCommunalHubWidgetEventReported = 908,
30039    AtomPeripheralTutorialLaunched = 942,
30040    AtomContextualEducationTriggered = 971,
30041    AtomCommunalHubSnapshot = 10226,
30042    AtomTestExtensionAtomReported = 660,
30043    AtomTestRestrictedAtomReported = 672,
30044    AtomStatsSocketLossReported = 752,
30045    AtomSettingsSpaReported = 622,
30046    AtomSelinuxAuditLog = 799,
30047    AtomSandboxApiCalled = 488,
30048    AtomSandboxActivityEventOccurred = 735,
30049    AtomSdkSandboxRestrictedAccessInSession = 796,
30050    AtomSandboxSdkStorage = 10159,
30051    AtomRkpdPoolStats = 664,
30052    AtomRkpdClientOperation = 665,
30053    AtomRangingSessionConfigured = 993,
30054    AtomRangingSessionStarted = 994,
30055    AtomRangingSessionClosed = 995,
30056    AtomRangingTechnologyStarted = 996,
30057    AtomRangingTechnologyStopped = 997,
30058    AtomMediaProviderDatabaseRollbackReported = 784,
30059    AtomBackupSetupStatusReported = 785,
30060    AtomScreenOffReported = 776,
30061    AtomScreenTimeoutOverrideReported = 836,
30062    AtomScreenInteractiveSessionReported = 837,
30063    AtomScreenDimReported = 867,
30064    AtomAtom9999 = 9999,
30065    AtomAtom99999 = 99999,
30066    AtomPhotopickerSessionInfoReported = 886,
30067    AtomPhotopickerApiInfoReported = 887,
30068    AtomPhotopickerUiEventLogged = 888,
30069    AtomPhotopickerMediaItemStatusReported = 889,
30070    AtomPhotopickerPreviewInfoLogged = 890,
30071    AtomPhotopickerMenuInteractionLogged = 891,
30072    AtomPhotopickerBannerInteractionLogged = 892,
30073    AtomPhotopickerMediaLibraryInfoLogged = 893,
30074    AtomPhotopickerPageInfoLogged = 894,
30075    AtomPhotopickerMediaGridSyncInfoReported = 895,
30076    AtomPhotopickerAlbumSyncInfoReported = 896,
30077    AtomPhotopickerSearchInfoReported = 897,
30078    AtomSearchDataExtractionDetailsReported = 898,
30079    AtomEmbeddedPhotopickerInfoReported = 899,
30080    AtomPermissionRationaleDialogViewed = 645,
30081    AtomPermissionRationaleDialogActionReported = 646,
30082    AtomAppDataSharingUpdatesNotificationInteraction = 647,
30083    AtomAppDataSharingUpdatesFragmentViewed = 648,
30084    AtomAppDataSharingUpdatesFragmentActionReported = 649,
30085    AtomEnhancedConfirmationDialogResultReported = 827,
30086    AtomEnhancedConfirmationRestrictionCleared = 828,
30087    AtomPressureStallInformation = 10229,
30088    AtomPdfLoadReported = 859,
30089    AtomPdfApiUsageReported = 860,
30090    AtomPdfSearchReported = 861,
30091    AtomComponentStateChangedReported = 863,
30092    AtomOndevicepersonalizationApiCalled = 711,
30093    AtomOndevicepersonalizationTraceEvent = 952,
30094    AtomNfcObserveModeStateChanged = 855,
30095    AtomNfcFieldChanged = 856,
30096    AtomNfcPollingLoopNotificationReported = 857,
30097    AtomNfcProprietaryCapabilitiesReported = 858,
30098    AtomNfcExitFrameTableChanged = 1036,
30099    AtomNfcAutoTransactReported = 1038,
30100    AtomMicroxrDeviceBootCompleteReported = 901,
30101    AtomMteState = 10181,
30102    AtomZramMaintenanceExecuted = 1015,
30103    AtomZramSetupExecuted = 1029,
30104    AtomZramMmStatMmd = 10232,
30105    AtomZramBdStatMmd = 10233,
30106    AtomMediaEditingEndedReported = 798,
30107    AtomMediaCodecReclaimRequestCompleted = 600,
30108    AtomMediaCodecStarted = 641,
30109    AtomMediaCodecStopped = 642,
30110    AtomMediaCodecRendered = 684,
30111    AtomEmergencyStateChanged = 633,
30112    AtomChreSignificantMotionStateChanged = 868,
30113    AtomPopulationDensityProviderLoadingReported = 1002,
30114    AtomDensityBasedCoarseLocationsUsageReported = 1003,
30115    AtomDensityBasedCoarseLocationsProviderQueryReported = 1004,
30116    AtomKernelOomKillOccurred = 754,
30117    AtomKeyboardConfigured = 682,
30118    AtomKeyboardSystemsEventReported = 683,
30119    AtomInputdeviceUsageReported = 686,
30120    AtomInputEventLatencyReported = 932,
30121    AtomTouchpadUsage = 10191,
30122    AtomIkeSessionTerminated = 678,
30123    AtomIkeLivenessCheckSessionValidated = 760,
30124    AtomNegotiatedSecurityAssociation = 821,
30125    AtomHotwordEgressSizeAtomReported = 761,
30126    AtomHealthConnectUiImpression = 623,
30127    AtomHealthConnectUiInteraction = 624,
30128    AtomHealthConnectAppOpenedReported = 625,
30129    AtomHealthConnectApiCalled = 616,
30130    AtomHealthConnectUsageStats = 617,
30131    AtomHealthConnectStorageStats = 618,
30132    AtomHealthConnectApiInvoked = 643,
30133    AtomExerciseRouteApiCalled = 654,
30134    AtomHealthConnectExportInvoked = 907,
30135    AtomHealthConnectImportInvoked = 918,
30136    AtomHealthConnectExportImportStatsReported = 919,
30137    AtomHealthConnectPermissionStats = 963,
30138    AtomHealthConnectPhrApiInvoked = 980,
30139    AtomHealthConnectPhrUsageStats = 981,
30140    AtomHealthConnectPhrStorageStats = 984,
30141    AtomHealthConnectRestrictedEcosystemStats = 985,
30142    AtomHealthConnectEcosystemStats = 986,
30143    AtomHdmiEarcStatusReported = 701,
30144    AtomHdmiSoundbarModeStatusReported = 724,
30145    AtomHdmiPowerStateChangeOnActiveSourceLostToggled = 991,
30146    AtomBatteryHealth = 10220,
30147    AtomBiometricUnenrolled = 944,
30148    AtomBiometricEnumerated = 945,
30149    AtomApplicationGrammaticalInflectionChanged = 584,
30150    AtomSystemGrammaticalInflectionChanged = 816,
30151    AtomFullScreenIntentLaunched = 631,
30152    AtomBalAllowed = 632,
30153    AtomInTaskActivityStarted = 685,
30154    AtomDeviceOrientationChanged = 906,
30155    AtomCachedAppsHighWatermark = 10189,
30156    AtomStylusPredictionMetricsReported = 718,
30157    AtomUserRiskEventReported = 725,
30158    AtomMediaProjectionStateChanged = 729,
30159    AtomMediaProjectionTargetChanged = 730,
30160    AtomExcessiveBinderProxyCountReported = 853,
30161    AtomProxyBytesTransferByFgBg = 10200,
30162    AtomMobileBytesTransferByProcState = 10204,
30163    AtomBiometricFrrNotification = 817,
30164    AtomSensitiveContentMediaProjectionSession = 830,
30165    AtomSensitiveNotificationAppProtectionSession = 831,
30166    AtomSensitiveNotificationAppProtectionApplied = 832,
30167    AtomSensitiveNotificationRedaction = 833,
30168    AtomSensitiveContentAppProtection = 835,
30169    AtomAppRestrictionStateChanged = 866,
30170    AtomBatteryUsageStatsPerUid = 10209,
30171    AtomPostgcMemorySnapshot = 924,
30172    AtomPowerSaveTempAllowlistChanged = 926,
30173    AtomAppOpAccessTracked = 931,
30174    AtomContentOrFileUriEventReported = 933,
30175    AtomDeviceIdleTempAllowlistUpdated = 940,
30176    AtomAppOpNoteOpOrCheckOpBinderApiCalled = 943,
30177    AtomFrameworkWakelockInfo = 10230,
30178    AtomJankFrameCountByWidgetReported = 950,
30179    AtomIntentCreatorTokenAdded = 978,
30180    AtomNotificationChannelClassification = 983,
30181    AtomCameraStatusForCompatibilityChanged = 999,
30182    AtomFederatedComputeApiCalled = 712,
30183    AtomFederatedComputeTrainingEventReported = 771,
30184    AtomExampleIteratorNextLatencyReported = 838,
30185    AtomFederatedComputeTraceEventReported = 992,
30186    AtomExpressEventReported = 528,
30187    AtomExpressHistogramSampleReported = 593,
30188    AtomExpressUidEventReported = 644,
30189    AtomExpressUidHistogramSampleReported = 658,
30190    AtomDreamSettingChanged = 705,
30191    AtomDreamSettingSnapshot = 10192,
30192    AtomDndStateChanged = 657,
30193    AtomExternalDisplayStateChanged = 806,
30194    AtomDisplayModeDirectorVoteChanged = 792,
30195    AtomDevicePolicyManagementMode = 10216,
30196    AtomDevicePolicyState = 10217,
30197    AtomDeviceLockCheckInRequestReported = 726,
30198    AtomDeviceLockProvisioningCompleteReported = 727,
30199    AtomDeviceLockKioskAppRequestReported = 728,
30200    AtomDeviceLockCheckInRetryReported = 789,
30201    AtomDeviceLockProvisionFailureReported = 790,
30202    AtomDeviceLockLockUnlockDeviceFailureReported = 791,
30203    AtomDesktopModeUiChanged = 818,
30204    AtomDesktopModeSessionTaskUpdate = 819,
30205    AtomDesktopModeTaskSizeUpdated = 935,
30206    AtomCronetEngineCreated = 703,
30207    AtomCronetTrafficReported = 704,
30208    AtomCronetEngineBuilderInitialized = 762,
30209    AtomCronetHttpFlagsInitialized = 763,
30210    AtomCronetInitialized = 764,
30211    AtomCredentialManagerApiCalled = 585,
30212    AtomCredentialManagerInitPhaseReported = 651,
30213    AtomCredentialManagerCandidatePhaseReported = 652,
30214    AtomCredentialManagerFinalPhaseReported = 653,
30215    AtomCredentialManagerTotalReported = 667,
30216    AtomCredentialManagerFinalnouidReported = 668,
30217    AtomCredentialManagerGetReported = 669,
30218    AtomCredentialManagerAuthClickReported = 670,
30219    AtomCredentialManagerApiv2Called = 671,
30220    AtomCpuPolicy = 10199,
30221    AtomVpnConnectionStateChanged = 850,
30222    AtomVpnConnectionReported = 851,
30223    AtomIpClientRaInfoReported = 778,
30224    AtomApfSessionInfoReported = 777,
30225    AtomCoreNetworkingTerribleErrorOccurred = 979,
30226    AtomNetworkStatsRecorderFileOperated = 783,
30227    AtomDailyKeepaliveInfoReported = 650,
30228    AtomNetworkRequestStateChanged = 779,
30229    AtomTetheringActiveSessionsReported = 925,
30230    AtomCertificateTransparencyLogListUpdateStateChanged = 972,
30231    AtomHardwareRendererEvent = 946,
30232    AtomTextureViewEvent = 947,
30233    AtomSurfaceControlEvent = 948,
30234    AtomImageDecoded = 977,
30235    AtomCertificateTransparencyLogListStateChanged = 934,
30236    AtomConscryptServiceUsed = 965,
30237    AtomCertificateTransparencyVerificationReported = 989,
30238    AtomCameraFeatureCombinationQueryEvent = 900,
30239    AtomBroadcastSent = 922,
30240    AtomBluetoothHashedDeviceNameReported = 613,
30241    AtomBluetoothL2capCocClientConnection = 614,
30242    AtomBluetoothL2capCocServerConnection = 615,
30243    AtomBluetoothLeSessionConnected = 656,
30244    AtomRestrictedBluetoothDeviceNameReported = 666,
30245    AtomBluetoothProfileConnectionAttempted = 696,
30246    AtomBluetoothContentProfileErrorReported = 781,
30247    AtomBluetoothRfcommConnectionAttempted = 782,
30248    AtomRemoteDeviceInformationWithMetricId = 862,
30249    AtomLeAppScanStateChanged = 870,
30250    AtomLeRadioScanStopped = 871,
30251    AtomLeScanResultReceived = 872,
30252    AtomLeScanAbused = 873,
30253    AtomLeAdvStateChanged = 874,
30254    AtomLeAdvErrorReported = 875,
30255    AtomA2dpSessionReported = 904,
30256    AtomBluetoothCrossLayerEventReported = 916,
30257    AtomBroadcastAudioSessionReported = 927,
30258    AtomBroadcastAudioSyncReported = 928,
30259    AtomBluetoothRfcommConnectionReportedAtClose = 982,
30260    AtomBluetoothLeConnection = 988,
30261    AtomHearingDeviceActiveEventReported = 1021,
30262    AtomBackportedFixStatusReported = 987,
30263    AtomPluginInitialized = 655,
30264    AtomCarSystemUiDataSubscriptionEventReported = 974,
30265    AtomCarSettingsDataSubscriptionEventReported = 975,
30266    AtomCarQcLibEventReported = 976,
30267    AtomCarWakeupFromSuspendReported = 852,
30268    AtomCarRecentsEventReported = 770,
30269    AtomCarCalmModeEventReported = 797,
30270    AtomAutofillUiEventReported = 603,
30271    AtomAutofillFillRequestReported = 604,
30272    AtomAutofillFillResponseReported = 605,
30273    AtomAutofillSaveEventReported = 606,
30274    AtomAutofillSessionCommitted = 607,
30275    AtomAutofillFieldClassificationEventReported = 659,
30276    AtomOdrefreshReported = 366,
30277    AtomOdsignReported = 548,
30278    AtomBackgroundDexoptJobEnded = 467,
30279    AtomPrerebootDexoptJobEnded = 883,
30280    AtomArtDatumReported = 332,
30281    AtomArtDeviceDatumReported = 550,
30282    AtomArtDatumDeltaReported = 565,
30283    AtomArtDex2oatReported = 929,
30284    AtomArtDeviceStatus = 10205,
30285    AtomAppSearchSetSchemaStatsReported = 385,
30286    AtomAppSearchSchemaMigrationStatsReported = 579,
30287    AtomAppSearchUsageSearchIntentStatsReported = 825,
30288    AtomAppSearchUsageSearchIntentRawQueryStatsReported = 826,
30289    AtomAppSearchAppsIndexerStatsReported = 909,
30290    AtomAppFunctionsRequestReported = 998,
30291    AtomApexInstallationRequested = 732,
30292    AtomApexInstallationStaged = 733,
30293    AtomApexInstallationEnded = 734,
30294    AtomAiWallpapersButtonPressed = 706,
30295    AtomAiWallpapersTemplateSelected = 707,
30296    AtomAiWallpapersTermSelected = 708,
30297    AtomAiWallpapersWallpaperSet = 709,
30298    AtomAiWallpapersSessionSummary = 710,
30299    AtomJsscriptengineLatencyReported = 483,
30300    AtomAdServicesApiCalled = 435,
30301    AtomAdServicesMesurementReportsUploaded = 436,
30302    AtomMobileDataDownloadFileGroupStatusReported = 490,
30303    AtomMobileDataDownloadDownloadResultReported = 502,
30304    AtomAdServicesSettingsUsageReported = 493,
30305    AtomBackgroundFetchProcessReported = 496,
30306    AtomUpdateCustomAudienceProcessReported = 497,
30307    AtomRunAdBiddingProcessReported = 498,
30308    AtomRunAdScoringProcessReported = 499,
30309    AtomRunAdSelectionProcessReported = 500,
30310    AtomRunAdBiddingPerCaProcessReported = 501,
30311    AtomMobileDataDownloadFileGroupStorageStatsReported = 503,
30312    AtomAdServicesMeasurementRegistrations = 512,
30313    AtomAdServicesGetTopicsReported = 535,
30314    AtomAdServicesEpochComputationGetTopTopicsReported = 536,
30315    AtomAdServicesEpochComputationClassifierReported = 537,
30316    AtomAdServicesBackCompatGetTopicsReported = 598,
30317    AtomAdServicesBackCompatEpochComputationClassifierReported = 599,
30318    AtomAdServicesMeasurementDebugKeys = 640,
30319    AtomAdServicesErrorReported = 662,
30320    AtomAdServicesBackgroundJobsExecutionReported = 663,
30321    AtomAdServicesMeasurementDelayedSourceRegistration = 673,
30322    AtomAdServicesMeasurementAttribution = 674,
30323    AtomAdServicesMeasurementJobs = 675,
30324    AtomAdServicesMeasurementWipeout = 676,
30325    AtomAdServicesMeasurementAdIdMatchForDebugKeys = 695,
30326    AtomAdServicesEnrollmentDataStored = 697,
30327    AtomAdServicesEnrollmentFileDownloaded = 698,
30328    AtomAdServicesEnrollmentMatched = 699,
30329    AtomAdServicesConsentMigrated = 702,
30330    AtomAdServicesEnrollmentFailed = 714,
30331    AtomAdServicesMeasurementClickVerification = 756,
30332    AtomAdServicesEncryptionKeyFetched = 765,
30333    AtomAdServicesEncryptionKeyDbTransactionEnded = 766,
30334    AtomDestinationRegisteredBeacons = 767,
30335    AtomReportInteractionApiCalled = 768,
30336    AtomInteractionReportingTableCleared = 769,
30337    AtomAppManifestConfigHelperCalled = 788,
30338    AtomAdFilteringProcessJoinCaReported = 793,
30339    AtomAdFilteringProcessAdSelectionReported = 794,
30340    AtomAdCounterHistogramUpdaterReported = 795,
30341    AtomSignatureVerification = 807,
30342    AtomKAnonImmediateSignJoinStatusReported = 808,
30343    AtomKAnonBackgroundJobStatusReported = 809,
30344    AtomKAnonInitializeStatusReported = 810,
30345    AtomKAnonSignStatusReported = 811,
30346    AtomKAnonJoinStatusReported = 812,
30347    AtomKAnonKeyAttestationStatusReported = 813,
30348    AtomGetAdSelectionDataApiCalled = 814,
30349    AtomGetAdSelectionDataBuyerInputGenerated = 815,
30350    AtomBackgroundJobSchedulingReported = 834,
30351    AtomTopicsEncryptionEpochComputationReported = 840,
30352    AtomTopicsEncryptionGetTopicsReported = 841,
30353    AtomAdservicesShellCommandCalled = 842,
30354    AtomUpdateSignalsApiCalled = 843,
30355    AtomEncodingJobRun = 844,
30356    AtomEncodingJsFetch = 845,
30357    AtomEncodingJsExecution = 846,
30358    AtomPersistAdSelectionResultCalled = 847,
30359    AtomServerAuctionKeyFetchCalled = 848,
30360    AtomServerAuctionBackgroundKeyFetchEnabled = 849,
30361    AtomAdServicesMeasurementProcessOdpRegistration = 864,
30362    AtomAdServicesMeasurementNotifyRegistrationToOdp = 865,
30363    AtomSelectAdsFromOutcomesApiCalled = 876,
30364    AtomReportImpressionApiCalled = 877,
30365    AtomAdServicesEnrollmentTransactionStats = 885,
30366    AtomAdServicesCobaltLoggerEventReported = 902,
30367    AtomAdServicesCobaltPeriodicJobEventReported = 903,
30368    AtomUpdateSignalsProcessReported = 905,
30369    AtomTopicsScheduleEpochJobSettingReported = 930,
30370    AtomScheduledCustomAudienceUpdateScheduleAttempted = 967,
30371    AtomScheduledCustomAudienceUpdatePerformed = 968,
30372    AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported = 969,
30373    AtomScheduledCustomAudienceUpdateBackgroundJobRan = 970,
30374    AtomThermalStatusCalled = 772,
30375    AtomThermalHeadroomCalled = 773,
30376    AtomThermalHeadroomThresholdsCalled = 774,
30377    AtomAdpfHintSessionTidCleanup = 839,
30378    AtomThermalHeadroomThresholds = 10201,
30379    AtomAdpfSessionSnapshot = 10218,
30380    AtomAdaptiveAuthUnlockAfterLockReported = 820,
30381    AtomAccountManagerEvent = 951,
30382    AtomAccessibilityCheckResultReported = 910,
30383}
30384impl AtomId {
30385    /// String value of the enum field names used in the ProtoBuf definition.
30386    ///
30387    /// The values are not transformed in any way and thus are considered stable
30388    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
30389    pub fn as_str_name(&self) -> &'static str {
30390        match self {
30391            Self::AtomUnspecified => "ATOM_UNSPECIFIED",
30392            Self::AtomBleScanStateChanged => "ATOM_BLE_SCAN_STATE_CHANGED",
30393            Self::AtomProcessStateChanged => "ATOM_PROCESS_STATE_CHANGED",
30394            Self::AtomBleScanResultReceived => "ATOM_BLE_SCAN_RESULT_RECEIVED",
30395            Self::AtomSensorStateChanged => "ATOM_SENSOR_STATE_CHANGED",
30396            Self::AtomGpsScanStateChanged => "ATOM_GPS_SCAN_STATE_CHANGED",
30397            Self::AtomSyncStateChanged => "ATOM_SYNC_STATE_CHANGED",
30398            Self::AtomScheduledJobStateChanged => "ATOM_SCHEDULED_JOB_STATE_CHANGED",
30399            Self::AtomScreenBrightnessChanged => "ATOM_SCREEN_BRIGHTNESS_CHANGED",
30400            Self::AtomWakelockStateChanged => "ATOM_WAKELOCK_STATE_CHANGED",
30401            Self::AtomLongPartialWakelockStateChanged => {
30402                "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED"
30403            }
30404            Self::AtomMobileRadioPowerStateChanged => {
30405                "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED"
30406            }
30407            Self::AtomWifiRadioPowerStateChanged => "ATOM_WIFI_RADIO_POWER_STATE_CHANGED",
30408            Self::AtomActivityManagerSleepStateChanged => {
30409                "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED"
30410            }
30411            Self::AtomMemoryFactorStateChanged => "ATOM_MEMORY_FACTOR_STATE_CHANGED",
30412            Self::AtomExcessiveCpuUsageReported => "ATOM_EXCESSIVE_CPU_USAGE_REPORTED",
30413            Self::AtomCachedKillReported => "ATOM_CACHED_KILL_REPORTED",
30414            Self::AtomProcessMemoryStatReported => "ATOM_PROCESS_MEMORY_STAT_REPORTED",
30415            Self::AtomLauncherEvent => "ATOM_LAUNCHER_EVENT",
30416            Self::AtomBatterySaverModeStateChanged => {
30417                "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED"
30418            }
30419            Self::AtomDeviceIdleModeStateChanged => "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED",
30420            Self::AtomDeviceIdlingModeStateChanged => {
30421                "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED"
30422            }
30423            Self::AtomAudioStateChanged => "ATOM_AUDIO_STATE_CHANGED",
30424            Self::AtomMediaCodecStateChanged => "ATOM_MEDIA_CODEC_STATE_CHANGED",
30425            Self::AtomCameraStateChanged => "ATOM_CAMERA_STATE_CHANGED",
30426            Self::AtomFlashlightStateChanged => "ATOM_FLASHLIGHT_STATE_CHANGED",
30427            Self::AtomUidProcessStateChanged => "ATOM_UID_PROCESS_STATE_CHANGED",
30428            Self::AtomProcessLifeCycleStateChanged => {
30429                "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED"
30430            }
30431            Self::AtomScreenStateChanged => "ATOM_SCREEN_STATE_CHANGED",
30432            Self::AtomBatteryLevelChanged => "ATOM_BATTERY_LEVEL_CHANGED",
30433            Self::AtomChargingStateChanged => "ATOM_CHARGING_STATE_CHANGED",
30434            Self::AtomPluggedStateChanged => "ATOM_PLUGGED_STATE_CHANGED",
30435            Self::AtomInteractiveStateChanged => "ATOM_INTERACTIVE_STATE_CHANGED",
30436            Self::AtomTouchEventReported => "ATOM_TOUCH_EVENT_REPORTED",
30437            Self::AtomWakeupAlarmOccurred => "ATOM_WAKEUP_ALARM_OCCURRED",
30438            Self::AtomKernelWakeupReported => "ATOM_KERNEL_WAKEUP_REPORTED",
30439            Self::AtomWifiLockStateChanged => "ATOM_WIFI_LOCK_STATE_CHANGED",
30440            Self::AtomWifiSignalStrengthChanged => "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED",
30441            Self::AtomWifiScanStateChanged => "ATOM_WIFI_SCAN_STATE_CHANGED",
30442            Self::AtomPhoneSignalStrengthChanged => "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED",
30443            Self::AtomSettingChanged => "ATOM_SETTING_CHANGED",
30444            Self::AtomActivityForegroundStateChanged => {
30445                "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED"
30446            }
30447            Self::AtomIsolatedUidChanged => "ATOM_ISOLATED_UID_CHANGED",
30448            Self::AtomPacketWakeupOccurred => "ATOM_PACKET_WAKEUP_OCCURRED",
30449            Self::AtomWallClockTimeShifted => "ATOM_WALL_CLOCK_TIME_SHIFTED",
30450            Self::AtomAnomalyDetected => "ATOM_ANOMALY_DETECTED",
30451            Self::AtomAppBreadcrumbReported => "ATOM_APP_BREADCRUMB_REPORTED",
30452            Self::AtomAppStartOccurred => "ATOM_APP_START_OCCURRED",
30453            Self::AtomAppStartCanceled => "ATOM_APP_START_CANCELED",
30454            Self::AtomAppStartFullyDrawn => "ATOM_APP_START_FULLY_DRAWN",
30455            Self::AtomLmkKillOccurred => "ATOM_LMK_KILL_OCCURRED",
30456            Self::AtomPictureInPictureStateChanged => {
30457                "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED"
30458            }
30459            Self::AtomWifiMulticastLockStateChanged => {
30460                "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED"
30461            }
30462            Self::AtomAppStartMemoryStateCaptured => {
30463                "ATOM_APP_START_MEMORY_STATE_CAPTURED"
30464            }
30465            Self::AtomShutdownSequenceReported => "ATOM_SHUTDOWN_SEQUENCE_REPORTED",
30466            Self::AtomBootSequenceReported => "ATOM_BOOT_SEQUENCE_REPORTED",
30467            Self::AtomOverlayStateChanged => "ATOM_OVERLAY_STATE_CHANGED",
30468            Self::AtomForegroundServiceStateChanged => {
30469                "ATOM_FOREGROUND_SERVICE_STATE_CHANGED"
30470            }
30471            Self::AtomCallStateChanged => "ATOM_CALL_STATE_CHANGED",
30472            Self::AtomKeyguardStateChanged => "ATOM_KEYGUARD_STATE_CHANGED",
30473            Self::AtomKeyguardBouncerStateChanged => {
30474                "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED"
30475            }
30476            Self::AtomKeyguardBouncerPasswordEntered => {
30477                "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED"
30478            }
30479            Self::AtomAppDied => "ATOM_APP_DIED",
30480            Self::AtomResourceConfigurationChanged => {
30481                "ATOM_RESOURCE_CONFIGURATION_CHANGED"
30482            }
30483            Self::AtomBluetoothEnabledStateChanged => {
30484                "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED"
30485            }
30486            Self::AtomBluetoothConnectionStateChanged => {
30487                "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED"
30488            }
30489            Self::AtomGpsSignalQualityChanged => "ATOM_GPS_SIGNAL_QUALITY_CHANGED",
30490            Self::AtomUsbConnectorStateChanged => "ATOM_USB_CONNECTOR_STATE_CHANGED",
30491            Self::AtomSpeakerImpedanceReported => "ATOM_SPEAKER_IMPEDANCE_REPORTED",
30492            Self::AtomHardwareFailed => "ATOM_HARDWARE_FAILED",
30493            Self::AtomPhysicalDropDetected => "ATOM_PHYSICAL_DROP_DETECTED",
30494            Self::AtomChargeCyclesReported => "ATOM_CHARGE_CYCLES_REPORTED",
30495            Self::AtomMobileConnectionStateChanged => {
30496                "ATOM_MOBILE_CONNECTION_STATE_CHANGED"
30497            }
30498            Self::AtomMobileRadioTechnologyChanged => {
30499                "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED"
30500            }
30501            Self::AtomUsbDeviceAttached => "ATOM_USB_DEVICE_ATTACHED",
30502            Self::AtomAppCrashOccurred => "ATOM_APP_CRASH_OCCURRED",
30503            Self::AtomAnrOccurred => "ATOM_ANR_OCCURRED",
30504            Self::AtomWtfOccurred => "ATOM_WTF_OCCURRED",
30505            Self::AtomLowMemReported => "ATOM_LOW_MEM_REPORTED",
30506            Self::AtomGenericAtom => "ATOM_GENERIC_ATOM",
30507            Self::AtomVibratorStateChanged => "ATOM_VIBRATOR_STATE_CHANGED",
30508            Self::AtomDeferredJobStatsReported => "ATOM_DEFERRED_JOB_STATS_REPORTED",
30509            Self::AtomThermalThrottling => "ATOM_THERMAL_THROTTLING",
30510            Self::AtomBiometricAcquired => "ATOM_BIOMETRIC_ACQUIRED",
30511            Self::AtomBiometricAuthenticated => "ATOM_BIOMETRIC_AUTHENTICATED",
30512            Self::AtomBiometricErrorOccurred => "ATOM_BIOMETRIC_ERROR_OCCURRED",
30513            Self::AtomUiEventReported => "ATOM_UI_EVENT_REPORTED",
30514            Self::AtomBatteryHealthSnapshot => "ATOM_BATTERY_HEALTH_SNAPSHOT",
30515            Self::AtomSlowIo => "ATOM_SLOW_IO",
30516            Self::AtomBatteryCausedShutdown => "ATOM_BATTERY_CAUSED_SHUTDOWN",
30517            Self::AtomPhoneServiceStateChanged => "ATOM_PHONE_SERVICE_STATE_CHANGED",
30518            Self::AtomPhoneStateChanged => "ATOM_PHONE_STATE_CHANGED",
30519            Self::AtomUserRestrictionChanged => "ATOM_USER_RESTRICTION_CHANGED",
30520            Self::AtomSettingsUiChanged => "ATOM_SETTINGS_UI_CHANGED",
30521            Self::AtomConnectivityStateChanged => "ATOM_CONNECTIVITY_STATE_CHANGED",
30522            Self::AtomServiceStateChanged => "ATOM_SERVICE_STATE_CHANGED",
30523            Self::AtomServiceLaunchReported => "ATOM_SERVICE_LAUNCH_REPORTED",
30524            Self::AtomFlagFlipUpdateOccurred => "ATOM_FLAG_FLIP_UPDATE_OCCURRED",
30525            Self::AtomBinaryPushStateChanged => "ATOM_BINARY_PUSH_STATE_CHANGED",
30526            Self::AtomDevicePolicyEvent => "ATOM_DEVICE_POLICY_EVENT",
30527            Self::AtomDocsUiFileOpCanceled => "ATOM_DOCS_UI_FILE_OP_CANCELED",
30528            Self::AtomDocsUiFileOpCopyMoveModeReported => {
30529                "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED"
30530            }
30531            Self::AtomDocsUiFileOpFailure => "ATOM_DOCS_UI_FILE_OP_FAILURE",
30532            Self::AtomDocsUiProviderFileOp => "ATOM_DOCS_UI_PROVIDER_FILE_OP",
30533            Self::AtomDocsUiInvalidScopedAccessRequest => {
30534                "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST"
30535            }
30536            Self::AtomDocsUiLaunchReported => "ATOM_DOCS_UI_LAUNCH_REPORTED",
30537            Self::AtomDocsUiRootVisited => "ATOM_DOCS_UI_ROOT_VISITED",
30538            Self::AtomDocsUiStartupMs => "ATOM_DOCS_UI_STARTUP_MS",
30539            Self::AtomDocsUiUserActionReported => "ATOM_DOCS_UI_USER_ACTION_REPORTED",
30540            Self::AtomWifiEnabledStateChanged => "ATOM_WIFI_ENABLED_STATE_CHANGED",
30541            Self::AtomWifiRunningStateChanged => "ATOM_WIFI_RUNNING_STATE_CHANGED",
30542            Self::AtomAppCompacted => "ATOM_APP_COMPACTED",
30543            Self::AtomNetworkDnsEventReported => "ATOM_NETWORK_DNS_EVENT_REPORTED",
30544            Self::AtomDocsUiPickerLaunchedFromReported => {
30545                "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED"
30546            }
30547            Self::AtomDocsUiPickResultReported => "ATOM_DOCS_UI_PICK_RESULT_REPORTED",
30548            Self::AtomDocsUiSearchModeReported => "ATOM_DOCS_UI_SEARCH_MODE_REPORTED",
30549            Self::AtomDocsUiSearchTypeReported => "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED",
30550            Self::AtomDataStallEvent => "ATOM_DATA_STALL_EVENT",
30551            Self::AtomRescuePartyResetReported => "ATOM_RESCUE_PARTY_RESET_REPORTED",
30552            Self::AtomSignedConfigReported => "ATOM_SIGNED_CONFIG_REPORTED",
30553            Self::AtomGnssNiEventReported => "ATOM_GNSS_NI_EVENT_REPORTED",
30554            Self::AtomBluetoothLinkLayerConnectionEvent => {
30555                "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT"
30556            }
30557            Self::AtomBluetoothAclConnectionStateChanged => {
30558                "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED"
30559            }
30560            Self::AtomBluetoothScoConnectionStateChanged => {
30561                "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED"
30562            }
30563            Self::AtomAppDowngraded => "ATOM_APP_DOWNGRADED",
30564            Self::AtomAppOptimizedAfterDowngraded => {
30565                "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED"
30566            }
30567            Self::AtomLowStorageStateChanged => "ATOM_LOW_STORAGE_STATE_CHANGED",
30568            Self::AtomGnssNfwNotificationReported => {
30569                "ATOM_GNSS_NFW_NOTIFICATION_REPORTED"
30570            }
30571            Self::AtomGnssConfigurationReported => "ATOM_GNSS_CONFIGURATION_REPORTED",
30572            Self::AtomUsbPortOverheatEventReported => {
30573                "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED"
30574            }
30575            Self::AtomNfcErrorOccurred => "ATOM_NFC_ERROR_OCCURRED",
30576            Self::AtomNfcStateChanged => "ATOM_NFC_STATE_CHANGED",
30577            Self::AtomNfcBeamOccurred => "ATOM_NFC_BEAM_OCCURRED",
30578            Self::AtomNfcCardemulationOccurred => "ATOM_NFC_CARDEMULATION_OCCURRED",
30579            Self::AtomNfcTagOccurred => "ATOM_NFC_TAG_OCCURRED",
30580            Self::AtomNfcHceTransactionOccurred => "ATOM_NFC_HCE_TRANSACTION_OCCURRED",
30581            Self::AtomSeStateChanged => "ATOM_SE_STATE_CHANGED",
30582            Self::AtomSeOmapiReported => "ATOM_SE_OMAPI_REPORTED",
30583            Self::AtomBroadcastDispatchLatencyReported => {
30584                "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED"
30585            }
30586            Self::AtomAttentionManagerServiceResultReported => {
30587                "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED"
30588            }
30589            Self::AtomAdbConnectionChanged => "ATOM_ADB_CONNECTION_CHANGED",
30590            Self::AtomSpeechDspStatReported => "ATOM_SPEECH_DSP_STAT_REPORTED",
30591            Self::AtomUsbContaminantReported => "ATOM_USB_CONTAMINANT_REPORTED",
30592            Self::AtomWatchdogRollbackOccurred => "ATOM_WATCHDOG_ROLLBACK_OCCURRED",
30593            Self::AtomBiometricSystemHealthIssueDetected => {
30594                "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED"
30595            }
30596            Self::AtomBubbleUiChanged => "ATOM_BUBBLE_UI_CHANGED",
30597            Self::AtomScheduledJobConstraintChanged => {
30598                "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED"
30599            }
30600            Self::AtomBluetoothActiveDeviceChanged => {
30601                "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED"
30602            }
30603            Self::AtomBluetoothA2dpPlaybackStateChanged => {
30604                "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED"
30605            }
30606            Self::AtomBluetoothA2dpCodecConfigChanged => {
30607                "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED"
30608            }
30609            Self::AtomBluetoothA2dpCodecCapabilityChanged => {
30610                "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED"
30611            }
30612            Self::AtomBluetoothA2dpAudioUnderrunReported => {
30613                "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED"
30614            }
30615            Self::AtomBluetoothA2dpAudioOverrunReported => {
30616                "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED"
30617            }
30618            Self::AtomBluetoothDeviceRssiReported => {
30619                "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED"
30620            }
30621            Self::AtomBluetoothDeviceFailedContactCounterReported => {
30622                "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED"
30623            }
30624            Self::AtomBluetoothDeviceTxPowerLevelReported => {
30625                "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED"
30626            }
30627            Self::AtomBluetoothHciTimeoutReported => {
30628                "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED"
30629            }
30630            Self::AtomBluetoothQualityReportReported => {
30631                "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED"
30632            }
30633            Self::AtomBluetoothDeviceInfoReported => {
30634                "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED"
30635            }
30636            Self::AtomBluetoothRemoteVersionInfoReported => {
30637                "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED"
30638            }
30639            Self::AtomBluetoothSdpAttributeReported => {
30640                "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED"
30641            }
30642            Self::AtomBluetoothBondStateChanged => "ATOM_BLUETOOTH_BOND_STATE_CHANGED",
30643            Self::AtomBluetoothClassicPairingEventReported => {
30644                "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED"
30645            }
30646            Self::AtomBluetoothSmpPairingEventReported => {
30647                "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED"
30648            }
30649            Self::AtomScreenTimeoutExtensionReported => {
30650                "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED"
30651            }
30652            Self::AtomProcessStartTime => "ATOM_PROCESS_START_TIME",
30653            Self::AtomPermissionGrantRequestResultReported => {
30654                "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED"
30655            }
30656            Self::AtomBluetoothSocketConnectionStateChanged => {
30657                "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED"
30658            }
30659            Self::AtomDeviceIdentifierAccessDenied => {
30660                "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED"
30661            }
30662            Self::AtomBubbleDeveloperErrorReported => {
30663                "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED"
30664            }
30665            Self::AtomAssistGestureStageReported => "ATOM_ASSIST_GESTURE_STAGE_REPORTED",
30666            Self::AtomAssistGestureFeedbackReported => {
30667                "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED"
30668            }
30669            Self::AtomAssistGestureProgressReported => {
30670                "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED"
30671            }
30672            Self::AtomTouchGestureClassified => "ATOM_TOUCH_GESTURE_CLASSIFIED",
30673            Self::AtomHiddenApiUsed => "ATOM_HIDDEN_API_USED",
30674            Self::AtomStyleUiChanged => "ATOM_STYLE_UI_CHANGED",
30675            Self::AtomPrivacyIndicatorsInteracted => "ATOM_PRIVACY_INDICATORS_INTERACTED",
30676            Self::AtomAppInstallOnExternalStorageReported => {
30677                "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED"
30678            }
30679            Self::AtomNetworkStackReported => "ATOM_NETWORK_STACK_REPORTED",
30680            Self::AtomAppMovedStorageReported => "ATOM_APP_MOVED_STORAGE_REPORTED",
30681            Self::AtomBiometricEnrolled => "ATOM_BIOMETRIC_ENROLLED",
30682            Self::AtomSystemServerWatchdogOccurred => {
30683                "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED"
30684            }
30685            Self::AtomTombStoneOccurred => "ATOM_TOMB_STONE_OCCURRED",
30686            Self::AtomBluetoothClassOfDeviceReported => {
30687                "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED"
30688            }
30689            Self::AtomIntelligenceEventReported => "ATOM_INTELLIGENCE_EVENT_REPORTED",
30690            Self::AtomThermalThrottlingSeverityStateChanged => {
30691                "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED"
30692            }
30693            Self::AtomRoleRequestResultReported => "ATOM_ROLE_REQUEST_RESULT_REPORTED",
30694            Self::AtomMediametricsAudiopolicyReported => {
30695                "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED"
30696            }
30697            Self::AtomMediametricsAudiorecordReported => {
30698                "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED"
30699            }
30700            Self::AtomMediametricsAudiothreadReported => {
30701                "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED"
30702            }
30703            Self::AtomMediametricsAudiotrackReported => {
30704                "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED"
30705            }
30706            Self::AtomMediametricsCodecReported => "ATOM_MEDIAMETRICS_CODEC_REPORTED",
30707            Self::AtomMediametricsDrmWidevineReported => {
30708                "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED"
30709            }
30710            Self::AtomMediametricsExtractorReported => {
30711                "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED"
30712            }
30713            Self::AtomMediametricsMediadrmReported => {
30714                "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED"
30715            }
30716            Self::AtomMediametricsNuplayerReported => {
30717                "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED"
30718            }
30719            Self::AtomMediametricsRecorderReported => {
30720                "ATOM_MEDIAMETRICS_RECORDER_REPORTED"
30721            }
30722            Self::AtomMediametricsDrmmanagerReported => {
30723                "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED"
30724            }
30725            Self::AtomCarPowerStateChanged => "ATOM_CAR_POWER_STATE_CHANGED",
30726            Self::AtomGarageModeInfo => "ATOM_GARAGE_MODE_INFO",
30727            Self::AtomTestAtomReported => "ATOM_TEST_ATOM_REPORTED",
30728            Self::AtomContentCaptureCallerMismatchReported => {
30729                "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED"
30730            }
30731            Self::AtomContentCaptureServiceEvents => {
30732                "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS"
30733            }
30734            Self::AtomContentCaptureSessionEvents => {
30735                "ATOM_CONTENT_CAPTURE_SESSION_EVENTS"
30736            }
30737            Self::AtomContentCaptureFlushed => "ATOM_CONTENT_CAPTURE_FLUSHED",
30738            Self::AtomLocationManagerApiUsageReported => {
30739                "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED"
30740            }
30741            Self::AtomReviewPermissionsFragmentResultReported => {
30742                "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED"
30743            }
30744            Self::AtomRuntimePermissionsUpgradeResult => {
30745                "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT"
30746            }
30747            Self::AtomGrantPermissionsActivityButtonActions => {
30748                "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS"
30749            }
30750            Self::AtomLocationAccessCheckNotificationAction => {
30751                "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION"
30752            }
30753            Self::AtomAppPermissionFragmentActionReported => {
30754                "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED"
30755            }
30756            Self::AtomAppPermissionFragmentViewed => {
30757                "ATOM_APP_PERMISSION_FRAGMENT_VIEWED"
30758            }
30759            Self::AtomAppPermissionsFragmentViewed => {
30760                "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED"
30761            }
30762            Self::AtomPermissionAppsFragmentViewed => {
30763                "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED"
30764            }
30765            Self::AtomTextSelectionEvent => "ATOM_TEXT_SELECTION_EVENT",
30766            Self::AtomTextLinkifyEvent => "ATOM_TEXT_LINKIFY_EVENT",
30767            Self::AtomConversationActionsEvent => "ATOM_CONVERSATION_ACTIONS_EVENT",
30768            Self::AtomLanguageDetectionEvent => "ATOM_LANGUAGE_DETECTION_EVENT",
30769            Self::AtomExclusionRectStateChanged => "ATOM_EXCLUSION_RECT_STATE_CHANGED",
30770            Self::AtomBackGestureReportedReported => {
30771                "ATOM_BACK_GESTURE_REPORTED_REPORTED"
30772            }
30773            Self::AtomUpdateEngineUpdateAttemptReported => {
30774                "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED"
30775            }
30776            Self::AtomUpdateEngineSuccessfulUpdateReported => {
30777                "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED"
30778            }
30779            Self::AtomCameraActionEvent => "ATOM_CAMERA_ACTION_EVENT",
30780            Self::AtomAppCompatibilityChangeReported => {
30781                "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED"
30782            }
30783            Self::AtomPerfettoUploaded => "ATOM_PERFETTO_UPLOADED",
30784            Self::AtomVmsClientConnectionStateChanged => {
30785                "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED"
30786            }
30787            Self::AtomMediaProviderScanOccurred => "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED",
30788            Self::AtomMediaContentDeleted => "ATOM_MEDIA_CONTENT_DELETED",
30789            Self::AtomMediaProviderPermissionRequested => {
30790                "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED"
30791            }
30792            Self::AtomMediaProviderSchemaChanged => "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED",
30793            Self::AtomMediaProviderIdleMaintenanceFinished => {
30794                "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED"
30795            }
30796            Self::AtomRebootEscrowRecoveryReported => {
30797                "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED"
30798            }
30799            Self::AtomBootTimeEventDurationReported => {
30800                "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED"
30801            }
30802            Self::AtomBootTimeEventElapsedTimeReported => {
30803                "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED"
30804            }
30805            Self::AtomBootTimeEventUtcTimeReported => {
30806                "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED"
30807            }
30808            Self::AtomBootTimeEventErrorCodeReported => {
30809                "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED"
30810            }
30811            Self::AtomUserspaceRebootReported => "ATOM_USERSPACE_REBOOT_REPORTED",
30812            Self::AtomNotificationReported => "ATOM_NOTIFICATION_REPORTED",
30813            Self::AtomNotificationPanelReported => "ATOM_NOTIFICATION_PANEL_REPORTED",
30814            Self::AtomNotificationChannelModified => "ATOM_NOTIFICATION_CHANNEL_MODIFIED",
30815            Self::AtomIntegrityCheckResultReported => {
30816                "ATOM_INTEGRITY_CHECK_RESULT_REPORTED"
30817            }
30818            Self::AtomIntegrityRulesPushed => "ATOM_INTEGRITY_RULES_PUSHED",
30819            Self::AtomCbMessageReported => "ATOM_CB_MESSAGE_REPORTED",
30820            Self::AtomCbMessageError => "ATOM_CB_MESSAGE_ERROR",
30821            Self::AtomWifiHealthStatReported => "ATOM_WIFI_HEALTH_STAT_REPORTED",
30822            Self::AtomWifiFailureStatReported => "ATOM_WIFI_FAILURE_STAT_REPORTED",
30823            Self::AtomWifiConnectionResultReported => {
30824                "ATOM_WIFI_CONNECTION_RESULT_REPORTED"
30825            }
30826            Self::AtomAppFreezeChanged => "ATOM_APP_FREEZE_CHANGED",
30827            Self::AtomSnapshotMergeReported => "ATOM_SNAPSHOT_MERGE_REPORTED",
30828            Self::AtomForegroundServiceAppOpSessionEnded => {
30829                "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED"
30830            }
30831            Self::AtomDisplayJankReported => "ATOM_DISPLAY_JANK_REPORTED",
30832            Self::AtomAppStandbyBucketChanged => "ATOM_APP_STANDBY_BUCKET_CHANGED",
30833            Self::AtomSharesheetStarted => "ATOM_SHARESHEET_STARTED",
30834            Self::AtomRankingSelected => "ATOM_RANKING_SELECTED",
30835            Self::AtomTvsettingsUiInteracted => "ATOM_TVSETTINGS_UI_INTERACTED",
30836            Self::AtomLauncherSnapshot => "ATOM_LAUNCHER_SNAPSHOT",
30837            Self::AtomPackageInstallerV2Reported => "ATOM_PACKAGE_INSTALLER_V2_REPORTED",
30838            Self::AtomUserLifecycleJourneyReported => {
30839                "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED"
30840            }
30841            Self::AtomUserLifecycleEventOccurred => "ATOM_USER_LIFECYCLE_EVENT_OCCURRED",
30842            Self::AtomAccessibilityShortcutReported => {
30843                "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED"
30844            }
30845            Self::AtomAccessibilityServiceReported => {
30846                "ATOM_ACCESSIBILITY_SERVICE_REPORTED"
30847            }
30848            Self::AtomDocsUiDragAndDropReported => "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED",
30849            Self::AtomAppUsageEventOccurred => "ATOM_APP_USAGE_EVENT_OCCURRED",
30850            Self::AtomAutoRevokeNotificationClicked => {
30851                "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED"
30852            }
30853            Self::AtomAutoRevokeFragmentAppViewed => {
30854                "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED"
30855            }
30856            Self::AtomAutoRevokedAppInteraction => "ATOM_AUTO_REVOKED_APP_INTERACTION",
30857            Self::AtomAppPermissionGroupsFragmentAutoRevokeAction => {
30858                "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION"
30859            }
30860            Self::AtomEvsUsageStatsReported => "ATOM_EVS_USAGE_STATS_REPORTED",
30861            Self::AtomAudioPowerUsageDataReported => {
30862                "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED"
30863            }
30864            Self::AtomTvTunerStateChanged => "ATOM_TV_TUNER_STATE_CHANGED",
30865            Self::AtomMediaoutputOpSwitchReported => {
30866                "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED"
30867            }
30868            Self::AtomCbMessageFiltered => "ATOM_CB_MESSAGE_FILTERED",
30869            Self::AtomTvTunerDvrStatus => "ATOM_TV_TUNER_DVR_STATUS",
30870            Self::AtomTvCasSessionOpenStatus => "ATOM_TV_CAS_SESSION_OPEN_STATUS",
30871            Self::AtomAssistantInvocationReported => "ATOM_ASSISTANT_INVOCATION_REPORTED",
30872            Self::AtomDisplayWakeReported => "ATOM_DISPLAY_WAKE_REPORTED",
30873            Self::AtomCarUserHalModifyUserRequestReported => {
30874                "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED"
30875            }
30876            Self::AtomCarUserHalModifyUserResponseReported => {
30877                "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED"
30878            }
30879            Self::AtomCarUserHalPostSwitchResponseReported => {
30880                "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED"
30881            }
30882            Self::AtomCarUserHalInitialUserInfoRequestReported => {
30883                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED"
30884            }
30885            Self::AtomCarUserHalInitialUserInfoResponseReported => {
30886                "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED"
30887            }
30888            Self::AtomCarUserHalUserAssociationRequestReported => {
30889                "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED"
30890            }
30891            Self::AtomCarUserHalSetUserAssociationResponseReported => {
30892                "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED"
30893            }
30894            Self::AtomNetworkIpProvisioningReported => {
30895                "ATOM_NETWORK_IP_PROVISIONING_REPORTED"
30896            }
30897            Self::AtomNetworkDhcpRenewReported => "ATOM_NETWORK_DHCP_RENEW_REPORTED",
30898            Self::AtomNetworkValidationReported => "ATOM_NETWORK_VALIDATION_REPORTED",
30899            Self::AtomNetworkStackQuirkReported => "ATOM_NETWORK_STACK_QUIRK_REPORTED",
30900            Self::AtomMediametricsAudiorecorddeviceusageReported => {
30901                "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED"
30902            }
30903            Self::AtomMediametricsAudiothreaddeviceusageReported => {
30904                "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED"
30905            }
30906            Self::AtomMediametricsAudiotrackdeviceusageReported => {
30907                "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED"
30908            }
30909            Self::AtomMediametricsAudiodeviceconnectionReported => {
30910                "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED"
30911            }
30912            Self::AtomBlobCommitted => "ATOM_BLOB_COMMITTED",
30913            Self::AtomBlobLeased => "ATOM_BLOB_LEASED",
30914            Self::AtomBlobOpened => "ATOM_BLOB_OPENED",
30915            Self::AtomContactsProviderStatusReported => {
30916                "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED"
30917            }
30918            Self::AtomKeystoreKeyEventReported => "ATOM_KEYSTORE_KEY_EVENT_REPORTED",
30919            Self::AtomNetworkTetheringReported => "ATOM_NETWORK_TETHERING_REPORTED",
30920            Self::AtomImeTouchReported => "ATOM_IME_TOUCH_REPORTED",
30921            Self::AtomUiInteractionFrameInfoReported => {
30922                "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED"
30923            }
30924            Self::AtomUiActionLatencyReported => "ATOM_UI_ACTION_LATENCY_REPORTED",
30925            Self::AtomWifiDisconnectReported => "ATOM_WIFI_DISCONNECT_REPORTED",
30926            Self::AtomWifiConnectionStateChanged => "ATOM_WIFI_CONNECTION_STATE_CHANGED",
30927            Self::AtomHdmiCecActiveSourceChanged => "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED",
30928            Self::AtomHdmiCecMessageReported => "ATOM_HDMI_CEC_MESSAGE_REPORTED",
30929            Self::AtomAirplaneMode => "ATOM_AIRPLANE_MODE",
30930            Self::AtomModemRestart => "ATOM_MODEM_RESTART",
30931            Self::AtomCarrierIdMismatchReported => "ATOM_CARRIER_ID_MISMATCH_REPORTED",
30932            Self::AtomCarrierIdTableUpdated => "ATOM_CARRIER_ID_TABLE_UPDATED",
30933            Self::AtomDataStallRecoveryReported => "ATOM_DATA_STALL_RECOVERY_REPORTED",
30934            Self::AtomMediametricsMediaparserReported => {
30935                "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED"
30936            }
30937            Self::AtomTlsHandshakeReported => "ATOM_TLS_HANDSHAKE_REPORTED",
30938            Self::AtomTextClassifierApiUsageReported => {
30939                "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED"
30940            }
30941            Self::AtomCarWatchdogKillStatsReported => {
30942                "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED"
30943            }
30944            Self::AtomMediametricsPlaybackReported => {
30945                "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED"
30946            }
30947            Self::AtomMediaNetworkInfoChanged => "ATOM_MEDIA_NETWORK_INFO_CHANGED",
30948            Self::AtomMediaPlaybackStateChanged => "ATOM_MEDIA_PLAYBACK_STATE_CHANGED",
30949            Self::AtomMediaPlaybackErrorReported => "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED",
30950            Self::AtomMediaPlaybackTrackChanged => "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED",
30951            Self::AtomWifiScanReported => "ATOM_WIFI_SCAN_REPORTED",
30952            Self::AtomWifiPnoScanReported => "ATOM_WIFI_PNO_SCAN_REPORTED",
30953            Self::AtomTifTuneChanged => "ATOM_TIF_TUNE_CHANGED",
30954            Self::AtomAutoRotateReported => "ATOM_AUTO_ROTATE_REPORTED",
30955            Self::AtomPerfettoTrigger => "ATOM_PERFETTO_TRIGGER",
30956            Self::AtomTranscodingData => "ATOM_TRANSCODING_DATA",
30957            Self::AtomImsServiceEntitlementUpdated => {
30958                "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED"
30959            }
30960            Self::AtomDeviceRotated => "ATOM_DEVICE_ROTATED",
30961            Self::AtomSimSpecificSettingsRestored => {
30962                "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED"
30963            }
30964            Self::AtomTextClassifierDownloadReported => {
30965                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED"
30966            }
30967            Self::AtomPinStorageEvent => "ATOM_PIN_STORAGE_EVENT",
30968            Self::AtomFaceDownReported => "ATOM_FACE_DOWN_REPORTED",
30969            Self::AtomBluetoothHalCrashReasonReported => {
30970                "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED"
30971            }
30972            Self::AtomRebootEscrowPreparationReported => {
30973                "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED"
30974            }
30975            Self::AtomRebootEscrowLskfCaptureReported => {
30976                "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED"
30977            }
30978            Self::AtomRebootEscrowRebootReported => "ATOM_REBOOT_ESCROW_REBOOT_REPORTED",
30979            Self::AtomBinderLatencyReported => "ATOM_BINDER_LATENCY_REPORTED",
30980            Self::AtomMediametricsAaudiostreamReported => {
30981                "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED"
30982            }
30983            Self::AtomMediaTranscodingSessionEnded => {
30984                "ATOM_MEDIA_TRANSCODING_SESSION_ENDED"
30985            }
30986            Self::AtomMagnificationUsageReported => "ATOM_MAGNIFICATION_USAGE_REPORTED",
30987            Self::AtomMagnificationModeWithImeOnReported => {
30988                "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED"
30989            }
30990            Self::AtomAppSearchCallStatsReported => "ATOM_APP_SEARCH_CALL_STATS_REPORTED",
30991            Self::AtomAppSearchPutDocumentStatsReported => {
30992                "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED"
30993            }
30994            Self::AtomDeviceControlChanged => "ATOM_DEVICE_CONTROL_CHANGED",
30995            Self::AtomDeviceStateChanged => "ATOM_DEVICE_STATE_CHANGED",
30996            Self::AtomInputdeviceRegistered => "ATOM_INPUTDEVICE_REGISTERED",
30997            Self::AtomSmartspaceCardReported => "ATOM_SMARTSPACE_CARD_REPORTED",
30998            Self::AtomAuthPromptAuthenticateInvoked => {
30999                "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED"
31000            }
31001            Self::AtomAuthManagerCanAuthenticateInvoked => {
31002                "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED"
31003            }
31004            Self::AtomAuthEnrollActionInvoked => "ATOM_AUTH_ENROLL_ACTION_INVOKED",
31005            Self::AtomAuthDeprecatedApiUsed => "ATOM_AUTH_DEPRECATED_API_USED",
31006            Self::AtomUnattendedRebootOccurred => "ATOM_UNATTENDED_REBOOT_OCCURRED",
31007            Self::AtomLongRebootBlockingReported => "ATOM_LONG_REBOOT_BLOCKING_REPORTED",
31008            Self::AtomLocationTimeZoneProviderStateChanged => {
31009                "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED"
31010            }
31011            Self::AtomFdtrackEventOccurred => "ATOM_FDTRACK_EVENT_OCCURRED",
31012            Self::AtomTimeoutAutoExtendedReported => {
31013                "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED"
31014            }
31015            Self::AtomAlarmBatchDelivered => "ATOM_ALARM_BATCH_DELIVERED",
31016            Self::AtomAlarmScheduled => "ATOM_ALARM_SCHEDULED",
31017            Self::AtomCarWatchdogIoOveruseStatsReported => {
31018                "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED"
31019            }
31020            Self::AtomUserLevelHibernationStateChanged => {
31021                "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED"
31022            }
31023            Self::AtomAppSearchInitializeStatsReported => {
31024                "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED"
31025            }
31026            Self::AtomAppSearchQueryStatsReported => {
31027                "ATOM_APP_SEARCH_QUERY_STATS_REPORTED"
31028            }
31029            Self::AtomAppProcessDied => "ATOM_APP_PROCESS_DIED",
31030            Self::AtomNetworkIpReachabilityMonitorReported => {
31031                "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED"
31032            }
31033            Self::AtomSlowInputEventReported => "ATOM_SLOW_INPUT_EVENT_REPORTED",
31034            Self::AtomAnrOccurredProcessingStarted => {
31035                "ATOM_ANR_OCCURRED_PROCESSING_STARTED"
31036            }
31037            Self::AtomAppSearchRemoveStatsReported => {
31038                "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED"
31039            }
31040            Self::AtomMediaCodecReported => "ATOM_MEDIA_CODEC_REPORTED",
31041            Self::AtomPermissionUsageFragmentInteraction => {
31042                "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION"
31043            }
31044            Self::AtomPermissionDetailsInteraction => {
31045                "ATOM_PERMISSION_DETAILS_INTERACTION"
31046            }
31047            Self::AtomPrivacySensorToggleInteraction => {
31048                "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION"
31049            }
31050            Self::AtomPrivacyToggleDialogInteraction => {
31051                "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION"
31052            }
31053            Self::AtomAppSearchOptimizeStatsReported => {
31054                "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED"
31055            }
31056            Self::AtomNonA11yToolServiceWarningReport => {
31057                "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT"
31058            }
31059            Self::AtomAppCompatStateChanged => "ATOM_APP_COMPAT_STATE_CHANGED",
31060            Self::AtomSizeCompatRestartButtonEventReported => {
31061                "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED"
31062            }
31063            Self::AtomSplitscreenUiChanged => "ATOM_SPLITSCREEN_UI_CHANGED",
31064            Self::AtomNetworkDnsHandshakeReported => {
31065                "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED"
31066            }
31067            Self::AtomBluetoothCodePathCounter => "ATOM_BLUETOOTH_CODE_PATH_COUNTER",
31068            Self::AtomBluetoothLeBatchScanReportDelay => {
31069                "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY"
31070            }
31071            Self::AtomAccessibilityFloatingMenuUiChanged => {
31072                "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED"
31073            }
31074            Self::AtomNeuralnetworksCompilationCompleted => {
31075                "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED"
31076            }
31077            Self::AtomNeuralnetworksExecutionCompleted => {
31078                "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED"
31079            }
31080            Self::AtomNeuralnetworksCompilationFailed => {
31081                "ATOM_NEURALNETWORKS_COMPILATION_FAILED"
31082            }
31083            Self::AtomNeuralnetworksExecutionFailed => {
31084                "ATOM_NEURALNETWORKS_EXECUTION_FAILED"
31085            }
31086            Self::AtomContextHubBooted => "ATOM_CONTEXT_HUB_BOOTED",
31087            Self::AtomContextHubRestarted => "ATOM_CONTEXT_HUB_RESTARTED",
31088            Self::AtomContextHubLoadedNanoappSnapshotReported => {
31089                "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED"
31090            }
31091            Self::AtomChreCodeDownloadTransacted => "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED",
31092            Self::AtomUwbSessionInited => "ATOM_UWB_SESSION_INITED",
31093            Self::AtomUwbSessionClosed => "ATOM_UWB_SESSION_CLOSED",
31094            Self::AtomUwbFirstRangingReceived => "ATOM_UWB_FIRST_RANGING_RECEIVED",
31095            Self::AtomUwbRangingMeasurementReceived => {
31096                "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED"
31097            }
31098            Self::AtomTextClassifierDownloadWorkScheduled => {
31099                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED"
31100            }
31101            Self::AtomTextClassifierDownloadWorkCompleted => {
31102                "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED"
31103            }
31104            Self::AtomClipboardCleared => "ATOM_CLIPBOARD_CLEARED",
31105            Self::AtomVmCreationRequested => "ATOM_VM_CREATION_REQUESTED",
31106            Self::AtomNearbyDeviceScanStateChanged => {
31107                "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED"
31108            }
31109            Self::AtomApplicationLocalesChanged => "ATOM_APPLICATION_LOCALES_CHANGED",
31110            Self::AtomMediametricsAudiotrackstatusReported => {
31111                "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED"
31112            }
31113            Self::AtomFoldStateDurationReported => "ATOM_FOLD_STATE_DURATION_REPORTED",
31114            Self::AtomLocationTimeZoneProviderControllerStateChanged => {
31115                "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED"
31116            }
31117            Self::AtomDisplayHbmStateChanged => "ATOM_DISPLAY_HBM_STATE_CHANGED",
31118            Self::AtomDisplayHbmBrightnessChanged => {
31119                "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED"
31120            }
31121            Self::AtomPersistentUriPermissionsFlushed => {
31122                "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED"
31123            }
31124            Self::AtomEarlyBootCompOsArtifactsCheckReported => {
31125                "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED"
31126            }
31127            Self::AtomVbmetaDigestReported => "ATOM_VBMETA_DIGEST_REPORTED",
31128            Self::AtomApexInfoGathered => "ATOM_APEX_INFO_GATHERED",
31129            Self::AtomPvmInfoGathered => "ATOM_PVM_INFO_GATHERED",
31130            Self::AtomWearSettingsUiInteracted => "ATOM_WEAR_SETTINGS_UI_INTERACTED",
31131            Self::AtomTracingServiceReportEvent => "ATOM_TRACING_SERVICE_REPORT_EVENT",
31132            Self::AtomMediametricsAudiorecordstatusReported => {
31133                "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED"
31134            }
31135            Self::AtomLauncherLatency => "ATOM_LAUNCHER_LATENCY",
31136            Self::AtomDropboxEntryDropped => "ATOM_DROPBOX_ENTRY_DROPPED",
31137            Self::AtomWifiP2pConnectionReported => "ATOM_WIFI_P2P_CONNECTION_REPORTED",
31138            Self::AtomGameStateChanged => "ATOM_GAME_STATE_CHANGED",
31139            Self::AtomHotwordDetectorCreateRequested => {
31140                "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED"
31141            }
31142            Self::AtomHotwordDetectionServiceInitResultReported => {
31143                "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED"
31144            }
31145            Self::AtomHotwordDetectionServiceRestarted => {
31146                "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED"
31147            }
31148            Self::AtomHotwordDetectorKeyphraseTriggered => {
31149                "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED"
31150            }
31151            Self::AtomHotwordDetectorEvents => "ATOM_HOTWORD_DETECTOR_EVENTS",
31152            Self::AtomBootCompletedBroadcastCompletionLatencyReported => {
31153                "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED"
31154            }
31155            Self::AtomContactsIndexerUpdateStatsReported => {
31156                "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED"
31157            }
31158            Self::AtomAppBackgroundRestrictionsInfo => {
31159                "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO"
31160            }
31161            Self::AtomMmsSmsProviderGetThreadIdFailed => {
31162                "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED"
31163            }
31164            Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed => {
31165                "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED"
31166            }
31167            Self::AtomPermissionReminderNotificationInteracted => {
31168                "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED"
31169            }
31170            Self::AtomRecentPermissionDecisionsInteracted => {
31171                "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED"
31172            }
31173            Self::AtomGnssPsdsDownloadReported => "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED",
31174            Self::AtomLeAudioConnectionSessionReported => {
31175                "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED"
31176            }
31177            Self::AtomLeAudioBroadcastSessionReported => {
31178                "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED"
31179            }
31180            Self::AtomDreamUiEventReported => "ATOM_DREAM_UI_EVENT_REPORTED",
31181            Self::AtomTaskManagerEventReported => "ATOM_TASK_MANAGER_EVENT_REPORTED",
31182            Self::AtomCdmAssociationAction => "ATOM_CDM_ASSOCIATION_ACTION",
31183            Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported => {
31184                "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED"
31185            }
31186            Self::AtomMagnificationFollowTypingFocusActivatedSessionReported => {
31187                "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED"
31188            }
31189            Self::AtomAccessibilityTextReadingOptionsChanged => {
31190                "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED"
31191            }
31192            Self::AtomWifiSetupFailureCrashReported => {
31193                "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED"
31194            }
31195            Self::AtomUwbDeviceErrorReported => "ATOM_UWB_DEVICE_ERROR_REPORTED",
31196            Self::AtomIsolatedCompilationScheduled => {
31197                "ATOM_ISOLATED_COMPILATION_SCHEDULED"
31198            }
31199            Self::AtomIsolatedCompilationEnded => "ATOM_ISOLATED_COMPILATION_ENDED",
31200            Self::AtomOnsOpportunisticEsimProvisioningComplete => {
31201                "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE"
31202            }
31203            Self::AtomSystemServerPreWatchdogOccurred => {
31204                "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED"
31205            }
31206            Self::AtomTelephonyAnomalyDetected => "ATOM_TELEPHONY_ANOMALY_DETECTED",
31207            Self::AtomLetterboxPositionChanged => "ATOM_LETTERBOX_POSITION_CHANGED",
31208            Self::AtomRemoteKeyProvisioningAttempt => {
31209                "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT"
31210            }
31211            Self::AtomRemoteKeyProvisioningNetworkInfo => {
31212                "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO"
31213            }
31214            Self::AtomRemoteKeyProvisioningTiming => {
31215                "ATOM_REMOTE_KEY_PROVISIONING_TIMING"
31216            }
31217            Self::AtomMediaoutputOpInteractionReport => {
31218                "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT"
31219            }
31220            Self::AtomSyncExemptionOccurred => "ATOM_SYNC_EXEMPTION_OCCURRED",
31221            Self::AtomAutofillPresentationEventReported => {
31222                "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED"
31223            }
31224            Self::AtomDockStateChanged => "ATOM_DOCK_STATE_CHANGED",
31225            Self::AtomSafetySourceStateCollected => "ATOM_SAFETY_SOURCE_STATE_COLLECTED",
31226            Self::AtomSafetyCenterSystemEventReported => {
31227                "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED"
31228            }
31229            Self::AtomSafetyCenterInteractionReported => {
31230                "ATOM_SAFETY_CENTER_INTERACTION_REPORTED"
31231            }
31232            Self::AtomSettingsProviderSettingChanged => {
31233                "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED"
31234            }
31235            Self::AtomBroadcastDeliveryEventReported => {
31236                "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED"
31237            }
31238            Self::AtomServiceRequestEventReported => {
31239                "ATOM_SERVICE_REQUEST_EVENT_REPORTED"
31240            }
31241            Self::AtomProviderAcquisitionEventReported => {
31242                "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED"
31243            }
31244            Self::AtomBluetoothDeviceNameReported => {
31245                "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED"
31246            }
31247            Self::AtomCbConfigUpdated => "ATOM_CB_CONFIG_UPDATED",
31248            Self::AtomCbModuleErrorReported => "ATOM_CB_MODULE_ERROR_REPORTED",
31249            Self::AtomCbServiceFeatureChanged => "ATOM_CB_SERVICE_FEATURE_CHANGED",
31250            Self::AtomCbReceiverFeatureChanged => "ATOM_CB_RECEIVER_FEATURE_CHANGED",
31251            Self::AtomPrivacySignalNotificationInteraction => {
31252                "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION"
31253            }
31254            Self::AtomPrivacySignalIssueCardInteraction => {
31255                "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION"
31256            }
31257            Self::AtomPrivacySignalsJobFailure => "ATOM_PRIVACY_SIGNALS_JOB_FAILURE",
31258            Self::AtomVibrationReported => "ATOM_VIBRATION_REPORTED",
31259            Self::AtomUwbRangingStart => "ATOM_UWB_RANGING_START",
31260            Self::AtomAppCompactedV2 => "ATOM_APP_COMPACTED_V2",
31261            Self::AtomDisplayBrightnessChanged => "ATOM_DISPLAY_BRIGHTNESS_CHANGED",
31262            Self::AtomActivityActionBlocked => "ATOM_ACTIVITY_ACTION_BLOCKED",
31263            Self::AtomNetworkDnsServerSupportReported => {
31264                "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED"
31265            }
31266            Self::AtomVmBooted => "ATOM_VM_BOOTED",
31267            Self::AtomVmExited => "ATOM_VM_EXITED",
31268            Self::AtomAmbientBrightnessStatsReported => {
31269                "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED"
31270            }
31271            Self::AtomMediametricsSpatializercapabilitiesReported => {
31272                "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED"
31273            }
31274            Self::AtomMediametricsSpatializerdeviceenabledReported => {
31275                "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED"
31276            }
31277            Self::AtomMediametricsHeadtrackerdeviceenabledReported => {
31278                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED"
31279            }
31280            Self::AtomMediametricsHeadtrackerdevicesupportedReported => {
31281                "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED"
31282            }
31283            Self::AtomHearingAidInfoReported => "ATOM_HEARING_AID_INFO_REPORTED",
31284            Self::AtomDeviceWideJobConstraintChanged => {
31285                "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED"
31286            }
31287            Self::AtomAmbientModeChanged => "ATOM_AMBIENT_MODE_CHANGED",
31288            Self::AtomAnrLatencyReported => "ATOM_ANR_LATENCY_REPORTED",
31289            Self::AtomResourceApiInfo => "ATOM_RESOURCE_API_INFO",
31290            Self::AtomSystemDefaultNetworkChanged => {
31291                "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED"
31292            }
31293            Self::AtomIwlanSetupDataCallResultReported => {
31294                "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED"
31295            }
31296            Self::AtomIwlanPdnDisconnectedReasonReported => {
31297                "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED"
31298            }
31299            Self::AtomAirplaneModeSessionReported => {
31300                "ATOM_AIRPLANE_MODE_SESSION_REPORTED"
31301            }
31302            Self::AtomVmCpuStatusReported => "ATOM_VM_CPU_STATUS_REPORTED",
31303            Self::AtomVmMemStatusReported => "ATOM_VM_MEM_STATUS_REPORTED",
31304            Self::AtomPackageInstallationSessionReported => {
31305                "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED"
31306            }
31307            Self::AtomDefaultNetworkRematchInfo => "ATOM_DEFAULT_NETWORK_REMATCH_INFO",
31308            Self::AtomNetworkSelectionPerformance => "ATOM_NETWORK_SELECTION_PERFORMANCE",
31309            Self::AtomNetworkNsdReported => "ATOM_NETWORK_NSD_REPORTED",
31310            Self::AtomBluetoothDisconnectionReasonReported => {
31311                "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED"
31312            }
31313            Self::AtomBluetoothLocalVersionsReported => {
31314                "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED"
31315            }
31316            Self::AtomBluetoothRemoteSupportedFeaturesReported => {
31317                "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED"
31318            }
31319            Self::AtomBluetoothLocalSupportedFeaturesReported => {
31320                "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED"
31321            }
31322            Self::AtomBluetoothGattAppInfo => "ATOM_BLUETOOTH_GATT_APP_INFO",
31323            Self::AtomBrightnessConfigurationUpdated => {
31324                "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED"
31325            }
31326            Self::AtomWearMediaOutputSwitcherLaunched => {
31327                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED"
31328            }
31329            Self::AtomWearMediaOutputSwitcherFinished => {
31330                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED"
31331            }
31332            Self::AtomWearMediaOutputSwitcherConnectionReported => {
31333                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED"
31334            }
31335            Self::AtomWearMediaOutputSwitcherDeviceScanTriggered => {
31336                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED"
31337            }
31338            Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency => {
31339                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY"
31340            }
31341            Self::AtomWearMediaOutputSwitcherConnectDeviceLatency => {
31342                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY"
31343            }
31344            Self::AtomPackageManagerSnapshotReported => {
31345                "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED"
31346            }
31347            Self::AtomPackageManagerAppsFilterCacheBuildReported => {
31348                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED"
31349            }
31350            Self::AtomPackageManagerAppsFilterCacheUpdateReported => {
31351                "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED"
31352            }
31353            Self::AtomLauncherImpressionEvent => "ATOM_LAUNCHER_IMPRESSION_EVENT",
31354            Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency => {
31355                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY"
31356            }
31357            Self::AtomWsWatchFaceEdited => "ATOM_WS_WATCH_FACE_EDITED",
31358            Self::AtomWsWatchFaceFavoriteActionReported => {
31359                "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED"
31360            }
31361            Self::AtomWsWatchFaceSetActionReported => {
31362                "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED"
31363            }
31364            Self::AtomPackageUninstallationReported => {
31365                "ATOM_PACKAGE_UNINSTALLATION_REPORTED"
31366            }
31367            Self::AtomGameModeChanged => "ATOM_GAME_MODE_CHANGED",
31368            Self::AtomGameModeConfigurationChanged => {
31369                "ATOM_GAME_MODE_CONFIGURATION_CHANGED"
31370            }
31371            Self::AtomBedtimeModeStateChanged => "ATOM_BEDTIME_MODE_STATE_CHANGED",
31372            Self::AtomNetworkSliceSessionEnded => "ATOM_NETWORK_SLICE_SESSION_ENDED",
31373            Self::AtomNetworkSliceDailyDataUsageReported => {
31374                "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED"
31375            }
31376            Self::AtomNfcTagTypeOccurred => "ATOM_NFC_TAG_TYPE_OCCURRED",
31377            Self::AtomNfcAidConflictOccurred => "ATOM_NFC_AID_CONFLICT_OCCURRED",
31378            Self::AtomNfcReaderConflictOccurred => "ATOM_NFC_READER_CONFLICT_OCCURRED",
31379            Self::AtomWsTileListChanged => "ATOM_WS_TILE_LIST_CHANGED",
31380            Self::AtomGetTypeAccessedWithoutPermission => {
31381                "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION"
31382            }
31383            Self::AtomMobileBundledAppInfoGathered => {
31384                "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED"
31385            }
31386            Self::AtomWsWatchFaceComplicationSetChanged => {
31387                "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED"
31388            }
31389            Self::AtomMediaDrmCreated => "ATOM_MEDIA_DRM_CREATED",
31390            Self::AtomMediaDrmErrored => "ATOM_MEDIA_DRM_ERRORED",
31391            Self::AtomMediaDrmSessionOpened => "ATOM_MEDIA_DRM_SESSION_OPENED",
31392            Self::AtomMediaDrmSessionClosed => "ATOM_MEDIA_DRM_SESSION_CLOSED",
31393            Self::AtomUserSelectedResolution => "ATOM_USER_SELECTED_RESOLUTION",
31394            Self::AtomUnsafeIntentEventReported => "ATOM_UNSAFE_INTENT_EVENT_REPORTED",
31395            Self::AtomPerformanceHintSessionReported => {
31396                "ATOM_PERFORMANCE_HINT_SESSION_REPORTED"
31397            }
31398            Self::AtomMediametricsMidiDeviceCloseReported => {
31399                "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED"
31400            }
31401            Self::AtomBiometricTouchReported => "ATOM_BIOMETRIC_TOUCH_REPORTED",
31402            Self::AtomHotwordAudioEgressEventReported => {
31403                "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED"
31404            }
31405            Self::AtomLocationEnabledStateChanged => {
31406                "ATOM_LOCATION_ENABLED_STATE_CHANGED"
31407            }
31408            Self::AtomImeRequestFinished => "ATOM_IME_REQUEST_FINISHED",
31409            Self::AtomUsbComplianceWarningsReported => {
31410                "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED"
31411            }
31412            Self::AtomAppSupportedLocalesChanged => "ATOM_APP_SUPPORTED_LOCALES_CHANGED",
31413            Self::AtomMediaProviderVolumeRecoveryReported => {
31414                "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED"
31415            }
31416            Self::AtomBiometricPropertiesCollected => {
31417                "ATOM_BIOMETRIC_PROPERTIES_COLLECTED"
31418            }
31419            Self::AtomKernelWakeupAttributed => "ATOM_KERNEL_WAKEUP_ATTRIBUTED",
31420            Self::AtomScreenStateChangedV2 => "ATOM_SCREEN_STATE_CHANGED_V2",
31421            Self::AtomWsBackupActionReported => "ATOM_WS_BACKUP_ACTION_REPORTED",
31422            Self::AtomWsRestoreActionReported => "ATOM_WS_RESTORE_ACTION_REPORTED",
31423            Self::AtomDeviceLogAccessEventReported => {
31424                "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED"
31425            }
31426            Self::AtomMediaSessionUpdated => "ATOM_MEDIA_SESSION_UPDATED",
31427            Self::AtomWearOobeStateChanged => "ATOM_WEAR_OOBE_STATE_CHANGED",
31428            Self::AtomWsNotificationUpdated => "ATOM_WS_NOTIFICATION_UPDATED",
31429            Self::AtomNetworkValidationFailureStatsDailyReported => {
31430                "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED"
31431            }
31432            Self::AtomWsComplicationTapped => "ATOM_WS_COMPLICATION_TAPPED",
31433            Self::AtomWsNotificationBlocking => "ATOM_WS_NOTIFICATION_BLOCKING",
31434            Self::AtomWsNotificationBridgemodeUpdated => {
31435                "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED"
31436            }
31437            Self::AtomWsNotificationDismissalActioned => {
31438                "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED"
31439            }
31440            Self::AtomWsNotificationActioned => "ATOM_WS_NOTIFICATION_ACTIONED",
31441            Self::AtomWsNotificationLatency => "ATOM_WS_NOTIFICATION_LATENCY",
31442            Self::AtomWifiBytesTransfer => "ATOM_WIFI_BYTES_TRANSFER",
31443            Self::AtomWifiBytesTransferByFgBg => "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG",
31444            Self::AtomMobileBytesTransfer => "ATOM_MOBILE_BYTES_TRANSFER",
31445            Self::AtomMobileBytesTransferByFgBg => "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG",
31446            Self::AtomBluetoothBytesTransfer => "ATOM_BLUETOOTH_BYTES_TRANSFER",
31447            Self::AtomKernelWakelock => "ATOM_KERNEL_WAKELOCK",
31448            Self::AtomSubsystemSleepState => "ATOM_SUBSYSTEM_SLEEP_STATE",
31449            Self::AtomCpuTimePerUid => "ATOM_CPU_TIME_PER_UID",
31450            Self::AtomCpuTimePerUidFreq => "ATOM_CPU_TIME_PER_UID_FREQ",
31451            Self::AtomWifiActivityInfo => "ATOM_WIFI_ACTIVITY_INFO",
31452            Self::AtomModemActivityInfo => "ATOM_MODEM_ACTIVITY_INFO",
31453            Self::AtomBluetoothActivityInfo => "ATOM_BLUETOOTH_ACTIVITY_INFO",
31454            Self::AtomProcessMemoryState => "ATOM_PROCESS_MEMORY_STATE",
31455            Self::AtomSystemElapsedRealtime => "ATOM_SYSTEM_ELAPSED_REALTIME",
31456            Self::AtomSystemUptime => "ATOM_SYSTEM_UPTIME",
31457            Self::AtomCpuActiveTime => "ATOM_CPU_ACTIVE_TIME",
31458            Self::AtomCpuClusterTime => "ATOM_CPU_CLUSTER_TIME",
31459            Self::AtomDiskSpace => "ATOM_DISK_SPACE",
31460            Self::AtomRemainingBatteryCapacity => "ATOM_REMAINING_BATTERY_CAPACITY",
31461            Self::AtomFullBatteryCapacity => "ATOM_FULL_BATTERY_CAPACITY",
31462            Self::AtomTemperature => "ATOM_TEMPERATURE",
31463            Self::AtomBinderCalls => "ATOM_BINDER_CALLS",
31464            Self::AtomBinderCallsExceptions => "ATOM_BINDER_CALLS_EXCEPTIONS",
31465            Self::AtomLooperStats => "ATOM_LOOPER_STATS",
31466            Self::AtomDiskStats => "ATOM_DISK_STATS",
31467            Self::AtomDirectoryUsage => "ATOM_DIRECTORY_USAGE",
31468            Self::AtomAppSize => "ATOM_APP_SIZE",
31469            Self::AtomCategorySize => "ATOM_CATEGORY_SIZE",
31470            Self::AtomProcStats => "ATOM_PROC_STATS",
31471            Self::AtomBatteryVoltage => "ATOM_BATTERY_VOLTAGE",
31472            Self::AtomNumFingerprintsEnrolled => "ATOM_NUM_FINGERPRINTS_ENROLLED",
31473            Self::AtomDiskIo => "ATOM_DISK_IO",
31474            Self::AtomPowerProfile => "ATOM_POWER_PROFILE",
31475            Self::AtomProcStatsPkgProc => "ATOM_PROC_STATS_PKG_PROC",
31476            Self::AtomProcessCpuTime => "ATOM_PROCESS_CPU_TIME",
31477            Self::AtomCpuTimePerThreadFreq => "ATOM_CPU_TIME_PER_THREAD_FREQ",
31478            Self::AtomOnDevicePowerMeasurement => "ATOM_ON_DEVICE_POWER_MEASUREMENT",
31479            Self::AtomDeviceCalculatedPowerUse => "ATOM_DEVICE_CALCULATED_POWER_USE",
31480            Self::AtomProcessMemoryHighWaterMark => "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK",
31481            Self::AtomBatteryLevel => "ATOM_BATTERY_LEVEL",
31482            Self::AtomBuildInformation => "ATOM_BUILD_INFORMATION",
31483            Self::AtomBatteryCycleCount => "ATOM_BATTERY_CYCLE_COUNT",
31484            Self::AtomDebugElapsedClock => "ATOM_DEBUG_ELAPSED_CLOCK",
31485            Self::AtomDebugFailingElapsedClock => "ATOM_DEBUG_FAILING_ELAPSED_CLOCK",
31486            Self::AtomNumFacesEnrolled => "ATOM_NUM_FACES_ENROLLED",
31487            Self::AtomRoleHolder => "ATOM_ROLE_HOLDER",
31488            Self::AtomDangerousPermissionState => "ATOM_DANGEROUS_PERMISSION_STATE",
31489            Self::AtomTrainInfo => "ATOM_TRAIN_INFO",
31490            Self::AtomTimeZoneDataInfo => "ATOM_TIME_ZONE_DATA_INFO",
31491            Self::AtomExternalStorageInfo => "ATOM_EXTERNAL_STORAGE_INFO",
31492            Self::AtomGpuStatsGlobalInfo => "ATOM_GPU_STATS_GLOBAL_INFO",
31493            Self::AtomGpuStatsAppInfo => "ATOM_GPU_STATS_APP_INFO",
31494            Self::AtomSystemIonHeapSize => "ATOM_SYSTEM_ION_HEAP_SIZE",
31495            Self::AtomAppsOnExternalStorageInfo => "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO",
31496            Self::AtomFaceSettings => "ATOM_FACE_SETTINGS",
31497            Self::AtomCoolingDevice => "ATOM_COOLING_DEVICE",
31498            Self::AtomAppOps => "ATOM_APP_OPS",
31499            Self::AtomProcessSystemIonHeapSize => "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE",
31500            Self::AtomSurfaceflingerStatsGlobalInfo => {
31501                "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO"
31502            }
31503            Self::AtomSurfaceflingerStatsLayerInfo => {
31504                "ATOM_SURFACEFLINGER_STATS_LAYER_INFO"
31505            }
31506            Self::AtomProcessMemorySnapshot => "ATOM_PROCESS_MEMORY_SNAPSHOT",
31507            Self::AtomVmsClientStats => "ATOM_VMS_CLIENT_STATS",
31508            Self::AtomNotificationRemoteViews => "ATOM_NOTIFICATION_REMOTE_VIEWS",
31509            Self::AtomDangerousPermissionStateSampled => {
31510                "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED"
31511            }
31512            Self::AtomGraphicsStats => "ATOM_GRAPHICS_STATS",
31513            Self::AtomRuntimeAppOpAccess => "ATOM_RUNTIME_APP_OP_ACCESS",
31514            Self::AtomIonHeapSize => "ATOM_ION_HEAP_SIZE",
31515            Self::AtomPackageNotificationPreferences => {
31516                "ATOM_PACKAGE_NOTIFICATION_PREFERENCES"
31517            }
31518            Self::AtomPackageNotificationChannelPreferences => {
31519                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES"
31520            }
31521            Self::AtomPackageNotificationChannelGroupPreferences => {
31522                "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES"
31523            }
31524            Self::AtomGnssStats => "ATOM_GNSS_STATS",
31525            Self::AtomAttributedAppOps => "ATOM_ATTRIBUTED_APP_OPS",
31526            Self::AtomVoiceCallSession => "ATOM_VOICE_CALL_SESSION",
31527            Self::AtomVoiceCallRatUsage => "ATOM_VOICE_CALL_RAT_USAGE",
31528            Self::AtomSimSlotState => "ATOM_SIM_SLOT_STATE",
31529            Self::AtomSupportedRadioAccessFamily => "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY",
31530            Self::AtomSettingSnapshot => "ATOM_SETTING_SNAPSHOT",
31531            Self::AtomBlobInfo => "ATOM_BLOB_INFO",
31532            Self::AtomDataUsageBytesTransfer => "ATOM_DATA_USAGE_BYTES_TRANSFER",
31533            Self::AtomBytesTransferByTagAndMetered => {
31534                "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED"
31535            }
31536            Self::AtomDndModeRule => "ATOM_DND_MODE_RULE",
31537            Self::AtomGeneralExternalStorageAccessStats => {
31538                "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS"
31539            }
31540            Self::AtomIncomingSms => "ATOM_INCOMING_SMS",
31541            Self::AtomOutgoingSms => "ATOM_OUTGOING_SMS",
31542            Self::AtomCarrierIdTableVersion => "ATOM_CARRIER_ID_TABLE_VERSION",
31543            Self::AtomDataCallSession => "ATOM_DATA_CALL_SESSION",
31544            Self::AtomCellularServiceState => "ATOM_CELLULAR_SERVICE_STATE",
31545            Self::AtomCellularDataServiceSwitch => "ATOM_CELLULAR_DATA_SERVICE_SWITCH",
31546            Self::AtomSystemMemory => "ATOM_SYSTEM_MEMORY",
31547            Self::AtomImsRegistrationTermination => "ATOM_IMS_REGISTRATION_TERMINATION",
31548            Self::AtomImsRegistrationStats => "ATOM_IMS_REGISTRATION_STATS",
31549            Self::AtomCpuTimePerClusterFreq => "ATOM_CPU_TIME_PER_CLUSTER_FREQ",
31550            Self::AtomCpuCyclesPerUidCluster => "ATOM_CPU_CYCLES_PER_UID_CLUSTER",
31551            Self::AtomDeviceRotatedData => "ATOM_DEVICE_ROTATED_DATA",
31552            Self::AtomCpuCyclesPerThreadGroupCluster => {
31553                "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER"
31554            }
31555            Self::AtomMediaDrmActivityInfo => "ATOM_MEDIA_DRM_ACTIVITY_INFO",
31556            Self::AtomOemManagedBytesTransfer => "ATOM_OEM_MANAGED_BYTES_TRANSFER",
31557            Self::AtomGnssPowerStats => "ATOM_GNSS_POWER_STATS",
31558            Self::AtomTimeZoneDetectorState => "ATOM_TIME_ZONE_DETECTOR_STATE",
31559            Self::AtomKeystore2StorageStats => "ATOM_KEYSTORE2_STORAGE_STATS",
31560            Self::AtomRkpPoolStats => "ATOM_RKP_POOL_STATS",
31561            Self::AtomProcessDmabufMemory => "ATOM_PROCESS_DMABUF_MEMORY",
31562            Self::AtomPendingAlarmInfo => "ATOM_PENDING_ALARM_INFO",
31563            Self::AtomUserLevelHibernatedApps => "ATOM_USER_LEVEL_HIBERNATED_APPS",
31564            Self::AtomLauncherLayoutSnapshot => "ATOM_LAUNCHER_LAYOUT_SNAPSHOT",
31565            Self::AtomGlobalHibernatedApps => "ATOM_GLOBAL_HIBERNATED_APPS",
31566            Self::AtomInputEventLatencySketch => "ATOM_INPUT_EVENT_LATENCY_SKETCH",
31567            Self::AtomBatteryUsageStatsBeforeReset => {
31568                "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET"
31569            }
31570            Self::AtomBatteryUsageStatsSinceReset => {
31571                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET"
31572            }
31573            Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel => {
31574                "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL"
31575            }
31576            Self::AtomInstalledIncrementalPackage => "ATOM_INSTALLED_INCREMENTAL_PACKAGE",
31577            Self::AtomTelephonyNetworkRequests => "ATOM_TELEPHONY_NETWORK_REQUESTS",
31578            Self::AtomAppSearchStorageInfo => "ATOM_APP_SEARCH_STORAGE_INFO",
31579            Self::AtomVmstat => "ATOM_VMSTAT",
31580            Self::AtomKeystore2KeyCreationWithGeneralInfo => {
31581                "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO"
31582            }
31583            Self::AtomKeystore2KeyCreationWithAuthInfo => {
31584                "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO"
31585            }
31586            Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo => {
31587                "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO"
31588            }
31589            Self::AtomKeystore2AtomWithOverflow => "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW",
31590            Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo => {
31591                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO"
31592            }
31593            Self::AtomKeystore2KeyOperationWithGeneralInfo => {
31594                "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO"
31595            }
31596            Self::AtomRkpErrorStats => "ATOM_RKP_ERROR_STATS",
31597            Self::AtomKeystore2CrashStats => "ATOM_KEYSTORE2_CRASH_STATS",
31598            Self::AtomVendorApexInfo => "ATOM_VENDOR_APEX_INFO",
31599            Self::AtomAccessibilityShortcutStats => "ATOM_ACCESSIBILITY_SHORTCUT_STATS",
31600            Self::AtomAccessibilityFloatingMenuStats => {
31601                "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS"
31602            }
31603            Self::AtomDataUsageBytesTransferV2 => "ATOM_DATA_USAGE_BYTES_TRANSFER_V2",
31604            Self::AtomMediaCapabilities => "ATOM_MEDIA_CAPABILITIES",
31605            Self::AtomCarWatchdogSystemIoUsageSummary => {
31606                "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY"
31607            }
31608            Self::AtomCarWatchdogUidIoUsageSummary => {
31609                "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY"
31610            }
31611            Self::AtomImsRegistrationFeatureTagStats => {
31612                "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS"
31613            }
31614            Self::AtomRcsClientProvisioningStats => "ATOM_RCS_CLIENT_PROVISIONING_STATS",
31615            Self::AtomRcsAcsProvisioningStats => "ATOM_RCS_ACS_PROVISIONING_STATS",
31616            Self::AtomSipDelegateStats => "ATOM_SIP_DELEGATE_STATS",
31617            Self::AtomSipTransportFeatureTagStats => {
31618                "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS"
31619            }
31620            Self::AtomSipMessageResponse => "ATOM_SIP_MESSAGE_RESPONSE",
31621            Self::AtomSipTransportSession => "ATOM_SIP_TRANSPORT_SESSION",
31622            Self::AtomImsDedicatedBearerListenerEvent => {
31623                "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT"
31624            }
31625            Self::AtomImsDedicatedBearerEvent => "ATOM_IMS_DEDICATED_BEARER_EVENT",
31626            Self::AtomImsRegistrationServiceDescStats => {
31627                "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS"
31628            }
31629            Self::AtomUceEventStats => "ATOM_UCE_EVENT_STATS",
31630            Self::AtomPresenceNotifyEvent => "ATOM_PRESENCE_NOTIFY_EVENT",
31631            Self::AtomGbaEvent => "ATOM_GBA_EVENT",
31632            Self::AtomPerSimStatus => "ATOM_PER_SIM_STATUS",
31633            Self::AtomGpuWorkPerUid => "ATOM_GPU_WORK_PER_UID",
31634            Self::AtomPersistentUriPermissionsAmountPerPackage => {
31635                "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE"
31636            }
31637            Self::AtomSignedPartitionInfo => "ATOM_SIGNED_PARTITION_INFO",
31638            Self::AtomPinnedFileSizesPerPackage => "ATOM_PINNED_FILE_SIZES_PER_PACKAGE",
31639            Self::AtomPendingIntentsPerPackage => "ATOM_PENDING_INTENTS_PER_PACKAGE",
31640            Self::AtomUserInfo => "ATOM_USER_INFO",
31641            Self::AtomTelephonyNetworkRequestsV2 => "ATOM_TELEPHONY_NETWORK_REQUESTS_V2",
31642            Self::AtomDeviceTelephonyProperties => "ATOM_DEVICE_TELEPHONY_PROPERTIES",
31643            Self::AtomRemoteKeyProvisioningErrorCounts => {
31644                "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS"
31645            }
31646            Self::AtomSafetyState => "ATOM_SAFETY_STATE",
31647            Self::AtomIncomingMms => "ATOM_INCOMING_MMS",
31648            Self::AtomOutgoingMms => "ATOM_OUTGOING_MMS",
31649            Self::AtomMultiUserInfo => "ATOM_MULTI_USER_INFO",
31650            Self::AtomNetworkBpfMapInfo => "ATOM_NETWORK_BPF_MAP_INFO",
31651            Self::AtomOutgoingShortCodeSms => "ATOM_OUTGOING_SHORT_CODE_SMS",
31652            Self::AtomConnectivityStateSample => "ATOM_CONNECTIVITY_STATE_SAMPLE",
31653            Self::AtomNetworkSelectionRematchReasonsInfo => {
31654                "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO"
31655            }
31656            Self::AtomGameModeInfo => "ATOM_GAME_MODE_INFO",
31657            Self::AtomGameModeConfiguration => "ATOM_GAME_MODE_CONFIGURATION",
31658            Self::AtomGameModeListener => "ATOM_GAME_MODE_LISTENER",
31659            Self::AtomNetworkSliceRequestCount => "ATOM_NETWORK_SLICE_REQUEST_COUNT",
31660            Self::AtomWsTileSnapshot => "ATOM_WS_TILE_SNAPSHOT",
31661            Self::AtomWsActiveWatchFaceComplicationSetSnapshot => {
31662                "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT"
31663            }
31664            Self::AtomProcessState => "ATOM_PROCESS_STATE",
31665            Self::AtomProcessAssociation => "ATOM_PROCESS_ASSOCIATION",
31666            Self::AtomAdpfSystemComponentInfo => "ATOM_ADPF_SYSTEM_COMPONENT_INFO",
31667            Self::AtomNotificationMemoryUse => "ATOM_NOTIFICATION_MEMORY_USE",
31668            Self::AtomHdrCapabilities => "ATOM_HDR_CAPABILITIES",
31669            Self::AtomWsFavouriteWatchFaceListSnapshot => {
31670                "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT"
31671            }
31672            Self::AtomWifiAwareNdpReported => "ATOM_WIFI_AWARE_NDP_REPORTED",
31673            Self::AtomWifiAwareAttachReported => "ATOM_WIFI_AWARE_ATTACH_REPORTED",
31674            Self::AtomWifiSelfRecoveryTriggered => "ATOM_WIFI_SELF_RECOVERY_TRIGGERED",
31675            Self::AtomSoftApStarted => "ATOM_SOFT_AP_STARTED",
31676            Self::AtomSoftApStopped => "ATOM_SOFT_AP_STOPPED",
31677            Self::AtomWifiLockReleased => "ATOM_WIFI_LOCK_RELEASED",
31678            Self::AtomWifiLockDeactivated => "ATOM_WIFI_LOCK_DEACTIVATED",
31679            Self::AtomWifiConfigSaved => "ATOM_WIFI_CONFIG_SAVED",
31680            Self::AtomWifiAwareResourceUsingChanged => {
31681                "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED"
31682            }
31683            Self::AtomWifiAwareHalApiCalled => "ATOM_WIFI_AWARE_HAL_API_CALLED",
31684            Self::AtomWifiLocalOnlyRequestReceived => {
31685                "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED"
31686            }
31687            Self::AtomWifiLocalOnlyRequestScanTriggered => {
31688                "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED"
31689            }
31690            Self::AtomWifiThreadTaskExecuted => "ATOM_WIFI_THREAD_TASK_EXECUTED",
31691            Self::AtomWifiStateChanged => "ATOM_WIFI_STATE_CHANGED",
31692            Self::AtomPnoScanStarted => "ATOM_PNO_SCAN_STARTED",
31693            Self::AtomPnoScanStopped => "ATOM_PNO_SCAN_STOPPED",
31694            Self::AtomWifiIsUnusableReported => "ATOM_WIFI_IS_UNUSABLE_REPORTED",
31695            Self::AtomWifiApCapabilitiesReported => "ATOM_WIFI_AP_CAPABILITIES_REPORTED",
31696            Self::AtomSoftApStateChanged => "ATOM_SOFT_AP_STATE_CHANGED",
31697            Self::AtomScorerPredictionResultReported => {
31698                "ATOM_SCORER_PREDICTION_RESULT_REPORTED"
31699            }
31700            Self::AtomWifiAwareCapabilities => "ATOM_WIFI_AWARE_CAPABILITIES",
31701            Self::AtomWifiModuleInfo => "ATOM_WIFI_MODULE_INFO",
31702            Self::AtomWifiSettingInfo => "ATOM_WIFI_SETTING_INFO",
31703            Self::AtomWifiComplexSettingInfo => "ATOM_WIFI_COMPLEX_SETTING_INFO",
31704            Self::AtomWifiConfiguredNetworkInfo => "ATOM_WIFI_CONFIGURED_NETWORK_INFO",
31705            Self::AtomWearPowerMenuOpened => "ATOM_WEAR_POWER_MENU_OPENED",
31706            Self::AtomWearAssistantOpened => "ATOM_WEAR_ASSISTANT_OPENED",
31707            Self::AtomFirstOverlayStateChanged => "ATOM_FIRST_OVERLAY_STATE_CHANGED",
31708            Self::AtomWsWearTimeSession => "ATOM_WS_WEAR_TIME_SESSION",
31709            Self::AtomWsIncomingCallActionReported => {
31710                "ATOM_WS_INCOMING_CALL_ACTION_REPORTED"
31711            }
31712            Self::AtomWsCallDisconnectionReported => {
31713                "ATOM_WS_CALL_DISCONNECTION_REPORTED"
31714            }
31715            Self::AtomWsCallDurationReported => "ATOM_WS_CALL_DURATION_REPORTED",
31716            Self::AtomWsCallUserExperienceLatencyReported => {
31717                "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED"
31718            }
31719            Self::AtomWsCallInteractionReported => "ATOM_WS_CALL_INTERACTION_REPORTED",
31720            Self::AtomWsOnBodyStateChanged => "ATOM_WS_ON_BODY_STATE_CHANGED",
31721            Self::AtomWsWatchFaceRestrictedComplicationsImpacted => {
31722                "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED"
31723            }
31724            Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved => {
31725                "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED"
31726            }
31727            Self::AtomWsComplicationsImpactedNotificationEventReported => {
31728                "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED"
31729            }
31730            Self::AtomWsRemoteEventUsageReported => "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED",
31731            Self::AtomWsNotificationManagedDismissalSync => {
31732                "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC"
31733            }
31734            Self::AtomWsBugreportEventReported => "ATOM_WS_BUGREPORT_EVENT_REPORTED",
31735            Self::AtomWsStandaloneModeSnapshot => "ATOM_WS_STANDALONE_MODE_SNAPSHOT",
31736            Self::AtomWsFavoriteWatchFaceSnapshot => {
31737                "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT"
31738            }
31739            Self::AtomWsPhotosWatchFaceFeatureSnapshot => {
31740                "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT"
31741            }
31742            Self::AtomWsWatchFaceCustomizationSnapshot => {
31743                "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT"
31744            }
31745            Self::AtomWearAdaptiveSuspendStatsReported => {
31746                "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED"
31747            }
31748            Self::AtomWearPowerAnomalyServiceOperationalStatsReported => {
31749                "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED"
31750            }
31751            Self::AtomWearPowerAnomalyServiceEventStatsReported => {
31752                "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED"
31753            }
31754            Self::AtomWearTimeSyncRequested => "ATOM_WEAR_TIME_SYNC_REQUESTED",
31755            Self::AtomWearTimeUpdateStarted => "ATOM_WEAR_TIME_UPDATE_STARTED",
31756            Self::AtomWearTimeSyncAttemptCompleted => {
31757                "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED"
31758            }
31759            Self::AtomWearTimeChanged => "ATOM_WEAR_TIME_CHANGED",
31760            Self::AtomWearSetupWizardDeviceStatusReported => {
31761                "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED"
31762            }
31763            Self::AtomWearSetupWizardPairingCompleted => {
31764                "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED"
31765            }
31766            Self::AtomWearSetupWizardConnectionEstablished => {
31767                "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED"
31768            }
31769            Self::AtomWearSetupWizardCheckinCompleted => {
31770                "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED"
31771            }
31772            Self::AtomWearSetupWizardCompanionTimeReported => {
31773                "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED"
31774            }
31775            Self::AtomWearSetupWizardStatusReported => {
31776                "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED"
31777            }
31778            Self::AtomWearSetupWizardHeartbeatReported => {
31779                "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED"
31780            }
31781            Self::AtomWearSetupWizardFrpTriggered => {
31782                "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED"
31783            }
31784            Self::AtomWearSetupWizardSystemUpdateTriggered => {
31785                "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED"
31786            }
31787            Self::AtomWearSetupWizardPhoneSwitchTriggered => {
31788                "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED"
31789            }
31790            Self::AtomRendererInitialized => "ATOM_RENDERER_INITIALIZED",
31791            Self::AtomSchemaVersionReceived => "ATOM_SCHEMA_VERSION_RECEIVED",
31792            Self::AtomLayoutInspected => "ATOM_LAYOUT_INSPECTED",
31793            Self::AtomLayoutExpressionInspected => "ATOM_LAYOUT_EXPRESSION_INSPECTED",
31794            Self::AtomLayoutAnimationsInspected => "ATOM_LAYOUT_ANIMATIONS_INSPECTED",
31795            Self::AtomMaterialComponentsInspected => "ATOM_MATERIAL_COMPONENTS_INSPECTED",
31796            Self::AtomTileRequested => "ATOM_TILE_REQUESTED",
31797            Self::AtomStateResponseReceived => "ATOM_STATE_RESPONSE_RECEIVED",
31798            Self::AtomTileResponseReceived => "ATOM_TILE_RESPONSE_RECEIVED",
31799            Self::AtomInflationFinished => "ATOM_INFLATION_FINISHED",
31800            Self::AtomInflationFailed => "ATOM_INFLATION_FAILED",
31801            Self::AtomIgnoredInflationFailuresReported => {
31802                "ATOM_IGNORED_INFLATION_FAILURES_REPORTED"
31803            }
31804            Self::AtomDrawableRendered => "ATOM_DRAWABLE_RENDERED",
31805            Self::AtomWearModeStateChanged => "ATOM_WEAR_MODE_STATE_CHANGED",
31806            Self::AtomMediaActionReported => "ATOM_MEDIA_ACTION_REPORTED",
31807            Self::AtomMediaControlsLaunched => "ATOM_MEDIA_CONTROLS_LAUNCHED",
31808            Self::AtomMediaSessionStateChanged => "ATOM_MEDIA_SESSION_STATE_CHANGED",
31809            Self::AtomMediaControlApiUsageReported => {
31810                "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED"
31811            }
31812            Self::AtomMediaSubscriptionChanged => "ATOM_MEDIA_SUBSCRIPTION_CHANGED",
31813            Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency => {
31814                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY"
31815            }
31816            Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable => {
31817                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE"
31818            }
31819            Self::AtomWearMediaOutputSwitcherFastpairApiTimeout => {
31820                "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT"
31821            }
31822            Self::AtomMediatorUpdated => "ATOM_MEDIATOR_UPDATED",
31823            Self::AtomSysproxyBluetoothBytesTransfer => {
31824                "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER"
31825            }
31826            Self::AtomSysproxyConnectionUpdated => "ATOM_SYSPROXY_CONNECTION_UPDATED",
31827            Self::AtomWearCompanionConnectionState => {
31828                "ATOM_WEAR_COMPANION_CONNECTION_STATE"
31829            }
31830            Self::AtomSysproxyServiceStateUpdated => {
31831                "ATOM_SYSPROXY_SERVICE_STATE_UPDATED"
31832            }
31833            Self::AtomUwbActivityInfo => "ATOM_UWB_ACTIVITY_INFO",
31834            Self::AtomTestUprobestatsAtomReported => {
31835                "ATOM_TEST_UPROBESTATS_ATOM_REPORTED"
31836            }
31837            Self::AtomTvLowPowerStandbyPolicy => "ATOM_TV_LOW_POWER_STANDBY_POLICY",
31838            Self::AtomExternalTvInputEvent => "ATOM_EXTERNAL_TV_INPUT_EVENT",
31839            Self::AtomBootIntegrityInfoReported => "ATOM_BOOT_INTEGRITY_INFO_REPORTED",
31840            Self::AtomThreadnetworkTelemetryDataReported => {
31841                "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED"
31842            }
31843            Self::AtomThreadnetworkTopoEntryRepeated => {
31844                "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED"
31845            }
31846            Self::AtomThreadnetworkDeviceInfoReported => {
31847                "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED"
31848            }
31849            Self::AtomCellularRadioPowerStateChanged => {
31850                "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED"
31851            }
31852            Self::AtomEmergencyNumbersInfo => "ATOM_EMERGENCY_NUMBERS_INFO",
31853            Self::AtomDataNetworkValidation => "ATOM_DATA_NETWORK_VALIDATION",
31854            Self::AtomDataRatStateChanged => "ATOM_DATA_RAT_STATE_CHANGED",
31855            Self::AtomConnectedChannelChanged => "ATOM_CONNECTED_CHANNEL_CHANGED",
31856            Self::AtomCellularIdentifierDisclosed => "ATOM_CELLULAR_IDENTIFIER_DISCLOSED",
31857            Self::AtomSatelliteController => "ATOM_SATELLITE_CONTROLLER",
31858            Self::AtomSatelliteSession => "ATOM_SATELLITE_SESSION",
31859            Self::AtomSatelliteIncomingDatagram => "ATOM_SATELLITE_INCOMING_DATAGRAM",
31860            Self::AtomSatelliteOutgoingDatagram => "ATOM_SATELLITE_OUTGOING_DATAGRAM",
31861            Self::AtomSatelliteProvision => "ATOM_SATELLITE_PROVISION",
31862            Self::AtomSatelliteSosMessageRecommender => {
31863                "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER"
31864            }
31865            Self::AtomCarrierRoamingSatelliteSession => {
31866                "ATOM_CARRIER_ROAMING_SATELLITE_SESSION"
31867            }
31868            Self::AtomCarrierRoamingSatelliteControllerStats => {
31869                "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS"
31870            }
31871            Self::AtomControllerStatsPerPackage => "ATOM_CONTROLLER_STATS_PER_PACKAGE",
31872            Self::AtomSatelliteEntitlement => "ATOM_SATELLITE_ENTITLEMENT",
31873            Self::AtomSatelliteConfigUpdater => "ATOM_SATELLITE_CONFIG_UPDATER",
31874            Self::AtomSatelliteAccessController => "ATOM_SATELLITE_ACCESS_CONTROLLER",
31875            Self::AtomQualifiedRatListChanged => "ATOM_QUALIFIED_RAT_LIST_CHANGED",
31876            Self::AtomQnsImsCallDropStats => "ATOM_QNS_IMS_CALL_DROP_STATS",
31877            Self::AtomQnsFallbackRestrictionChanged => {
31878                "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED"
31879            }
31880            Self::AtomQnsRatPreferenceMismatchInfo => {
31881                "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO"
31882            }
31883            Self::AtomQnsHandoverTimeMillis => "ATOM_QNS_HANDOVER_TIME_MILLIS",
31884            Self::AtomQnsHandoverPingpong => "ATOM_QNS_HANDOVER_PINGPONG",
31885            Self::AtomIwlanUnderlyingNetworkValidationResultReported => {
31886                "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED"
31887            }
31888            Self::AtomEmergencyNumberDialed => "ATOM_EMERGENCY_NUMBER_DIALED",
31889            Self::AtomCallStats => "ATOM_CALL_STATS",
31890            Self::AtomCallAudioRouteStats => "ATOM_CALL_AUDIO_ROUTE_STATS",
31891            Self::AtomTelecomApiStats => "ATOM_TELECOM_API_STATS",
31892            Self::AtomTelecomErrorStats => "ATOM_TELECOM_ERROR_STATS",
31893            Self::AtomLockscreenShortcutSelected => "ATOM_LOCKSCREEN_SHORTCUT_SELECTED",
31894            Self::AtomLockscreenShortcutTriggered => "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED",
31895            Self::AtomLauncherImpressionEventV2 => "ATOM_LAUNCHER_IMPRESSION_EVENT_V2",
31896            Self::AtomDisplaySwitchLatencyTracked => {
31897                "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED"
31898            }
31899            Self::AtomNotificationListenerService => "ATOM_NOTIFICATION_LISTENER_SERVICE",
31900            Self::AtomNavHandleTouchPoints => "ATOM_NAV_HANDLE_TOUCH_POINTS",
31901            Self::AtomCommunalHubWidgetEventReported => {
31902                "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED"
31903            }
31904            Self::AtomPeripheralTutorialLaunched => "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED",
31905            Self::AtomContextualEducationTriggered => {
31906                "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED"
31907            }
31908            Self::AtomCommunalHubSnapshot => "ATOM_COMMUNAL_HUB_SNAPSHOT",
31909            Self::AtomTestExtensionAtomReported => "ATOM_TEST_EXTENSION_ATOM_REPORTED",
31910            Self::AtomTestRestrictedAtomReported => "ATOM_TEST_RESTRICTED_ATOM_REPORTED",
31911            Self::AtomStatsSocketLossReported => "ATOM_STATS_SOCKET_LOSS_REPORTED",
31912            Self::AtomSettingsSpaReported => "ATOM_SETTINGS_SPA_REPORTED",
31913            Self::AtomSelinuxAuditLog => "ATOM_SELINUX_AUDIT_LOG",
31914            Self::AtomSandboxApiCalled => "ATOM_SANDBOX_API_CALLED",
31915            Self::AtomSandboxActivityEventOccurred => {
31916                "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED"
31917            }
31918            Self::AtomSdkSandboxRestrictedAccessInSession => {
31919                "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION"
31920            }
31921            Self::AtomSandboxSdkStorage => "ATOM_SANDBOX_SDK_STORAGE",
31922            Self::AtomRkpdPoolStats => "ATOM_RKPD_POOL_STATS",
31923            Self::AtomRkpdClientOperation => "ATOM_RKPD_CLIENT_OPERATION",
31924            Self::AtomRangingSessionConfigured => "ATOM_RANGING_SESSION_CONFIGURED",
31925            Self::AtomRangingSessionStarted => "ATOM_RANGING_SESSION_STARTED",
31926            Self::AtomRangingSessionClosed => "ATOM_RANGING_SESSION_CLOSED",
31927            Self::AtomRangingTechnologyStarted => "ATOM_RANGING_TECHNOLOGY_STARTED",
31928            Self::AtomRangingTechnologyStopped => "ATOM_RANGING_TECHNOLOGY_STOPPED",
31929            Self::AtomMediaProviderDatabaseRollbackReported => {
31930                "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED"
31931            }
31932            Self::AtomBackupSetupStatusReported => "ATOM_BACKUP_SETUP_STATUS_REPORTED",
31933            Self::AtomScreenOffReported => "ATOM_SCREEN_OFF_REPORTED",
31934            Self::AtomScreenTimeoutOverrideReported => {
31935                "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED"
31936            }
31937            Self::AtomScreenInteractiveSessionReported => {
31938                "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED"
31939            }
31940            Self::AtomScreenDimReported => "ATOM_SCREEN_DIM_REPORTED",
31941            Self::AtomAtom9999 => "ATOM_ATOM_9999",
31942            Self::AtomAtom99999 => "ATOM_ATOM_99999",
31943            Self::AtomPhotopickerSessionInfoReported => {
31944                "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED"
31945            }
31946            Self::AtomPhotopickerApiInfoReported => "ATOM_PHOTOPICKER_API_INFO_REPORTED",
31947            Self::AtomPhotopickerUiEventLogged => "ATOM_PHOTOPICKER_UI_EVENT_LOGGED",
31948            Self::AtomPhotopickerMediaItemStatusReported => {
31949                "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED"
31950            }
31951            Self::AtomPhotopickerPreviewInfoLogged => {
31952                "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED"
31953            }
31954            Self::AtomPhotopickerMenuInteractionLogged => {
31955                "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED"
31956            }
31957            Self::AtomPhotopickerBannerInteractionLogged => {
31958                "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED"
31959            }
31960            Self::AtomPhotopickerMediaLibraryInfoLogged => {
31961                "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED"
31962            }
31963            Self::AtomPhotopickerPageInfoLogged => "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED",
31964            Self::AtomPhotopickerMediaGridSyncInfoReported => {
31965                "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED"
31966            }
31967            Self::AtomPhotopickerAlbumSyncInfoReported => {
31968                "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED"
31969            }
31970            Self::AtomPhotopickerSearchInfoReported => {
31971                "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED"
31972            }
31973            Self::AtomSearchDataExtractionDetailsReported => {
31974                "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED"
31975            }
31976            Self::AtomEmbeddedPhotopickerInfoReported => {
31977                "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED"
31978            }
31979            Self::AtomPermissionRationaleDialogViewed => {
31980                "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED"
31981            }
31982            Self::AtomPermissionRationaleDialogActionReported => {
31983                "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED"
31984            }
31985            Self::AtomAppDataSharingUpdatesNotificationInteraction => {
31986                "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION"
31987            }
31988            Self::AtomAppDataSharingUpdatesFragmentViewed => {
31989                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED"
31990            }
31991            Self::AtomAppDataSharingUpdatesFragmentActionReported => {
31992                "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED"
31993            }
31994            Self::AtomEnhancedConfirmationDialogResultReported => {
31995                "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED"
31996            }
31997            Self::AtomEnhancedConfirmationRestrictionCleared => {
31998                "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED"
31999            }
32000            Self::AtomPressureStallInformation => "ATOM_PRESSURE_STALL_INFORMATION",
32001            Self::AtomPdfLoadReported => "ATOM_PDF_LOAD_REPORTED",
32002            Self::AtomPdfApiUsageReported => "ATOM_PDF_API_USAGE_REPORTED",
32003            Self::AtomPdfSearchReported => "ATOM_PDF_SEARCH_REPORTED",
32004            Self::AtomComponentStateChangedReported => {
32005                "ATOM_COMPONENT_STATE_CHANGED_REPORTED"
32006            }
32007            Self::AtomOndevicepersonalizationApiCalled => {
32008                "ATOM_ONDEVICEPERSONALIZATION_API_CALLED"
32009            }
32010            Self::AtomOndevicepersonalizationTraceEvent => {
32011                "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT"
32012            }
32013            Self::AtomNfcObserveModeStateChanged => "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED",
32014            Self::AtomNfcFieldChanged => "ATOM_NFC_FIELD_CHANGED",
32015            Self::AtomNfcPollingLoopNotificationReported => {
32016                "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED"
32017            }
32018            Self::AtomNfcProprietaryCapabilitiesReported => {
32019                "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED"
32020            }
32021            Self::AtomNfcExitFrameTableChanged => "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED",
32022            Self::AtomNfcAutoTransactReported => "ATOM_NFC_AUTO_TRANSACT_REPORTED",
32023            Self::AtomMicroxrDeviceBootCompleteReported => {
32024                "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED"
32025            }
32026            Self::AtomMteState => "ATOM_MTE_STATE",
32027            Self::AtomZramMaintenanceExecuted => "ATOM_ZRAM_MAINTENANCE_EXECUTED",
32028            Self::AtomZramSetupExecuted => "ATOM_ZRAM_SETUP_EXECUTED",
32029            Self::AtomZramMmStatMmd => "ATOM_ZRAM_MM_STAT_MMD",
32030            Self::AtomZramBdStatMmd => "ATOM_ZRAM_BD_STAT_MMD",
32031            Self::AtomMediaEditingEndedReported => "ATOM_MEDIA_EDITING_ENDED_REPORTED",
32032            Self::AtomMediaCodecReclaimRequestCompleted => {
32033                "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED"
32034            }
32035            Self::AtomMediaCodecStarted => "ATOM_MEDIA_CODEC_STARTED",
32036            Self::AtomMediaCodecStopped => "ATOM_MEDIA_CODEC_STOPPED",
32037            Self::AtomMediaCodecRendered => "ATOM_MEDIA_CODEC_RENDERED",
32038            Self::AtomEmergencyStateChanged => "ATOM_EMERGENCY_STATE_CHANGED",
32039            Self::AtomChreSignificantMotionStateChanged => {
32040                "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED"
32041            }
32042            Self::AtomPopulationDensityProviderLoadingReported => {
32043                "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED"
32044            }
32045            Self::AtomDensityBasedCoarseLocationsUsageReported => {
32046                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED"
32047            }
32048            Self::AtomDensityBasedCoarseLocationsProviderQueryReported => {
32049                "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED"
32050            }
32051            Self::AtomKernelOomKillOccurred => "ATOM_KERNEL_OOM_KILL_OCCURRED",
32052            Self::AtomKeyboardConfigured => "ATOM_KEYBOARD_CONFIGURED",
32053            Self::AtomKeyboardSystemsEventReported => {
32054                "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED"
32055            }
32056            Self::AtomInputdeviceUsageReported => "ATOM_INPUTDEVICE_USAGE_REPORTED",
32057            Self::AtomInputEventLatencyReported => "ATOM_INPUT_EVENT_LATENCY_REPORTED",
32058            Self::AtomTouchpadUsage => "ATOM_TOUCHPAD_USAGE",
32059            Self::AtomIkeSessionTerminated => "ATOM_IKE_SESSION_TERMINATED",
32060            Self::AtomIkeLivenessCheckSessionValidated => {
32061                "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED"
32062            }
32063            Self::AtomNegotiatedSecurityAssociation => {
32064                "ATOM_NEGOTIATED_SECURITY_ASSOCIATION"
32065            }
32066            Self::AtomHotwordEgressSizeAtomReported => {
32067                "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED"
32068            }
32069            Self::AtomHealthConnectUiImpression => "ATOM_HEALTH_CONNECT_UI_IMPRESSION",
32070            Self::AtomHealthConnectUiInteraction => "ATOM_HEALTH_CONNECT_UI_INTERACTION",
32071            Self::AtomHealthConnectAppOpenedReported => {
32072                "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED"
32073            }
32074            Self::AtomHealthConnectApiCalled => "ATOM_HEALTH_CONNECT_API_CALLED",
32075            Self::AtomHealthConnectUsageStats => "ATOM_HEALTH_CONNECT_USAGE_STATS",
32076            Self::AtomHealthConnectStorageStats => "ATOM_HEALTH_CONNECT_STORAGE_STATS",
32077            Self::AtomHealthConnectApiInvoked => "ATOM_HEALTH_CONNECT_API_INVOKED",
32078            Self::AtomExerciseRouteApiCalled => "ATOM_EXERCISE_ROUTE_API_CALLED",
32079            Self::AtomHealthConnectExportInvoked => "ATOM_HEALTH_CONNECT_EXPORT_INVOKED",
32080            Self::AtomHealthConnectImportInvoked => "ATOM_HEALTH_CONNECT_IMPORT_INVOKED",
32081            Self::AtomHealthConnectExportImportStatsReported => {
32082                "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED"
32083            }
32084            Self::AtomHealthConnectPermissionStats => {
32085                "ATOM_HEALTH_CONNECT_PERMISSION_STATS"
32086            }
32087            Self::AtomHealthConnectPhrApiInvoked => "ATOM_HEALTH_CONNECT_PHR_API_INVOKED",
32088            Self::AtomHealthConnectPhrUsageStats => "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS",
32089            Self::AtomHealthConnectPhrStorageStats => {
32090                "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS"
32091            }
32092            Self::AtomHealthConnectRestrictedEcosystemStats => {
32093                "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS"
32094            }
32095            Self::AtomHealthConnectEcosystemStats => {
32096                "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS"
32097            }
32098            Self::AtomHdmiEarcStatusReported => "ATOM_HDMI_EARC_STATUS_REPORTED",
32099            Self::AtomHdmiSoundbarModeStatusReported => {
32100                "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED"
32101            }
32102            Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled => {
32103                "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED"
32104            }
32105            Self::AtomBatteryHealth => "ATOM_BATTERY_HEALTH",
32106            Self::AtomBiometricUnenrolled => "ATOM_BIOMETRIC_UNENROLLED",
32107            Self::AtomBiometricEnumerated => "ATOM_BIOMETRIC_ENUMERATED",
32108            Self::AtomApplicationGrammaticalInflectionChanged => {
32109                "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED"
32110            }
32111            Self::AtomSystemGrammaticalInflectionChanged => {
32112                "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED"
32113            }
32114            Self::AtomFullScreenIntentLaunched => "ATOM_FULL_SCREEN_INTENT_LAUNCHED",
32115            Self::AtomBalAllowed => "ATOM_BAL_ALLOWED",
32116            Self::AtomInTaskActivityStarted => "ATOM_IN_TASK_ACTIVITY_STARTED",
32117            Self::AtomDeviceOrientationChanged => "ATOM_DEVICE_ORIENTATION_CHANGED",
32118            Self::AtomCachedAppsHighWatermark => "ATOM_CACHED_APPS_HIGH_WATERMARK",
32119            Self::AtomStylusPredictionMetricsReported => {
32120                "ATOM_STYLUS_PREDICTION_METRICS_REPORTED"
32121            }
32122            Self::AtomUserRiskEventReported => "ATOM_USER_RISK_EVENT_REPORTED",
32123            Self::AtomMediaProjectionStateChanged => {
32124                "ATOM_MEDIA_PROJECTION_STATE_CHANGED"
32125            }
32126            Self::AtomMediaProjectionTargetChanged => {
32127                "ATOM_MEDIA_PROJECTION_TARGET_CHANGED"
32128            }
32129            Self::AtomExcessiveBinderProxyCountReported => {
32130                "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED"
32131            }
32132            Self::AtomProxyBytesTransferByFgBg => "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG",
32133            Self::AtomMobileBytesTransferByProcState => {
32134                "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE"
32135            }
32136            Self::AtomBiometricFrrNotification => "ATOM_BIOMETRIC_FRR_NOTIFICATION",
32137            Self::AtomSensitiveContentMediaProjectionSession => {
32138                "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION"
32139            }
32140            Self::AtomSensitiveNotificationAppProtectionSession => {
32141                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION"
32142            }
32143            Self::AtomSensitiveNotificationAppProtectionApplied => {
32144                "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED"
32145            }
32146            Self::AtomSensitiveNotificationRedaction => {
32147                "ATOM_SENSITIVE_NOTIFICATION_REDACTION"
32148            }
32149            Self::AtomSensitiveContentAppProtection => {
32150                "ATOM_SENSITIVE_CONTENT_APP_PROTECTION"
32151            }
32152            Self::AtomAppRestrictionStateChanged => "ATOM_APP_RESTRICTION_STATE_CHANGED",
32153            Self::AtomBatteryUsageStatsPerUid => "ATOM_BATTERY_USAGE_STATS_PER_UID",
32154            Self::AtomPostgcMemorySnapshot => "ATOM_POSTGC_MEMORY_SNAPSHOT",
32155            Self::AtomPowerSaveTempAllowlistChanged => {
32156                "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED"
32157            }
32158            Self::AtomAppOpAccessTracked => "ATOM_APP_OP_ACCESS_TRACKED",
32159            Self::AtomContentOrFileUriEventReported => {
32160                "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED"
32161            }
32162            Self::AtomDeviceIdleTempAllowlistUpdated => {
32163                "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED"
32164            }
32165            Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled => {
32166                "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED"
32167            }
32168            Self::AtomFrameworkWakelockInfo => "ATOM_FRAMEWORK_WAKELOCK_INFO",
32169            Self::AtomJankFrameCountByWidgetReported => {
32170                "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED"
32171            }
32172            Self::AtomIntentCreatorTokenAdded => "ATOM_INTENT_CREATOR_TOKEN_ADDED",
32173            Self::AtomNotificationChannelClassification => {
32174                "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION"
32175            }
32176            Self::AtomCameraStatusForCompatibilityChanged => {
32177                "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED"
32178            }
32179            Self::AtomFederatedComputeApiCalled => "ATOM_FEDERATED_COMPUTE_API_CALLED",
32180            Self::AtomFederatedComputeTrainingEventReported => {
32181                "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED"
32182            }
32183            Self::AtomExampleIteratorNextLatencyReported => {
32184                "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED"
32185            }
32186            Self::AtomFederatedComputeTraceEventReported => {
32187                "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED"
32188            }
32189            Self::AtomExpressEventReported => "ATOM_EXPRESS_EVENT_REPORTED",
32190            Self::AtomExpressHistogramSampleReported => {
32191                "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED"
32192            }
32193            Self::AtomExpressUidEventReported => "ATOM_EXPRESS_UID_EVENT_REPORTED",
32194            Self::AtomExpressUidHistogramSampleReported => {
32195                "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED"
32196            }
32197            Self::AtomDreamSettingChanged => "ATOM_DREAM_SETTING_CHANGED",
32198            Self::AtomDreamSettingSnapshot => "ATOM_DREAM_SETTING_SNAPSHOT",
32199            Self::AtomDndStateChanged => "ATOM_DND_STATE_CHANGED",
32200            Self::AtomExternalDisplayStateChanged => {
32201                "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED"
32202            }
32203            Self::AtomDisplayModeDirectorVoteChanged => {
32204                "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED"
32205            }
32206            Self::AtomDevicePolicyManagementMode => "ATOM_DEVICE_POLICY_MANAGEMENT_MODE",
32207            Self::AtomDevicePolicyState => "ATOM_DEVICE_POLICY_STATE",
32208            Self::AtomDeviceLockCheckInRequestReported => {
32209                "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED"
32210            }
32211            Self::AtomDeviceLockProvisioningCompleteReported => {
32212                "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED"
32213            }
32214            Self::AtomDeviceLockKioskAppRequestReported => {
32215                "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED"
32216            }
32217            Self::AtomDeviceLockCheckInRetryReported => {
32218                "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED"
32219            }
32220            Self::AtomDeviceLockProvisionFailureReported => {
32221                "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED"
32222            }
32223            Self::AtomDeviceLockLockUnlockDeviceFailureReported => {
32224                "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED"
32225            }
32226            Self::AtomDesktopModeUiChanged => "ATOM_DESKTOP_MODE_UI_CHANGED",
32227            Self::AtomDesktopModeSessionTaskUpdate => {
32228                "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE"
32229            }
32230            Self::AtomDesktopModeTaskSizeUpdated => "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED",
32231            Self::AtomCronetEngineCreated => "ATOM_CRONET_ENGINE_CREATED",
32232            Self::AtomCronetTrafficReported => "ATOM_CRONET_TRAFFIC_REPORTED",
32233            Self::AtomCronetEngineBuilderInitialized => {
32234                "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED"
32235            }
32236            Self::AtomCronetHttpFlagsInitialized => "ATOM_CRONET_HTTP_FLAGS_INITIALIZED",
32237            Self::AtomCronetInitialized => "ATOM_CRONET_INITIALIZED",
32238            Self::AtomCredentialManagerApiCalled => "ATOM_CREDENTIAL_MANAGER_API_CALLED",
32239            Self::AtomCredentialManagerInitPhaseReported => {
32240                "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED"
32241            }
32242            Self::AtomCredentialManagerCandidatePhaseReported => {
32243                "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED"
32244            }
32245            Self::AtomCredentialManagerFinalPhaseReported => {
32246                "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED"
32247            }
32248            Self::AtomCredentialManagerTotalReported => {
32249                "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED"
32250            }
32251            Self::AtomCredentialManagerFinalnouidReported => {
32252                "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED"
32253            }
32254            Self::AtomCredentialManagerGetReported => {
32255                "ATOM_CREDENTIAL_MANAGER_GET_REPORTED"
32256            }
32257            Self::AtomCredentialManagerAuthClickReported => {
32258                "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED"
32259            }
32260            Self::AtomCredentialManagerApiv2Called => {
32261                "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED"
32262            }
32263            Self::AtomCpuPolicy => "ATOM_CPU_POLICY",
32264            Self::AtomVpnConnectionStateChanged => "ATOM_VPN_CONNECTION_STATE_CHANGED",
32265            Self::AtomVpnConnectionReported => "ATOM_VPN_CONNECTION_REPORTED",
32266            Self::AtomIpClientRaInfoReported => "ATOM_IP_CLIENT_RA_INFO_REPORTED",
32267            Self::AtomApfSessionInfoReported => "ATOM_APF_SESSION_INFO_REPORTED",
32268            Self::AtomCoreNetworkingTerribleErrorOccurred => {
32269                "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED"
32270            }
32271            Self::AtomNetworkStatsRecorderFileOperated => {
32272                "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED"
32273            }
32274            Self::AtomDailyKeepaliveInfoReported => "ATOM_DAILY_KEEPALIVE_INFO_REPORTED",
32275            Self::AtomNetworkRequestStateChanged => "ATOM_NETWORK_REQUEST_STATE_CHANGED",
32276            Self::AtomTetheringActiveSessionsReported => {
32277                "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED"
32278            }
32279            Self::AtomCertificateTransparencyLogListUpdateStateChanged => {
32280                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED"
32281            }
32282            Self::AtomHardwareRendererEvent => "ATOM_HARDWARE_RENDERER_EVENT",
32283            Self::AtomTextureViewEvent => "ATOM_TEXTURE_VIEW_EVENT",
32284            Self::AtomSurfaceControlEvent => "ATOM_SURFACE_CONTROL_EVENT",
32285            Self::AtomImageDecoded => "ATOM_IMAGE_DECODED",
32286            Self::AtomCertificateTransparencyLogListStateChanged => {
32287                "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED"
32288            }
32289            Self::AtomConscryptServiceUsed => "ATOM_CONSCRYPT_SERVICE_USED",
32290            Self::AtomCertificateTransparencyVerificationReported => {
32291                "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED"
32292            }
32293            Self::AtomCameraFeatureCombinationQueryEvent => {
32294                "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT"
32295            }
32296            Self::AtomBroadcastSent => "ATOM_BROADCAST_SENT",
32297            Self::AtomBluetoothHashedDeviceNameReported => {
32298                "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED"
32299            }
32300            Self::AtomBluetoothL2capCocClientConnection => {
32301                "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION"
32302            }
32303            Self::AtomBluetoothL2capCocServerConnection => {
32304                "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION"
32305            }
32306            Self::AtomBluetoothLeSessionConnected => {
32307                "ATOM_BLUETOOTH_LE_SESSION_CONNECTED"
32308            }
32309            Self::AtomRestrictedBluetoothDeviceNameReported => {
32310                "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED"
32311            }
32312            Self::AtomBluetoothProfileConnectionAttempted => {
32313                "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED"
32314            }
32315            Self::AtomBluetoothContentProfileErrorReported => {
32316                "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED"
32317            }
32318            Self::AtomBluetoothRfcommConnectionAttempted => {
32319                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED"
32320            }
32321            Self::AtomRemoteDeviceInformationWithMetricId => {
32322                "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID"
32323            }
32324            Self::AtomLeAppScanStateChanged => "ATOM_LE_APP_SCAN_STATE_CHANGED",
32325            Self::AtomLeRadioScanStopped => "ATOM_LE_RADIO_SCAN_STOPPED",
32326            Self::AtomLeScanResultReceived => "ATOM_LE_SCAN_RESULT_RECEIVED",
32327            Self::AtomLeScanAbused => "ATOM_LE_SCAN_ABUSED",
32328            Self::AtomLeAdvStateChanged => "ATOM_LE_ADV_STATE_CHANGED",
32329            Self::AtomLeAdvErrorReported => "ATOM_LE_ADV_ERROR_REPORTED",
32330            Self::AtomA2dpSessionReported => "ATOM_A2DP_SESSION_REPORTED",
32331            Self::AtomBluetoothCrossLayerEventReported => {
32332                "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED"
32333            }
32334            Self::AtomBroadcastAudioSessionReported => {
32335                "ATOM_BROADCAST_AUDIO_SESSION_REPORTED"
32336            }
32337            Self::AtomBroadcastAudioSyncReported => "ATOM_BROADCAST_AUDIO_SYNC_REPORTED",
32338            Self::AtomBluetoothRfcommConnectionReportedAtClose => {
32339                "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE"
32340            }
32341            Self::AtomBluetoothLeConnection => "ATOM_BLUETOOTH_LE_CONNECTION",
32342            Self::AtomHearingDeviceActiveEventReported => {
32343                "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED"
32344            }
32345            Self::AtomBackportedFixStatusReported => {
32346                "ATOM_BACKPORTED_FIX_STATUS_REPORTED"
32347            }
32348            Self::AtomPluginInitialized => "ATOM_PLUGIN_INITIALIZED",
32349            Self::AtomCarSystemUiDataSubscriptionEventReported => {
32350                "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED"
32351            }
32352            Self::AtomCarSettingsDataSubscriptionEventReported => {
32353                "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED"
32354            }
32355            Self::AtomCarQcLibEventReported => "ATOM_CAR_QC_LIB_EVENT_REPORTED",
32356            Self::AtomCarWakeupFromSuspendReported => {
32357                "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED"
32358            }
32359            Self::AtomCarRecentsEventReported => "ATOM_CAR_RECENTS_EVENT_REPORTED",
32360            Self::AtomCarCalmModeEventReported => "ATOM_CAR_CALM_MODE_EVENT_REPORTED",
32361            Self::AtomAutofillUiEventReported => "ATOM_AUTOFILL_UI_EVENT_REPORTED",
32362            Self::AtomAutofillFillRequestReported => {
32363                "ATOM_AUTOFILL_FILL_REQUEST_REPORTED"
32364            }
32365            Self::AtomAutofillFillResponseReported => {
32366                "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED"
32367            }
32368            Self::AtomAutofillSaveEventReported => "ATOM_AUTOFILL_SAVE_EVENT_REPORTED",
32369            Self::AtomAutofillSessionCommitted => "ATOM_AUTOFILL_SESSION_COMMITTED",
32370            Self::AtomAutofillFieldClassificationEventReported => {
32371                "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED"
32372            }
32373            Self::AtomOdrefreshReported => "ATOM_ODREFRESH_REPORTED",
32374            Self::AtomOdsignReported => "ATOM_ODSIGN_REPORTED",
32375            Self::AtomBackgroundDexoptJobEnded => "ATOM_BACKGROUND_DEXOPT_JOB_ENDED",
32376            Self::AtomPrerebootDexoptJobEnded => "ATOM_PREREBOOT_DEXOPT_JOB_ENDED",
32377            Self::AtomArtDatumReported => "ATOM_ART_DATUM_REPORTED",
32378            Self::AtomArtDeviceDatumReported => "ATOM_ART_DEVICE_DATUM_REPORTED",
32379            Self::AtomArtDatumDeltaReported => "ATOM_ART_DATUM_DELTA_REPORTED",
32380            Self::AtomArtDex2oatReported => "ATOM_ART_DEX2OAT_REPORTED",
32381            Self::AtomArtDeviceStatus => "ATOM_ART_DEVICE_STATUS",
32382            Self::AtomAppSearchSetSchemaStatsReported => {
32383                "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED"
32384            }
32385            Self::AtomAppSearchSchemaMigrationStatsReported => {
32386                "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED"
32387            }
32388            Self::AtomAppSearchUsageSearchIntentStatsReported => {
32389                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED"
32390            }
32391            Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported => {
32392                "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED"
32393            }
32394            Self::AtomAppSearchAppsIndexerStatsReported => {
32395                "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED"
32396            }
32397            Self::AtomAppFunctionsRequestReported => {
32398                "ATOM_APP_FUNCTIONS_REQUEST_REPORTED"
32399            }
32400            Self::AtomApexInstallationRequested => "ATOM_APEX_INSTALLATION_REQUESTED",
32401            Self::AtomApexInstallationStaged => "ATOM_APEX_INSTALLATION_STAGED",
32402            Self::AtomApexInstallationEnded => "ATOM_APEX_INSTALLATION_ENDED",
32403            Self::AtomAiWallpapersButtonPressed => "ATOM_AI_WALLPAPERS_BUTTON_PRESSED",
32404            Self::AtomAiWallpapersTemplateSelected => {
32405                "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED"
32406            }
32407            Self::AtomAiWallpapersTermSelected => "ATOM_AI_WALLPAPERS_TERM_SELECTED",
32408            Self::AtomAiWallpapersWallpaperSet => "ATOM_AI_WALLPAPERS_WALLPAPER_SET",
32409            Self::AtomAiWallpapersSessionSummary => "ATOM_AI_WALLPAPERS_SESSION_SUMMARY",
32410            Self::AtomJsscriptengineLatencyReported => {
32411                "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED"
32412            }
32413            Self::AtomAdServicesApiCalled => "ATOM_AD_SERVICES_API_CALLED",
32414            Self::AtomAdServicesMesurementReportsUploaded => {
32415                "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED"
32416            }
32417            Self::AtomMobileDataDownloadFileGroupStatusReported => {
32418                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED"
32419            }
32420            Self::AtomMobileDataDownloadDownloadResultReported => {
32421                "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED"
32422            }
32423            Self::AtomAdServicesSettingsUsageReported => {
32424                "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED"
32425            }
32426            Self::AtomBackgroundFetchProcessReported => {
32427                "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED"
32428            }
32429            Self::AtomUpdateCustomAudienceProcessReported => {
32430                "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED"
32431            }
32432            Self::AtomRunAdBiddingProcessReported => {
32433                "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED"
32434            }
32435            Self::AtomRunAdScoringProcessReported => {
32436                "ATOM_RUN_AD_SCORING_PROCESS_REPORTED"
32437            }
32438            Self::AtomRunAdSelectionProcessReported => {
32439                "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED"
32440            }
32441            Self::AtomRunAdBiddingPerCaProcessReported => {
32442                "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED"
32443            }
32444            Self::AtomMobileDataDownloadFileGroupStorageStatsReported => {
32445                "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED"
32446            }
32447            Self::AtomAdServicesMeasurementRegistrations => {
32448                "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS"
32449            }
32450            Self::AtomAdServicesGetTopicsReported => {
32451                "ATOM_AD_SERVICES_GET_TOPICS_REPORTED"
32452            }
32453            Self::AtomAdServicesEpochComputationGetTopTopicsReported => {
32454                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED"
32455            }
32456            Self::AtomAdServicesEpochComputationClassifierReported => {
32457                "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
32458            }
32459            Self::AtomAdServicesBackCompatGetTopicsReported => {
32460                "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED"
32461            }
32462            Self::AtomAdServicesBackCompatEpochComputationClassifierReported => {
32463                "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED"
32464            }
32465            Self::AtomAdServicesMeasurementDebugKeys => {
32466                "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS"
32467            }
32468            Self::AtomAdServicesErrorReported => "ATOM_AD_SERVICES_ERROR_REPORTED",
32469            Self::AtomAdServicesBackgroundJobsExecutionReported => {
32470                "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED"
32471            }
32472            Self::AtomAdServicesMeasurementDelayedSourceRegistration => {
32473                "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION"
32474            }
32475            Self::AtomAdServicesMeasurementAttribution => {
32476                "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION"
32477            }
32478            Self::AtomAdServicesMeasurementJobs => "ATOM_AD_SERVICES_MEASUREMENT_JOBS",
32479            Self::AtomAdServicesMeasurementWipeout => {
32480                "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT"
32481            }
32482            Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys => {
32483                "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS"
32484            }
32485            Self::AtomAdServicesEnrollmentDataStored => {
32486                "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED"
32487            }
32488            Self::AtomAdServicesEnrollmentFileDownloaded => {
32489                "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED"
32490            }
32491            Self::AtomAdServicesEnrollmentMatched => {
32492                "ATOM_AD_SERVICES_ENROLLMENT_MATCHED"
32493            }
32494            Self::AtomAdServicesConsentMigrated => "ATOM_AD_SERVICES_CONSENT_MIGRATED",
32495            Self::AtomAdServicesEnrollmentFailed => "ATOM_AD_SERVICES_ENROLLMENT_FAILED",
32496            Self::AtomAdServicesMeasurementClickVerification => {
32497                "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION"
32498            }
32499            Self::AtomAdServicesEncryptionKeyFetched => {
32500                "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED"
32501            }
32502            Self::AtomAdServicesEncryptionKeyDbTransactionEnded => {
32503                "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED"
32504            }
32505            Self::AtomDestinationRegisteredBeacons => {
32506                "ATOM_DESTINATION_REGISTERED_BEACONS"
32507            }
32508            Self::AtomReportInteractionApiCalled => "ATOM_REPORT_INTERACTION_API_CALLED",
32509            Self::AtomInteractionReportingTableCleared => {
32510                "ATOM_INTERACTION_REPORTING_TABLE_CLEARED"
32511            }
32512            Self::AtomAppManifestConfigHelperCalled => {
32513                "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED"
32514            }
32515            Self::AtomAdFilteringProcessJoinCaReported => {
32516                "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED"
32517            }
32518            Self::AtomAdFilteringProcessAdSelectionReported => {
32519                "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED"
32520            }
32521            Self::AtomAdCounterHistogramUpdaterReported => {
32522                "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED"
32523            }
32524            Self::AtomSignatureVerification => "ATOM_SIGNATURE_VERIFICATION",
32525            Self::AtomKAnonImmediateSignJoinStatusReported => {
32526                "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED"
32527            }
32528            Self::AtomKAnonBackgroundJobStatusReported => {
32529                "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED"
32530            }
32531            Self::AtomKAnonInitializeStatusReported => {
32532                "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED"
32533            }
32534            Self::AtomKAnonSignStatusReported => "ATOM_K_ANON_SIGN_STATUS_REPORTED",
32535            Self::AtomKAnonJoinStatusReported => "ATOM_K_ANON_JOIN_STATUS_REPORTED",
32536            Self::AtomKAnonKeyAttestationStatusReported => {
32537                "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED"
32538            }
32539            Self::AtomGetAdSelectionDataApiCalled => {
32540                "ATOM_GET_AD_SELECTION_DATA_API_CALLED"
32541            }
32542            Self::AtomGetAdSelectionDataBuyerInputGenerated => {
32543                "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED"
32544            }
32545            Self::AtomBackgroundJobSchedulingReported => {
32546                "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED"
32547            }
32548            Self::AtomTopicsEncryptionEpochComputationReported => {
32549                "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED"
32550            }
32551            Self::AtomTopicsEncryptionGetTopicsReported => {
32552                "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED"
32553            }
32554            Self::AtomAdservicesShellCommandCalled => {
32555                "ATOM_ADSERVICES_SHELL_COMMAND_CALLED"
32556            }
32557            Self::AtomUpdateSignalsApiCalled => "ATOM_UPDATE_SIGNALS_API_CALLED",
32558            Self::AtomEncodingJobRun => "ATOM_ENCODING_JOB_RUN",
32559            Self::AtomEncodingJsFetch => "ATOM_ENCODING_JS_FETCH",
32560            Self::AtomEncodingJsExecution => "ATOM_ENCODING_JS_EXECUTION",
32561            Self::AtomPersistAdSelectionResultCalled => {
32562                "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED"
32563            }
32564            Self::AtomServerAuctionKeyFetchCalled => {
32565                "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED"
32566            }
32567            Self::AtomServerAuctionBackgroundKeyFetchEnabled => {
32568                "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED"
32569            }
32570            Self::AtomAdServicesMeasurementProcessOdpRegistration => {
32571                "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION"
32572            }
32573            Self::AtomAdServicesMeasurementNotifyRegistrationToOdp => {
32574                "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP"
32575            }
32576            Self::AtomSelectAdsFromOutcomesApiCalled => {
32577                "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED"
32578            }
32579            Self::AtomReportImpressionApiCalled => "ATOM_REPORT_IMPRESSION_API_CALLED",
32580            Self::AtomAdServicesEnrollmentTransactionStats => {
32581                "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS"
32582            }
32583            Self::AtomAdServicesCobaltLoggerEventReported => {
32584                "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED"
32585            }
32586            Self::AtomAdServicesCobaltPeriodicJobEventReported => {
32587                "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED"
32588            }
32589            Self::AtomUpdateSignalsProcessReported => {
32590                "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED"
32591            }
32592            Self::AtomTopicsScheduleEpochJobSettingReported => {
32593                "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED"
32594            }
32595            Self::AtomScheduledCustomAudienceUpdateScheduleAttempted => {
32596                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED"
32597            }
32598            Self::AtomScheduledCustomAudienceUpdatePerformed => {
32599                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED"
32600            }
32601            Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported => {
32602                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED"
32603            }
32604            Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan => {
32605                "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN"
32606            }
32607            Self::AtomThermalStatusCalled => "ATOM_THERMAL_STATUS_CALLED",
32608            Self::AtomThermalHeadroomCalled => "ATOM_THERMAL_HEADROOM_CALLED",
32609            Self::AtomThermalHeadroomThresholdsCalled => {
32610                "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED"
32611            }
32612            Self::AtomAdpfHintSessionTidCleanup => "ATOM_ADPF_HINT_SESSION_TID_CLEANUP",
32613            Self::AtomThermalHeadroomThresholds => "ATOM_THERMAL_HEADROOM_THRESHOLDS",
32614            Self::AtomAdpfSessionSnapshot => "ATOM_ADPF_SESSION_SNAPSHOT",
32615            Self::AtomAdaptiveAuthUnlockAfterLockReported => {
32616                "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED"
32617            }
32618            Self::AtomAccountManagerEvent => "ATOM_ACCOUNT_MANAGER_EVENT",
32619            Self::AtomAccessibilityCheckResultReported => {
32620                "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED"
32621            }
32622        }
32623    }
32624    /// Creates an enum from field names used in the ProtoBuf definition.
32625    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
32626        match value {
32627            "ATOM_UNSPECIFIED" => Some(Self::AtomUnspecified),
32628            "ATOM_BLE_SCAN_STATE_CHANGED" => Some(Self::AtomBleScanStateChanged),
32629            "ATOM_PROCESS_STATE_CHANGED" => Some(Self::AtomProcessStateChanged),
32630            "ATOM_BLE_SCAN_RESULT_RECEIVED" => Some(Self::AtomBleScanResultReceived),
32631            "ATOM_SENSOR_STATE_CHANGED" => Some(Self::AtomSensorStateChanged),
32632            "ATOM_GPS_SCAN_STATE_CHANGED" => Some(Self::AtomGpsScanStateChanged),
32633            "ATOM_SYNC_STATE_CHANGED" => Some(Self::AtomSyncStateChanged),
32634            "ATOM_SCHEDULED_JOB_STATE_CHANGED" => {
32635                Some(Self::AtomScheduledJobStateChanged)
32636            }
32637            "ATOM_SCREEN_BRIGHTNESS_CHANGED" => Some(Self::AtomScreenBrightnessChanged),
32638            "ATOM_WAKELOCK_STATE_CHANGED" => Some(Self::AtomWakelockStateChanged),
32639            "ATOM_LONG_PARTIAL_WAKELOCK_STATE_CHANGED" => {
32640                Some(Self::AtomLongPartialWakelockStateChanged)
32641            }
32642            "ATOM_MOBILE_RADIO_POWER_STATE_CHANGED" => {
32643                Some(Self::AtomMobileRadioPowerStateChanged)
32644            }
32645            "ATOM_WIFI_RADIO_POWER_STATE_CHANGED" => {
32646                Some(Self::AtomWifiRadioPowerStateChanged)
32647            }
32648            "ATOM_ACTIVITY_MANAGER_SLEEP_STATE_CHANGED" => {
32649                Some(Self::AtomActivityManagerSleepStateChanged)
32650            }
32651            "ATOM_MEMORY_FACTOR_STATE_CHANGED" => {
32652                Some(Self::AtomMemoryFactorStateChanged)
32653            }
32654            "ATOM_EXCESSIVE_CPU_USAGE_REPORTED" => {
32655                Some(Self::AtomExcessiveCpuUsageReported)
32656            }
32657            "ATOM_CACHED_KILL_REPORTED" => Some(Self::AtomCachedKillReported),
32658            "ATOM_PROCESS_MEMORY_STAT_REPORTED" => {
32659                Some(Self::AtomProcessMemoryStatReported)
32660            }
32661            "ATOM_LAUNCHER_EVENT" => Some(Self::AtomLauncherEvent),
32662            "ATOM_BATTERY_SAVER_MODE_STATE_CHANGED" => {
32663                Some(Self::AtomBatterySaverModeStateChanged)
32664            }
32665            "ATOM_DEVICE_IDLE_MODE_STATE_CHANGED" => {
32666                Some(Self::AtomDeviceIdleModeStateChanged)
32667            }
32668            "ATOM_DEVICE_IDLING_MODE_STATE_CHANGED" => {
32669                Some(Self::AtomDeviceIdlingModeStateChanged)
32670            }
32671            "ATOM_AUDIO_STATE_CHANGED" => Some(Self::AtomAudioStateChanged),
32672            "ATOM_MEDIA_CODEC_STATE_CHANGED" => Some(Self::AtomMediaCodecStateChanged),
32673            "ATOM_CAMERA_STATE_CHANGED" => Some(Self::AtomCameraStateChanged),
32674            "ATOM_FLASHLIGHT_STATE_CHANGED" => Some(Self::AtomFlashlightStateChanged),
32675            "ATOM_UID_PROCESS_STATE_CHANGED" => Some(Self::AtomUidProcessStateChanged),
32676            "ATOM_PROCESS_LIFE_CYCLE_STATE_CHANGED" => {
32677                Some(Self::AtomProcessLifeCycleStateChanged)
32678            }
32679            "ATOM_SCREEN_STATE_CHANGED" => Some(Self::AtomScreenStateChanged),
32680            "ATOM_BATTERY_LEVEL_CHANGED" => Some(Self::AtomBatteryLevelChanged),
32681            "ATOM_CHARGING_STATE_CHANGED" => Some(Self::AtomChargingStateChanged),
32682            "ATOM_PLUGGED_STATE_CHANGED" => Some(Self::AtomPluggedStateChanged),
32683            "ATOM_INTERACTIVE_STATE_CHANGED" => Some(Self::AtomInteractiveStateChanged),
32684            "ATOM_TOUCH_EVENT_REPORTED" => Some(Self::AtomTouchEventReported),
32685            "ATOM_WAKEUP_ALARM_OCCURRED" => Some(Self::AtomWakeupAlarmOccurred),
32686            "ATOM_KERNEL_WAKEUP_REPORTED" => Some(Self::AtomKernelWakeupReported),
32687            "ATOM_WIFI_LOCK_STATE_CHANGED" => Some(Self::AtomWifiLockStateChanged),
32688            "ATOM_WIFI_SIGNAL_STRENGTH_CHANGED" => {
32689                Some(Self::AtomWifiSignalStrengthChanged)
32690            }
32691            "ATOM_WIFI_SCAN_STATE_CHANGED" => Some(Self::AtomWifiScanStateChanged),
32692            "ATOM_PHONE_SIGNAL_STRENGTH_CHANGED" => {
32693                Some(Self::AtomPhoneSignalStrengthChanged)
32694            }
32695            "ATOM_SETTING_CHANGED" => Some(Self::AtomSettingChanged),
32696            "ATOM_ACTIVITY_FOREGROUND_STATE_CHANGED" => {
32697                Some(Self::AtomActivityForegroundStateChanged)
32698            }
32699            "ATOM_ISOLATED_UID_CHANGED" => Some(Self::AtomIsolatedUidChanged),
32700            "ATOM_PACKET_WAKEUP_OCCURRED" => Some(Self::AtomPacketWakeupOccurred),
32701            "ATOM_WALL_CLOCK_TIME_SHIFTED" => Some(Self::AtomWallClockTimeShifted),
32702            "ATOM_ANOMALY_DETECTED" => Some(Self::AtomAnomalyDetected),
32703            "ATOM_APP_BREADCRUMB_REPORTED" => Some(Self::AtomAppBreadcrumbReported),
32704            "ATOM_APP_START_OCCURRED" => Some(Self::AtomAppStartOccurred),
32705            "ATOM_APP_START_CANCELED" => Some(Self::AtomAppStartCanceled),
32706            "ATOM_APP_START_FULLY_DRAWN" => Some(Self::AtomAppStartFullyDrawn),
32707            "ATOM_LMK_KILL_OCCURRED" => Some(Self::AtomLmkKillOccurred),
32708            "ATOM_PICTURE_IN_PICTURE_STATE_CHANGED" => {
32709                Some(Self::AtomPictureInPictureStateChanged)
32710            }
32711            "ATOM_WIFI_MULTICAST_LOCK_STATE_CHANGED" => {
32712                Some(Self::AtomWifiMulticastLockStateChanged)
32713            }
32714            "ATOM_APP_START_MEMORY_STATE_CAPTURED" => {
32715                Some(Self::AtomAppStartMemoryStateCaptured)
32716            }
32717            "ATOM_SHUTDOWN_SEQUENCE_REPORTED" => Some(Self::AtomShutdownSequenceReported),
32718            "ATOM_BOOT_SEQUENCE_REPORTED" => Some(Self::AtomBootSequenceReported),
32719            "ATOM_OVERLAY_STATE_CHANGED" => Some(Self::AtomOverlayStateChanged),
32720            "ATOM_FOREGROUND_SERVICE_STATE_CHANGED" => {
32721                Some(Self::AtomForegroundServiceStateChanged)
32722            }
32723            "ATOM_CALL_STATE_CHANGED" => Some(Self::AtomCallStateChanged),
32724            "ATOM_KEYGUARD_STATE_CHANGED" => Some(Self::AtomKeyguardStateChanged),
32725            "ATOM_KEYGUARD_BOUNCER_STATE_CHANGED" => {
32726                Some(Self::AtomKeyguardBouncerStateChanged)
32727            }
32728            "ATOM_KEYGUARD_BOUNCER_PASSWORD_ENTERED" => {
32729                Some(Self::AtomKeyguardBouncerPasswordEntered)
32730            }
32731            "ATOM_APP_DIED" => Some(Self::AtomAppDied),
32732            "ATOM_RESOURCE_CONFIGURATION_CHANGED" => {
32733                Some(Self::AtomResourceConfigurationChanged)
32734            }
32735            "ATOM_BLUETOOTH_ENABLED_STATE_CHANGED" => {
32736                Some(Self::AtomBluetoothEnabledStateChanged)
32737            }
32738            "ATOM_BLUETOOTH_CONNECTION_STATE_CHANGED" => {
32739                Some(Self::AtomBluetoothConnectionStateChanged)
32740            }
32741            "ATOM_GPS_SIGNAL_QUALITY_CHANGED" => Some(Self::AtomGpsSignalQualityChanged),
32742            "ATOM_USB_CONNECTOR_STATE_CHANGED" => {
32743                Some(Self::AtomUsbConnectorStateChanged)
32744            }
32745            "ATOM_SPEAKER_IMPEDANCE_REPORTED" => Some(Self::AtomSpeakerImpedanceReported),
32746            "ATOM_HARDWARE_FAILED" => Some(Self::AtomHardwareFailed),
32747            "ATOM_PHYSICAL_DROP_DETECTED" => Some(Self::AtomPhysicalDropDetected),
32748            "ATOM_CHARGE_CYCLES_REPORTED" => Some(Self::AtomChargeCyclesReported),
32749            "ATOM_MOBILE_CONNECTION_STATE_CHANGED" => {
32750                Some(Self::AtomMobileConnectionStateChanged)
32751            }
32752            "ATOM_MOBILE_RADIO_TECHNOLOGY_CHANGED" => {
32753                Some(Self::AtomMobileRadioTechnologyChanged)
32754            }
32755            "ATOM_USB_DEVICE_ATTACHED" => Some(Self::AtomUsbDeviceAttached),
32756            "ATOM_APP_CRASH_OCCURRED" => Some(Self::AtomAppCrashOccurred),
32757            "ATOM_ANR_OCCURRED" => Some(Self::AtomAnrOccurred),
32758            "ATOM_WTF_OCCURRED" => Some(Self::AtomWtfOccurred),
32759            "ATOM_LOW_MEM_REPORTED" => Some(Self::AtomLowMemReported),
32760            "ATOM_GENERIC_ATOM" => Some(Self::AtomGenericAtom),
32761            "ATOM_VIBRATOR_STATE_CHANGED" => Some(Self::AtomVibratorStateChanged),
32762            "ATOM_DEFERRED_JOB_STATS_REPORTED" => {
32763                Some(Self::AtomDeferredJobStatsReported)
32764            }
32765            "ATOM_THERMAL_THROTTLING" => Some(Self::AtomThermalThrottling),
32766            "ATOM_BIOMETRIC_ACQUIRED" => Some(Self::AtomBiometricAcquired),
32767            "ATOM_BIOMETRIC_AUTHENTICATED" => Some(Self::AtomBiometricAuthenticated),
32768            "ATOM_BIOMETRIC_ERROR_OCCURRED" => Some(Self::AtomBiometricErrorOccurred),
32769            "ATOM_UI_EVENT_REPORTED" => Some(Self::AtomUiEventReported),
32770            "ATOM_BATTERY_HEALTH_SNAPSHOT" => Some(Self::AtomBatteryHealthSnapshot),
32771            "ATOM_SLOW_IO" => Some(Self::AtomSlowIo),
32772            "ATOM_BATTERY_CAUSED_SHUTDOWN" => Some(Self::AtomBatteryCausedShutdown),
32773            "ATOM_PHONE_SERVICE_STATE_CHANGED" => {
32774                Some(Self::AtomPhoneServiceStateChanged)
32775            }
32776            "ATOM_PHONE_STATE_CHANGED" => Some(Self::AtomPhoneStateChanged),
32777            "ATOM_USER_RESTRICTION_CHANGED" => Some(Self::AtomUserRestrictionChanged),
32778            "ATOM_SETTINGS_UI_CHANGED" => Some(Self::AtomSettingsUiChanged),
32779            "ATOM_CONNECTIVITY_STATE_CHANGED" => Some(Self::AtomConnectivityStateChanged),
32780            "ATOM_SERVICE_STATE_CHANGED" => Some(Self::AtomServiceStateChanged),
32781            "ATOM_SERVICE_LAUNCH_REPORTED" => Some(Self::AtomServiceLaunchReported),
32782            "ATOM_FLAG_FLIP_UPDATE_OCCURRED" => Some(Self::AtomFlagFlipUpdateOccurred),
32783            "ATOM_BINARY_PUSH_STATE_CHANGED" => Some(Self::AtomBinaryPushStateChanged),
32784            "ATOM_DEVICE_POLICY_EVENT" => Some(Self::AtomDevicePolicyEvent),
32785            "ATOM_DOCS_UI_FILE_OP_CANCELED" => Some(Self::AtomDocsUiFileOpCanceled),
32786            "ATOM_DOCS_UI_FILE_OP_COPY_MOVE_MODE_REPORTED" => {
32787                Some(Self::AtomDocsUiFileOpCopyMoveModeReported)
32788            }
32789            "ATOM_DOCS_UI_FILE_OP_FAILURE" => Some(Self::AtomDocsUiFileOpFailure),
32790            "ATOM_DOCS_UI_PROVIDER_FILE_OP" => Some(Self::AtomDocsUiProviderFileOp),
32791            "ATOM_DOCS_UI_INVALID_SCOPED_ACCESS_REQUEST" => {
32792                Some(Self::AtomDocsUiInvalidScopedAccessRequest)
32793            }
32794            "ATOM_DOCS_UI_LAUNCH_REPORTED" => Some(Self::AtomDocsUiLaunchReported),
32795            "ATOM_DOCS_UI_ROOT_VISITED" => Some(Self::AtomDocsUiRootVisited),
32796            "ATOM_DOCS_UI_STARTUP_MS" => Some(Self::AtomDocsUiStartupMs),
32797            "ATOM_DOCS_UI_USER_ACTION_REPORTED" => {
32798                Some(Self::AtomDocsUiUserActionReported)
32799            }
32800            "ATOM_WIFI_ENABLED_STATE_CHANGED" => Some(Self::AtomWifiEnabledStateChanged),
32801            "ATOM_WIFI_RUNNING_STATE_CHANGED" => Some(Self::AtomWifiRunningStateChanged),
32802            "ATOM_APP_COMPACTED" => Some(Self::AtomAppCompacted),
32803            "ATOM_NETWORK_DNS_EVENT_REPORTED" => Some(Self::AtomNetworkDnsEventReported),
32804            "ATOM_DOCS_UI_PICKER_LAUNCHED_FROM_REPORTED" => {
32805                Some(Self::AtomDocsUiPickerLaunchedFromReported)
32806            }
32807            "ATOM_DOCS_UI_PICK_RESULT_REPORTED" => {
32808                Some(Self::AtomDocsUiPickResultReported)
32809            }
32810            "ATOM_DOCS_UI_SEARCH_MODE_REPORTED" => {
32811                Some(Self::AtomDocsUiSearchModeReported)
32812            }
32813            "ATOM_DOCS_UI_SEARCH_TYPE_REPORTED" => {
32814                Some(Self::AtomDocsUiSearchTypeReported)
32815            }
32816            "ATOM_DATA_STALL_EVENT" => Some(Self::AtomDataStallEvent),
32817            "ATOM_RESCUE_PARTY_RESET_REPORTED" => {
32818                Some(Self::AtomRescuePartyResetReported)
32819            }
32820            "ATOM_SIGNED_CONFIG_REPORTED" => Some(Self::AtomSignedConfigReported),
32821            "ATOM_GNSS_NI_EVENT_REPORTED" => Some(Self::AtomGnssNiEventReported),
32822            "ATOM_BLUETOOTH_LINK_LAYER_CONNECTION_EVENT" => {
32823                Some(Self::AtomBluetoothLinkLayerConnectionEvent)
32824            }
32825            "ATOM_BLUETOOTH_ACL_CONNECTION_STATE_CHANGED" => {
32826                Some(Self::AtomBluetoothAclConnectionStateChanged)
32827            }
32828            "ATOM_BLUETOOTH_SCO_CONNECTION_STATE_CHANGED" => {
32829                Some(Self::AtomBluetoothScoConnectionStateChanged)
32830            }
32831            "ATOM_APP_DOWNGRADED" => Some(Self::AtomAppDowngraded),
32832            "ATOM_APP_OPTIMIZED_AFTER_DOWNGRADED" => {
32833                Some(Self::AtomAppOptimizedAfterDowngraded)
32834            }
32835            "ATOM_LOW_STORAGE_STATE_CHANGED" => Some(Self::AtomLowStorageStateChanged),
32836            "ATOM_GNSS_NFW_NOTIFICATION_REPORTED" => {
32837                Some(Self::AtomGnssNfwNotificationReported)
32838            }
32839            "ATOM_GNSS_CONFIGURATION_REPORTED" => {
32840                Some(Self::AtomGnssConfigurationReported)
32841            }
32842            "ATOM_USB_PORT_OVERHEAT_EVENT_REPORTED" => {
32843                Some(Self::AtomUsbPortOverheatEventReported)
32844            }
32845            "ATOM_NFC_ERROR_OCCURRED" => Some(Self::AtomNfcErrorOccurred),
32846            "ATOM_NFC_STATE_CHANGED" => Some(Self::AtomNfcStateChanged),
32847            "ATOM_NFC_BEAM_OCCURRED" => Some(Self::AtomNfcBeamOccurred),
32848            "ATOM_NFC_CARDEMULATION_OCCURRED" => Some(Self::AtomNfcCardemulationOccurred),
32849            "ATOM_NFC_TAG_OCCURRED" => Some(Self::AtomNfcTagOccurred),
32850            "ATOM_NFC_HCE_TRANSACTION_OCCURRED" => {
32851                Some(Self::AtomNfcHceTransactionOccurred)
32852            }
32853            "ATOM_SE_STATE_CHANGED" => Some(Self::AtomSeStateChanged),
32854            "ATOM_SE_OMAPI_REPORTED" => Some(Self::AtomSeOmapiReported),
32855            "ATOM_BROADCAST_DISPATCH_LATENCY_REPORTED" => {
32856                Some(Self::AtomBroadcastDispatchLatencyReported)
32857            }
32858            "ATOM_ATTENTION_MANAGER_SERVICE_RESULT_REPORTED" => {
32859                Some(Self::AtomAttentionManagerServiceResultReported)
32860            }
32861            "ATOM_ADB_CONNECTION_CHANGED" => Some(Self::AtomAdbConnectionChanged),
32862            "ATOM_SPEECH_DSP_STAT_REPORTED" => Some(Self::AtomSpeechDspStatReported),
32863            "ATOM_USB_CONTAMINANT_REPORTED" => Some(Self::AtomUsbContaminantReported),
32864            "ATOM_WATCHDOG_ROLLBACK_OCCURRED" => Some(Self::AtomWatchdogRollbackOccurred),
32865            "ATOM_BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED" => {
32866                Some(Self::AtomBiometricSystemHealthIssueDetected)
32867            }
32868            "ATOM_BUBBLE_UI_CHANGED" => Some(Self::AtomBubbleUiChanged),
32869            "ATOM_SCHEDULED_JOB_CONSTRAINT_CHANGED" => {
32870                Some(Self::AtomScheduledJobConstraintChanged)
32871            }
32872            "ATOM_BLUETOOTH_ACTIVE_DEVICE_CHANGED" => {
32873                Some(Self::AtomBluetoothActiveDeviceChanged)
32874            }
32875            "ATOM_BLUETOOTH_A2DP_PLAYBACK_STATE_CHANGED" => {
32876                Some(Self::AtomBluetoothA2dpPlaybackStateChanged)
32877            }
32878            "ATOM_BLUETOOTH_A2DP_CODEC_CONFIG_CHANGED" => {
32879                Some(Self::AtomBluetoothA2dpCodecConfigChanged)
32880            }
32881            "ATOM_BLUETOOTH_A2DP_CODEC_CAPABILITY_CHANGED" => {
32882                Some(Self::AtomBluetoothA2dpCodecCapabilityChanged)
32883            }
32884            "ATOM_BLUETOOTH_A2DP_AUDIO_UNDERRUN_REPORTED" => {
32885                Some(Self::AtomBluetoothA2dpAudioUnderrunReported)
32886            }
32887            "ATOM_BLUETOOTH_A2DP_AUDIO_OVERRUN_REPORTED" => {
32888                Some(Self::AtomBluetoothA2dpAudioOverrunReported)
32889            }
32890            "ATOM_BLUETOOTH_DEVICE_RSSI_REPORTED" => {
32891                Some(Self::AtomBluetoothDeviceRssiReported)
32892            }
32893            "ATOM_BLUETOOTH_DEVICE_FAILED_CONTACT_COUNTER_REPORTED" => {
32894                Some(Self::AtomBluetoothDeviceFailedContactCounterReported)
32895            }
32896            "ATOM_BLUETOOTH_DEVICE_TX_POWER_LEVEL_REPORTED" => {
32897                Some(Self::AtomBluetoothDeviceTxPowerLevelReported)
32898            }
32899            "ATOM_BLUETOOTH_HCI_TIMEOUT_REPORTED" => {
32900                Some(Self::AtomBluetoothHciTimeoutReported)
32901            }
32902            "ATOM_BLUETOOTH_QUALITY_REPORT_REPORTED" => {
32903                Some(Self::AtomBluetoothQualityReportReported)
32904            }
32905            "ATOM_BLUETOOTH_DEVICE_INFO_REPORTED" => {
32906                Some(Self::AtomBluetoothDeviceInfoReported)
32907            }
32908            "ATOM_BLUETOOTH_REMOTE_VERSION_INFO_REPORTED" => {
32909                Some(Self::AtomBluetoothRemoteVersionInfoReported)
32910            }
32911            "ATOM_BLUETOOTH_SDP_ATTRIBUTE_REPORTED" => {
32912                Some(Self::AtomBluetoothSdpAttributeReported)
32913            }
32914            "ATOM_BLUETOOTH_BOND_STATE_CHANGED" => {
32915                Some(Self::AtomBluetoothBondStateChanged)
32916            }
32917            "ATOM_BLUETOOTH_CLASSIC_PAIRING_EVENT_REPORTED" => {
32918                Some(Self::AtomBluetoothClassicPairingEventReported)
32919            }
32920            "ATOM_BLUETOOTH_SMP_PAIRING_EVENT_REPORTED" => {
32921                Some(Self::AtomBluetoothSmpPairingEventReported)
32922            }
32923            "ATOM_SCREEN_TIMEOUT_EXTENSION_REPORTED" => {
32924                Some(Self::AtomScreenTimeoutExtensionReported)
32925            }
32926            "ATOM_PROCESS_START_TIME" => Some(Self::AtomProcessStartTime),
32927            "ATOM_PERMISSION_GRANT_REQUEST_RESULT_REPORTED" => {
32928                Some(Self::AtomPermissionGrantRequestResultReported)
32929            }
32930            "ATOM_BLUETOOTH_SOCKET_CONNECTION_STATE_CHANGED" => {
32931                Some(Self::AtomBluetoothSocketConnectionStateChanged)
32932            }
32933            "ATOM_DEVICE_IDENTIFIER_ACCESS_DENIED" => {
32934                Some(Self::AtomDeviceIdentifierAccessDenied)
32935            }
32936            "ATOM_BUBBLE_DEVELOPER_ERROR_REPORTED" => {
32937                Some(Self::AtomBubbleDeveloperErrorReported)
32938            }
32939            "ATOM_ASSIST_GESTURE_STAGE_REPORTED" => {
32940                Some(Self::AtomAssistGestureStageReported)
32941            }
32942            "ATOM_ASSIST_GESTURE_FEEDBACK_REPORTED" => {
32943                Some(Self::AtomAssistGestureFeedbackReported)
32944            }
32945            "ATOM_ASSIST_GESTURE_PROGRESS_REPORTED" => {
32946                Some(Self::AtomAssistGestureProgressReported)
32947            }
32948            "ATOM_TOUCH_GESTURE_CLASSIFIED" => Some(Self::AtomTouchGestureClassified),
32949            "ATOM_HIDDEN_API_USED" => Some(Self::AtomHiddenApiUsed),
32950            "ATOM_STYLE_UI_CHANGED" => Some(Self::AtomStyleUiChanged),
32951            "ATOM_PRIVACY_INDICATORS_INTERACTED" => {
32952                Some(Self::AtomPrivacyIndicatorsInteracted)
32953            }
32954            "ATOM_APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED" => {
32955                Some(Self::AtomAppInstallOnExternalStorageReported)
32956            }
32957            "ATOM_NETWORK_STACK_REPORTED" => Some(Self::AtomNetworkStackReported),
32958            "ATOM_APP_MOVED_STORAGE_REPORTED" => Some(Self::AtomAppMovedStorageReported),
32959            "ATOM_BIOMETRIC_ENROLLED" => Some(Self::AtomBiometricEnrolled),
32960            "ATOM_SYSTEM_SERVER_WATCHDOG_OCCURRED" => {
32961                Some(Self::AtomSystemServerWatchdogOccurred)
32962            }
32963            "ATOM_TOMB_STONE_OCCURRED" => Some(Self::AtomTombStoneOccurred),
32964            "ATOM_BLUETOOTH_CLASS_OF_DEVICE_REPORTED" => {
32965                Some(Self::AtomBluetoothClassOfDeviceReported)
32966            }
32967            "ATOM_INTELLIGENCE_EVENT_REPORTED" => {
32968                Some(Self::AtomIntelligenceEventReported)
32969            }
32970            "ATOM_THERMAL_THROTTLING_SEVERITY_STATE_CHANGED" => {
32971                Some(Self::AtomThermalThrottlingSeverityStateChanged)
32972            }
32973            "ATOM_ROLE_REQUEST_RESULT_REPORTED" => {
32974                Some(Self::AtomRoleRequestResultReported)
32975            }
32976            "ATOM_MEDIAMETRICS_AUDIOPOLICY_REPORTED" => {
32977                Some(Self::AtomMediametricsAudiopolicyReported)
32978            }
32979            "ATOM_MEDIAMETRICS_AUDIORECORD_REPORTED" => {
32980                Some(Self::AtomMediametricsAudiorecordReported)
32981            }
32982            "ATOM_MEDIAMETRICS_AUDIOTHREAD_REPORTED" => {
32983                Some(Self::AtomMediametricsAudiothreadReported)
32984            }
32985            "ATOM_MEDIAMETRICS_AUDIOTRACK_REPORTED" => {
32986                Some(Self::AtomMediametricsAudiotrackReported)
32987            }
32988            "ATOM_MEDIAMETRICS_CODEC_REPORTED" => {
32989                Some(Self::AtomMediametricsCodecReported)
32990            }
32991            "ATOM_MEDIAMETRICS_DRM_WIDEVINE_REPORTED" => {
32992                Some(Self::AtomMediametricsDrmWidevineReported)
32993            }
32994            "ATOM_MEDIAMETRICS_EXTRACTOR_REPORTED" => {
32995                Some(Self::AtomMediametricsExtractorReported)
32996            }
32997            "ATOM_MEDIAMETRICS_MEDIADRM_REPORTED" => {
32998                Some(Self::AtomMediametricsMediadrmReported)
32999            }
33000            "ATOM_MEDIAMETRICS_NUPLAYER_REPORTED" => {
33001                Some(Self::AtomMediametricsNuplayerReported)
33002            }
33003            "ATOM_MEDIAMETRICS_RECORDER_REPORTED" => {
33004                Some(Self::AtomMediametricsRecorderReported)
33005            }
33006            "ATOM_MEDIAMETRICS_DRMMANAGER_REPORTED" => {
33007                Some(Self::AtomMediametricsDrmmanagerReported)
33008            }
33009            "ATOM_CAR_POWER_STATE_CHANGED" => Some(Self::AtomCarPowerStateChanged),
33010            "ATOM_GARAGE_MODE_INFO" => Some(Self::AtomGarageModeInfo),
33011            "ATOM_TEST_ATOM_REPORTED" => Some(Self::AtomTestAtomReported),
33012            "ATOM_CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED" => {
33013                Some(Self::AtomContentCaptureCallerMismatchReported)
33014            }
33015            "ATOM_CONTENT_CAPTURE_SERVICE_EVENTS" => {
33016                Some(Self::AtomContentCaptureServiceEvents)
33017            }
33018            "ATOM_CONTENT_CAPTURE_SESSION_EVENTS" => {
33019                Some(Self::AtomContentCaptureSessionEvents)
33020            }
33021            "ATOM_CONTENT_CAPTURE_FLUSHED" => Some(Self::AtomContentCaptureFlushed),
33022            "ATOM_LOCATION_MANAGER_API_USAGE_REPORTED" => {
33023                Some(Self::AtomLocationManagerApiUsageReported)
33024            }
33025            "ATOM_REVIEW_PERMISSIONS_FRAGMENT_RESULT_REPORTED" => {
33026                Some(Self::AtomReviewPermissionsFragmentResultReported)
33027            }
33028            "ATOM_RUNTIME_PERMISSIONS_UPGRADE_RESULT" => {
33029                Some(Self::AtomRuntimePermissionsUpgradeResult)
33030            }
33031            "ATOM_GRANT_PERMISSIONS_ACTIVITY_BUTTON_ACTIONS" => {
33032                Some(Self::AtomGrantPermissionsActivityButtonActions)
33033            }
33034            "ATOM_LOCATION_ACCESS_CHECK_NOTIFICATION_ACTION" => {
33035                Some(Self::AtomLocationAccessCheckNotificationAction)
33036            }
33037            "ATOM_APP_PERMISSION_FRAGMENT_ACTION_REPORTED" => {
33038                Some(Self::AtomAppPermissionFragmentActionReported)
33039            }
33040            "ATOM_APP_PERMISSION_FRAGMENT_VIEWED" => {
33041                Some(Self::AtomAppPermissionFragmentViewed)
33042            }
33043            "ATOM_APP_PERMISSIONS_FRAGMENT_VIEWED" => {
33044                Some(Self::AtomAppPermissionsFragmentViewed)
33045            }
33046            "ATOM_PERMISSION_APPS_FRAGMENT_VIEWED" => {
33047                Some(Self::AtomPermissionAppsFragmentViewed)
33048            }
33049            "ATOM_TEXT_SELECTION_EVENT" => Some(Self::AtomTextSelectionEvent),
33050            "ATOM_TEXT_LINKIFY_EVENT" => Some(Self::AtomTextLinkifyEvent),
33051            "ATOM_CONVERSATION_ACTIONS_EVENT" => Some(Self::AtomConversationActionsEvent),
33052            "ATOM_LANGUAGE_DETECTION_EVENT" => Some(Self::AtomLanguageDetectionEvent),
33053            "ATOM_EXCLUSION_RECT_STATE_CHANGED" => {
33054                Some(Self::AtomExclusionRectStateChanged)
33055            }
33056            "ATOM_BACK_GESTURE_REPORTED_REPORTED" => {
33057                Some(Self::AtomBackGestureReportedReported)
33058            }
33059            "ATOM_UPDATE_ENGINE_UPDATE_ATTEMPT_REPORTED" => {
33060                Some(Self::AtomUpdateEngineUpdateAttemptReported)
33061            }
33062            "ATOM_UPDATE_ENGINE_SUCCESSFUL_UPDATE_REPORTED" => {
33063                Some(Self::AtomUpdateEngineSuccessfulUpdateReported)
33064            }
33065            "ATOM_CAMERA_ACTION_EVENT" => Some(Self::AtomCameraActionEvent),
33066            "ATOM_APP_COMPATIBILITY_CHANGE_REPORTED" => {
33067                Some(Self::AtomAppCompatibilityChangeReported)
33068            }
33069            "ATOM_PERFETTO_UPLOADED" => Some(Self::AtomPerfettoUploaded),
33070            "ATOM_VMS_CLIENT_CONNECTION_STATE_CHANGED" => {
33071                Some(Self::AtomVmsClientConnectionStateChanged)
33072            }
33073            "ATOM_MEDIA_PROVIDER_SCAN_OCCURRED" => {
33074                Some(Self::AtomMediaProviderScanOccurred)
33075            }
33076            "ATOM_MEDIA_CONTENT_DELETED" => Some(Self::AtomMediaContentDeleted),
33077            "ATOM_MEDIA_PROVIDER_PERMISSION_REQUESTED" => {
33078                Some(Self::AtomMediaProviderPermissionRequested)
33079            }
33080            "ATOM_MEDIA_PROVIDER_SCHEMA_CHANGED" => {
33081                Some(Self::AtomMediaProviderSchemaChanged)
33082            }
33083            "ATOM_MEDIA_PROVIDER_IDLE_MAINTENANCE_FINISHED" => {
33084                Some(Self::AtomMediaProviderIdleMaintenanceFinished)
33085            }
33086            "ATOM_REBOOT_ESCROW_RECOVERY_REPORTED" => {
33087                Some(Self::AtomRebootEscrowRecoveryReported)
33088            }
33089            "ATOM_BOOT_TIME_EVENT_DURATION_REPORTED" => {
33090                Some(Self::AtomBootTimeEventDurationReported)
33091            }
33092            "ATOM_BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED" => {
33093                Some(Self::AtomBootTimeEventElapsedTimeReported)
33094            }
33095            "ATOM_BOOT_TIME_EVENT_UTC_TIME_REPORTED" => {
33096                Some(Self::AtomBootTimeEventUtcTimeReported)
33097            }
33098            "ATOM_BOOT_TIME_EVENT_ERROR_CODE_REPORTED" => {
33099                Some(Self::AtomBootTimeEventErrorCodeReported)
33100            }
33101            "ATOM_USERSPACE_REBOOT_REPORTED" => Some(Self::AtomUserspaceRebootReported),
33102            "ATOM_NOTIFICATION_REPORTED" => Some(Self::AtomNotificationReported),
33103            "ATOM_NOTIFICATION_PANEL_REPORTED" => {
33104                Some(Self::AtomNotificationPanelReported)
33105            }
33106            "ATOM_NOTIFICATION_CHANNEL_MODIFIED" => {
33107                Some(Self::AtomNotificationChannelModified)
33108            }
33109            "ATOM_INTEGRITY_CHECK_RESULT_REPORTED" => {
33110                Some(Self::AtomIntegrityCheckResultReported)
33111            }
33112            "ATOM_INTEGRITY_RULES_PUSHED" => Some(Self::AtomIntegrityRulesPushed),
33113            "ATOM_CB_MESSAGE_REPORTED" => Some(Self::AtomCbMessageReported),
33114            "ATOM_CB_MESSAGE_ERROR" => Some(Self::AtomCbMessageError),
33115            "ATOM_WIFI_HEALTH_STAT_REPORTED" => Some(Self::AtomWifiHealthStatReported),
33116            "ATOM_WIFI_FAILURE_STAT_REPORTED" => Some(Self::AtomWifiFailureStatReported),
33117            "ATOM_WIFI_CONNECTION_RESULT_REPORTED" => {
33118                Some(Self::AtomWifiConnectionResultReported)
33119            }
33120            "ATOM_APP_FREEZE_CHANGED" => Some(Self::AtomAppFreezeChanged),
33121            "ATOM_SNAPSHOT_MERGE_REPORTED" => Some(Self::AtomSnapshotMergeReported),
33122            "ATOM_FOREGROUND_SERVICE_APP_OP_SESSION_ENDED" => {
33123                Some(Self::AtomForegroundServiceAppOpSessionEnded)
33124            }
33125            "ATOM_DISPLAY_JANK_REPORTED" => Some(Self::AtomDisplayJankReported),
33126            "ATOM_APP_STANDBY_BUCKET_CHANGED" => Some(Self::AtomAppStandbyBucketChanged),
33127            "ATOM_SHARESHEET_STARTED" => Some(Self::AtomSharesheetStarted),
33128            "ATOM_RANKING_SELECTED" => Some(Self::AtomRankingSelected),
33129            "ATOM_TVSETTINGS_UI_INTERACTED" => Some(Self::AtomTvsettingsUiInteracted),
33130            "ATOM_LAUNCHER_SNAPSHOT" => Some(Self::AtomLauncherSnapshot),
33131            "ATOM_PACKAGE_INSTALLER_V2_REPORTED" => {
33132                Some(Self::AtomPackageInstallerV2Reported)
33133            }
33134            "ATOM_USER_LIFECYCLE_JOURNEY_REPORTED" => {
33135                Some(Self::AtomUserLifecycleJourneyReported)
33136            }
33137            "ATOM_USER_LIFECYCLE_EVENT_OCCURRED" => {
33138                Some(Self::AtomUserLifecycleEventOccurred)
33139            }
33140            "ATOM_ACCESSIBILITY_SHORTCUT_REPORTED" => {
33141                Some(Self::AtomAccessibilityShortcutReported)
33142            }
33143            "ATOM_ACCESSIBILITY_SERVICE_REPORTED" => {
33144                Some(Self::AtomAccessibilityServiceReported)
33145            }
33146            "ATOM_DOCS_UI_DRAG_AND_DROP_REPORTED" => {
33147                Some(Self::AtomDocsUiDragAndDropReported)
33148            }
33149            "ATOM_APP_USAGE_EVENT_OCCURRED" => Some(Self::AtomAppUsageEventOccurred),
33150            "ATOM_AUTO_REVOKE_NOTIFICATION_CLICKED" => {
33151                Some(Self::AtomAutoRevokeNotificationClicked)
33152            }
33153            "ATOM_AUTO_REVOKE_FRAGMENT_APP_VIEWED" => {
33154                Some(Self::AtomAutoRevokeFragmentAppViewed)
33155            }
33156            "ATOM_AUTO_REVOKED_APP_INTERACTION" => {
33157                Some(Self::AtomAutoRevokedAppInteraction)
33158            }
33159            "ATOM_APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION" => {
33160                Some(Self::AtomAppPermissionGroupsFragmentAutoRevokeAction)
33161            }
33162            "ATOM_EVS_USAGE_STATS_REPORTED" => Some(Self::AtomEvsUsageStatsReported),
33163            "ATOM_AUDIO_POWER_USAGE_DATA_REPORTED" => {
33164                Some(Self::AtomAudioPowerUsageDataReported)
33165            }
33166            "ATOM_TV_TUNER_STATE_CHANGED" => Some(Self::AtomTvTunerStateChanged),
33167            "ATOM_MEDIAOUTPUT_OP_SWITCH_REPORTED" => {
33168                Some(Self::AtomMediaoutputOpSwitchReported)
33169            }
33170            "ATOM_CB_MESSAGE_FILTERED" => Some(Self::AtomCbMessageFiltered),
33171            "ATOM_TV_TUNER_DVR_STATUS" => Some(Self::AtomTvTunerDvrStatus),
33172            "ATOM_TV_CAS_SESSION_OPEN_STATUS" => Some(Self::AtomTvCasSessionOpenStatus),
33173            "ATOM_ASSISTANT_INVOCATION_REPORTED" => {
33174                Some(Self::AtomAssistantInvocationReported)
33175            }
33176            "ATOM_DISPLAY_WAKE_REPORTED" => Some(Self::AtomDisplayWakeReported),
33177            "ATOM_CAR_USER_HAL_MODIFY_USER_REQUEST_REPORTED" => {
33178                Some(Self::AtomCarUserHalModifyUserRequestReported)
33179            }
33180            "ATOM_CAR_USER_HAL_MODIFY_USER_RESPONSE_REPORTED" => {
33181                Some(Self::AtomCarUserHalModifyUserResponseReported)
33182            }
33183            "ATOM_CAR_USER_HAL_POST_SWITCH_RESPONSE_REPORTED" => {
33184                Some(Self::AtomCarUserHalPostSwitchResponseReported)
33185            }
33186            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_REQUEST_REPORTED" => {
33187                Some(Self::AtomCarUserHalInitialUserInfoRequestReported)
33188            }
33189            "ATOM_CAR_USER_HAL_INITIAL_USER_INFO_RESPONSE_REPORTED" => {
33190                Some(Self::AtomCarUserHalInitialUserInfoResponseReported)
33191            }
33192            "ATOM_CAR_USER_HAL_USER_ASSOCIATION_REQUEST_REPORTED" => {
33193                Some(Self::AtomCarUserHalUserAssociationRequestReported)
33194            }
33195            "ATOM_CAR_USER_HAL_SET_USER_ASSOCIATION_RESPONSE_REPORTED" => {
33196                Some(Self::AtomCarUserHalSetUserAssociationResponseReported)
33197            }
33198            "ATOM_NETWORK_IP_PROVISIONING_REPORTED" => {
33199                Some(Self::AtomNetworkIpProvisioningReported)
33200            }
33201            "ATOM_NETWORK_DHCP_RENEW_REPORTED" => {
33202                Some(Self::AtomNetworkDhcpRenewReported)
33203            }
33204            "ATOM_NETWORK_VALIDATION_REPORTED" => {
33205                Some(Self::AtomNetworkValidationReported)
33206            }
33207            "ATOM_NETWORK_STACK_QUIRK_REPORTED" => {
33208                Some(Self::AtomNetworkStackQuirkReported)
33209            }
33210            "ATOM_MEDIAMETRICS_AUDIORECORDDEVICEUSAGE_REPORTED" => {
33211                Some(Self::AtomMediametricsAudiorecorddeviceusageReported)
33212            }
33213            "ATOM_MEDIAMETRICS_AUDIOTHREADDEVICEUSAGE_REPORTED" => {
33214                Some(Self::AtomMediametricsAudiothreaddeviceusageReported)
33215            }
33216            "ATOM_MEDIAMETRICS_AUDIOTRACKDEVICEUSAGE_REPORTED" => {
33217                Some(Self::AtomMediametricsAudiotrackdeviceusageReported)
33218            }
33219            "ATOM_MEDIAMETRICS_AUDIODEVICECONNECTION_REPORTED" => {
33220                Some(Self::AtomMediametricsAudiodeviceconnectionReported)
33221            }
33222            "ATOM_BLOB_COMMITTED" => Some(Self::AtomBlobCommitted),
33223            "ATOM_BLOB_LEASED" => Some(Self::AtomBlobLeased),
33224            "ATOM_BLOB_OPENED" => Some(Self::AtomBlobOpened),
33225            "ATOM_CONTACTS_PROVIDER_STATUS_REPORTED" => {
33226                Some(Self::AtomContactsProviderStatusReported)
33227            }
33228            "ATOM_KEYSTORE_KEY_EVENT_REPORTED" => {
33229                Some(Self::AtomKeystoreKeyEventReported)
33230            }
33231            "ATOM_NETWORK_TETHERING_REPORTED" => Some(Self::AtomNetworkTetheringReported),
33232            "ATOM_IME_TOUCH_REPORTED" => Some(Self::AtomImeTouchReported),
33233            "ATOM_UI_INTERACTION_FRAME_INFO_REPORTED" => {
33234                Some(Self::AtomUiInteractionFrameInfoReported)
33235            }
33236            "ATOM_UI_ACTION_LATENCY_REPORTED" => Some(Self::AtomUiActionLatencyReported),
33237            "ATOM_WIFI_DISCONNECT_REPORTED" => Some(Self::AtomWifiDisconnectReported),
33238            "ATOM_WIFI_CONNECTION_STATE_CHANGED" => {
33239                Some(Self::AtomWifiConnectionStateChanged)
33240            }
33241            "ATOM_HDMI_CEC_ACTIVE_SOURCE_CHANGED" => {
33242                Some(Self::AtomHdmiCecActiveSourceChanged)
33243            }
33244            "ATOM_HDMI_CEC_MESSAGE_REPORTED" => Some(Self::AtomHdmiCecMessageReported),
33245            "ATOM_AIRPLANE_MODE" => Some(Self::AtomAirplaneMode),
33246            "ATOM_MODEM_RESTART" => Some(Self::AtomModemRestart),
33247            "ATOM_CARRIER_ID_MISMATCH_REPORTED" => {
33248                Some(Self::AtomCarrierIdMismatchReported)
33249            }
33250            "ATOM_CARRIER_ID_TABLE_UPDATED" => Some(Self::AtomCarrierIdTableUpdated),
33251            "ATOM_DATA_STALL_RECOVERY_REPORTED" => {
33252                Some(Self::AtomDataStallRecoveryReported)
33253            }
33254            "ATOM_MEDIAMETRICS_MEDIAPARSER_REPORTED" => {
33255                Some(Self::AtomMediametricsMediaparserReported)
33256            }
33257            "ATOM_TLS_HANDSHAKE_REPORTED" => Some(Self::AtomTlsHandshakeReported),
33258            "ATOM_TEXT_CLASSIFIER_API_USAGE_REPORTED" => {
33259                Some(Self::AtomTextClassifierApiUsageReported)
33260            }
33261            "ATOM_CAR_WATCHDOG_KILL_STATS_REPORTED" => {
33262                Some(Self::AtomCarWatchdogKillStatsReported)
33263            }
33264            "ATOM_MEDIAMETRICS_PLAYBACK_REPORTED" => {
33265                Some(Self::AtomMediametricsPlaybackReported)
33266            }
33267            "ATOM_MEDIA_NETWORK_INFO_CHANGED" => Some(Self::AtomMediaNetworkInfoChanged),
33268            "ATOM_MEDIA_PLAYBACK_STATE_CHANGED" => {
33269                Some(Self::AtomMediaPlaybackStateChanged)
33270            }
33271            "ATOM_MEDIA_PLAYBACK_ERROR_REPORTED" => {
33272                Some(Self::AtomMediaPlaybackErrorReported)
33273            }
33274            "ATOM_MEDIA_PLAYBACK_TRACK_CHANGED" => {
33275                Some(Self::AtomMediaPlaybackTrackChanged)
33276            }
33277            "ATOM_WIFI_SCAN_REPORTED" => Some(Self::AtomWifiScanReported),
33278            "ATOM_WIFI_PNO_SCAN_REPORTED" => Some(Self::AtomWifiPnoScanReported),
33279            "ATOM_TIF_TUNE_CHANGED" => Some(Self::AtomTifTuneChanged),
33280            "ATOM_AUTO_ROTATE_REPORTED" => Some(Self::AtomAutoRotateReported),
33281            "ATOM_PERFETTO_TRIGGER" => Some(Self::AtomPerfettoTrigger),
33282            "ATOM_TRANSCODING_DATA" => Some(Self::AtomTranscodingData),
33283            "ATOM_IMS_SERVICE_ENTITLEMENT_UPDATED" => {
33284                Some(Self::AtomImsServiceEntitlementUpdated)
33285            }
33286            "ATOM_DEVICE_ROTATED" => Some(Self::AtomDeviceRotated),
33287            "ATOM_SIM_SPECIFIC_SETTINGS_RESTORED" => {
33288                Some(Self::AtomSimSpecificSettingsRestored)
33289            }
33290            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_REPORTED" => {
33291                Some(Self::AtomTextClassifierDownloadReported)
33292            }
33293            "ATOM_PIN_STORAGE_EVENT" => Some(Self::AtomPinStorageEvent),
33294            "ATOM_FACE_DOWN_REPORTED" => Some(Self::AtomFaceDownReported),
33295            "ATOM_BLUETOOTH_HAL_CRASH_REASON_REPORTED" => {
33296                Some(Self::AtomBluetoothHalCrashReasonReported)
33297            }
33298            "ATOM_REBOOT_ESCROW_PREPARATION_REPORTED" => {
33299                Some(Self::AtomRebootEscrowPreparationReported)
33300            }
33301            "ATOM_REBOOT_ESCROW_LSKF_CAPTURE_REPORTED" => {
33302                Some(Self::AtomRebootEscrowLskfCaptureReported)
33303            }
33304            "ATOM_REBOOT_ESCROW_REBOOT_REPORTED" => {
33305                Some(Self::AtomRebootEscrowRebootReported)
33306            }
33307            "ATOM_BINDER_LATENCY_REPORTED" => Some(Self::AtomBinderLatencyReported),
33308            "ATOM_MEDIAMETRICS_AAUDIOSTREAM_REPORTED" => {
33309                Some(Self::AtomMediametricsAaudiostreamReported)
33310            }
33311            "ATOM_MEDIA_TRANSCODING_SESSION_ENDED" => {
33312                Some(Self::AtomMediaTranscodingSessionEnded)
33313            }
33314            "ATOM_MAGNIFICATION_USAGE_REPORTED" => {
33315                Some(Self::AtomMagnificationUsageReported)
33316            }
33317            "ATOM_MAGNIFICATION_MODE_WITH_IME_ON_REPORTED" => {
33318                Some(Self::AtomMagnificationModeWithImeOnReported)
33319            }
33320            "ATOM_APP_SEARCH_CALL_STATS_REPORTED" => {
33321                Some(Self::AtomAppSearchCallStatsReported)
33322            }
33323            "ATOM_APP_SEARCH_PUT_DOCUMENT_STATS_REPORTED" => {
33324                Some(Self::AtomAppSearchPutDocumentStatsReported)
33325            }
33326            "ATOM_DEVICE_CONTROL_CHANGED" => Some(Self::AtomDeviceControlChanged),
33327            "ATOM_DEVICE_STATE_CHANGED" => Some(Self::AtomDeviceStateChanged),
33328            "ATOM_INPUTDEVICE_REGISTERED" => Some(Self::AtomInputdeviceRegistered),
33329            "ATOM_SMARTSPACE_CARD_REPORTED" => Some(Self::AtomSmartspaceCardReported),
33330            "ATOM_AUTH_PROMPT_AUTHENTICATE_INVOKED" => {
33331                Some(Self::AtomAuthPromptAuthenticateInvoked)
33332            }
33333            "ATOM_AUTH_MANAGER_CAN_AUTHENTICATE_INVOKED" => {
33334                Some(Self::AtomAuthManagerCanAuthenticateInvoked)
33335            }
33336            "ATOM_AUTH_ENROLL_ACTION_INVOKED" => Some(Self::AtomAuthEnrollActionInvoked),
33337            "ATOM_AUTH_DEPRECATED_API_USED" => Some(Self::AtomAuthDeprecatedApiUsed),
33338            "ATOM_UNATTENDED_REBOOT_OCCURRED" => Some(Self::AtomUnattendedRebootOccurred),
33339            "ATOM_LONG_REBOOT_BLOCKING_REPORTED" => {
33340                Some(Self::AtomLongRebootBlockingReported)
33341            }
33342            "ATOM_LOCATION_TIME_ZONE_PROVIDER_STATE_CHANGED" => {
33343                Some(Self::AtomLocationTimeZoneProviderStateChanged)
33344            }
33345            "ATOM_FDTRACK_EVENT_OCCURRED" => Some(Self::AtomFdtrackEventOccurred),
33346            "ATOM_TIMEOUT_AUTO_EXTENDED_REPORTED" => {
33347                Some(Self::AtomTimeoutAutoExtendedReported)
33348            }
33349            "ATOM_ALARM_BATCH_DELIVERED" => Some(Self::AtomAlarmBatchDelivered),
33350            "ATOM_ALARM_SCHEDULED" => Some(Self::AtomAlarmScheduled),
33351            "ATOM_CAR_WATCHDOG_IO_OVERUSE_STATS_REPORTED" => {
33352                Some(Self::AtomCarWatchdogIoOveruseStatsReported)
33353            }
33354            "ATOM_USER_LEVEL_HIBERNATION_STATE_CHANGED" => {
33355                Some(Self::AtomUserLevelHibernationStateChanged)
33356            }
33357            "ATOM_APP_SEARCH_INITIALIZE_STATS_REPORTED" => {
33358                Some(Self::AtomAppSearchInitializeStatsReported)
33359            }
33360            "ATOM_APP_SEARCH_QUERY_STATS_REPORTED" => {
33361                Some(Self::AtomAppSearchQueryStatsReported)
33362            }
33363            "ATOM_APP_PROCESS_DIED" => Some(Self::AtomAppProcessDied),
33364            "ATOM_NETWORK_IP_REACHABILITY_MONITOR_REPORTED" => {
33365                Some(Self::AtomNetworkIpReachabilityMonitorReported)
33366            }
33367            "ATOM_SLOW_INPUT_EVENT_REPORTED" => Some(Self::AtomSlowInputEventReported),
33368            "ATOM_ANR_OCCURRED_PROCESSING_STARTED" => {
33369                Some(Self::AtomAnrOccurredProcessingStarted)
33370            }
33371            "ATOM_APP_SEARCH_REMOVE_STATS_REPORTED" => {
33372                Some(Self::AtomAppSearchRemoveStatsReported)
33373            }
33374            "ATOM_MEDIA_CODEC_REPORTED" => Some(Self::AtomMediaCodecReported),
33375            "ATOM_PERMISSION_USAGE_FRAGMENT_INTERACTION" => {
33376                Some(Self::AtomPermissionUsageFragmentInteraction)
33377            }
33378            "ATOM_PERMISSION_DETAILS_INTERACTION" => {
33379                Some(Self::AtomPermissionDetailsInteraction)
33380            }
33381            "ATOM_PRIVACY_SENSOR_TOGGLE_INTERACTION" => {
33382                Some(Self::AtomPrivacySensorToggleInteraction)
33383            }
33384            "ATOM_PRIVACY_TOGGLE_DIALOG_INTERACTION" => {
33385                Some(Self::AtomPrivacyToggleDialogInteraction)
33386            }
33387            "ATOM_APP_SEARCH_OPTIMIZE_STATS_REPORTED" => {
33388                Some(Self::AtomAppSearchOptimizeStatsReported)
33389            }
33390            "ATOM_NON_A11Y_TOOL_SERVICE_WARNING_REPORT" => {
33391                Some(Self::AtomNonA11yToolServiceWarningReport)
33392            }
33393            "ATOM_APP_COMPAT_STATE_CHANGED" => Some(Self::AtomAppCompatStateChanged),
33394            "ATOM_SIZE_COMPAT_RESTART_BUTTON_EVENT_REPORTED" => {
33395                Some(Self::AtomSizeCompatRestartButtonEventReported)
33396            }
33397            "ATOM_SPLITSCREEN_UI_CHANGED" => Some(Self::AtomSplitscreenUiChanged),
33398            "ATOM_NETWORK_DNS_HANDSHAKE_REPORTED" => {
33399                Some(Self::AtomNetworkDnsHandshakeReported)
33400            }
33401            "ATOM_BLUETOOTH_CODE_PATH_COUNTER" => {
33402                Some(Self::AtomBluetoothCodePathCounter)
33403            }
33404            "ATOM_BLUETOOTH_LE_BATCH_SCAN_REPORT_DELAY" => {
33405                Some(Self::AtomBluetoothLeBatchScanReportDelay)
33406            }
33407            "ATOM_ACCESSIBILITY_FLOATING_MENU_UI_CHANGED" => {
33408                Some(Self::AtomAccessibilityFloatingMenuUiChanged)
33409            }
33410            "ATOM_NEURALNETWORKS_COMPILATION_COMPLETED" => {
33411                Some(Self::AtomNeuralnetworksCompilationCompleted)
33412            }
33413            "ATOM_NEURALNETWORKS_EXECUTION_COMPLETED" => {
33414                Some(Self::AtomNeuralnetworksExecutionCompleted)
33415            }
33416            "ATOM_NEURALNETWORKS_COMPILATION_FAILED" => {
33417                Some(Self::AtomNeuralnetworksCompilationFailed)
33418            }
33419            "ATOM_NEURALNETWORKS_EXECUTION_FAILED" => {
33420                Some(Self::AtomNeuralnetworksExecutionFailed)
33421            }
33422            "ATOM_CONTEXT_HUB_BOOTED" => Some(Self::AtomContextHubBooted),
33423            "ATOM_CONTEXT_HUB_RESTARTED" => Some(Self::AtomContextHubRestarted),
33424            "ATOM_CONTEXT_HUB_LOADED_NANOAPP_SNAPSHOT_REPORTED" => {
33425                Some(Self::AtomContextHubLoadedNanoappSnapshotReported)
33426            }
33427            "ATOM_CHRE_CODE_DOWNLOAD_TRANSACTED" => {
33428                Some(Self::AtomChreCodeDownloadTransacted)
33429            }
33430            "ATOM_UWB_SESSION_INITED" => Some(Self::AtomUwbSessionInited),
33431            "ATOM_UWB_SESSION_CLOSED" => Some(Self::AtomUwbSessionClosed),
33432            "ATOM_UWB_FIRST_RANGING_RECEIVED" => Some(Self::AtomUwbFirstRangingReceived),
33433            "ATOM_UWB_RANGING_MEASUREMENT_RECEIVED" => {
33434                Some(Self::AtomUwbRangingMeasurementReceived)
33435            }
33436            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_SCHEDULED" => {
33437                Some(Self::AtomTextClassifierDownloadWorkScheduled)
33438            }
33439            "ATOM_TEXT_CLASSIFIER_DOWNLOAD_WORK_COMPLETED" => {
33440                Some(Self::AtomTextClassifierDownloadWorkCompleted)
33441            }
33442            "ATOM_CLIPBOARD_CLEARED" => Some(Self::AtomClipboardCleared),
33443            "ATOM_VM_CREATION_REQUESTED" => Some(Self::AtomVmCreationRequested),
33444            "ATOM_NEARBY_DEVICE_SCAN_STATE_CHANGED" => {
33445                Some(Self::AtomNearbyDeviceScanStateChanged)
33446            }
33447            "ATOM_APPLICATION_LOCALES_CHANGED" => {
33448                Some(Self::AtomApplicationLocalesChanged)
33449            }
33450            "ATOM_MEDIAMETRICS_AUDIOTRACKSTATUS_REPORTED" => {
33451                Some(Self::AtomMediametricsAudiotrackstatusReported)
33452            }
33453            "ATOM_FOLD_STATE_DURATION_REPORTED" => {
33454                Some(Self::AtomFoldStateDurationReported)
33455            }
33456            "ATOM_LOCATION_TIME_ZONE_PROVIDER_CONTROLLER_STATE_CHANGED" => {
33457                Some(Self::AtomLocationTimeZoneProviderControllerStateChanged)
33458            }
33459            "ATOM_DISPLAY_HBM_STATE_CHANGED" => Some(Self::AtomDisplayHbmStateChanged),
33460            "ATOM_DISPLAY_HBM_BRIGHTNESS_CHANGED" => {
33461                Some(Self::AtomDisplayHbmBrightnessChanged)
33462            }
33463            "ATOM_PERSISTENT_URI_PERMISSIONS_FLUSHED" => {
33464                Some(Self::AtomPersistentUriPermissionsFlushed)
33465            }
33466            "ATOM_EARLY_BOOT_COMP_OS_ARTIFACTS_CHECK_REPORTED" => {
33467                Some(Self::AtomEarlyBootCompOsArtifactsCheckReported)
33468            }
33469            "ATOM_VBMETA_DIGEST_REPORTED" => Some(Self::AtomVbmetaDigestReported),
33470            "ATOM_APEX_INFO_GATHERED" => Some(Self::AtomApexInfoGathered),
33471            "ATOM_PVM_INFO_GATHERED" => Some(Self::AtomPvmInfoGathered),
33472            "ATOM_WEAR_SETTINGS_UI_INTERACTED" => {
33473                Some(Self::AtomWearSettingsUiInteracted)
33474            }
33475            "ATOM_TRACING_SERVICE_REPORT_EVENT" => {
33476                Some(Self::AtomTracingServiceReportEvent)
33477            }
33478            "ATOM_MEDIAMETRICS_AUDIORECORDSTATUS_REPORTED" => {
33479                Some(Self::AtomMediametricsAudiorecordstatusReported)
33480            }
33481            "ATOM_LAUNCHER_LATENCY" => Some(Self::AtomLauncherLatency),
33482            "ATOM_DROPBOX_ENTRY_DROPPED" => Some(Self::AtomDropboxEntryDropped),
33483            "ATOM_WIFI_P2P_CONNECTION_REPORTED" => {
33484                Some(Self::AtomWifiP2pConnectionReported)
33485            }
33486            "ATOM_GAME_STATE_CHANGED" => Some(Self::AtomGameStateChanged),
33487            "ATOM_HOTWORD_DETECTOR_CREATE_REQUESTED" => {
33488                Some(Self::AtomHotwordDetectorCreateRequested)
33489            }
33490            "ATOM_HOTWORD_DETECTION_SERVICE_INIT_RESULT_REPORTED" => {
33491                Some(Self::AtomHotwordDetectionServiceInitResultReported)
33492            }
33493            "ATOM_HOTWORD_DETECTION_SERVICE_RESTARTED" => {
33494                Some(Self::AtomHotwordDetectionServiceRestarted)
33495            }
33496            "ATOM_HOTWORD_DETECTOR_KEYPHRASE_TRIGGERED" => {
33497                Some(Self::AtomHotwordDetectorKeyphraseTriggered)
33498            }
33499            "ATOM_HOTWORD_DETECTOR_EVENTS" => Some(Self::AtomHotwordDetectorEvents),
33500            "ATOM_BOOT_COMPLETED_BROADCAST_COMPLETION_LATENCY_REPORTED" => {
33501                Some(Self::AtomBootCompletedBroadcastCompletionLatencyReported)
33502            }
33503            "ATOM_CONTACTS_INDEXER_UPDATE_STATS_REPORTED" => {
33504                Some(Self::AtomContactsIndexerUpdateStatsReported)
33505            }
33506            "ATOM_APP_BACKGROUND_RESTRICTIONS_INFO" => {
33507                Some(Self::AtomAppBackgroundRestrictionsInfo)
33508            }
33509            "ATOM_MMS_SMS_PROVIDER_GET_THREAD_ID_FAILED" => {
33510                Some(Self::AtomMmsSmsProviderGetThreadIdFailed)
33511            }
33512            "ATOM_MMS_SMS_DATABASE_HELPER_ON_UPGRADE_FAILED" => {
33513                Some(Self::AtomMmsSmsDatabaseHelperOnUpgradeFailed)
33514            }
33515            "ATOM_PERMISSION_REMINDER_NOTIFICATION_INTERACTED" => {
33516                Some(Self::AtomPermissionReminderNotificationInteracted)
33517            }
33518            "ATOM_RECENT_PERMISSION_DECISIONS_INTERACTED" => {
33519                Some(Self::AtomRecentPermissionDecisionsInteracted)
33520            }
33521            "ATOM_GNSS_PSDS_DOWNLOAD_REPORTED" => {
33522                Some(Self::AtomGnssPsdsDownloadReported)
33523            }
33524            "ATOM_LE_AUDIO_CONNECTION_SESSION_REPORTED" => {
33525                Some(Self::AtomLeAudioConnectionSessionReported)
33526            }
33527            "ATOM_LE_AUDIO_BROADCAST_SESSION_REPORTED" => {
33528                Some(Self::AtomLeAudioBroadcastSessionReported)
33529            }
33530            "ATOM_DREAM_UI_EVENT_REPORTED" => Some(Self::AtomDreamUiEventReported),
33531            "ATOM_TASK_MANAGER_EVENT_REPORTED" => {
33532                Some(Self::AtomTaskManagerEventReported)
33533            }
33534            "ATOM_CDM_ASSOCIATION_ACTION" => Some(Self::AtomCdmAssociationAction),
33535            "ATOM_MAGNIFICATION_TRIPLE_TAP_AND_HOLD_ACTIVATED_SESSION_REPORTED" => {
33536                Some(Self::AtomMagnificationTripleTapAndHoldActivatedSessionReported)
33537            }
33538            "ATOM_MAGNIFICATION_FOLLOW_TYPING_FOCUS_ACTIVATED_SESSION_REPORTED" => {
33539                Some(Self::AtomMagnificationFollowTypingFocusActivatedSessionReported)
33540            }
33541            "ATOM_ACCESSIBILITY_TEXT_READING_OPTIONS_CHANGED" => {
33542                Some(Self::AtomAccessibilityTextReadingOptionsChanged)
33543            }
33544            "ATOM_WIFI_SETUP_FAILURE_CRASH_REPORTED" => {
33545                Some(Self::AtomWifiSetupFailureCrashReported)
33546            }
33547            "ATOM_UWB_DEVICE_ERROR_REPORTED" => Some(Self::AtomUwbDeviceErrorReported),
33548            "ATOM_ISOLATED_COMPILATION_SCHEDULED" => {
33549                Some(Self::AtomIsolatedCompilationScheduled)
33550            }
33551            "ATOM_ISOLATED_COMPILATION_ENDED" => Some(Self::AtomIsolatedCompilationEnded),
33552            "ATOM_ONS_OPPORTUNISTIC_ESIM_PROVISIONING_COMPLETE" => {
33553                Some(Self::AtomOnsOpportunisticEsimProvisioningComplete)
33554            }
33555            "ATOM_SYSTEM_SERVER_PRE_WATCHDOG_OCCURRED" => {
33556                Some(Self::AtomSystemServerPreWatchdogOccurred)
33557            }
33558            "ATOM_TELEPHONY_ANOMALY_DETECTED" => Some(Self::AtomTelephonyAnomalyDetected),
33559            "ATOM_LETTERBOX_POSITION_CHANGED" => Some(Self::AtomLetterboxPositionChanged),
33560            "ATOM_REMOTE_KEY_PROVISIONING_ATTEMPT" => {
33561                Some(Self::AtomRemoteKeyProvisioningAttempt)
33562            }
33563            "ATOM_REMOTE_KEY_PROVISIONING_NETWORK_INFO" => {
33564                Some(Self::AtomRemoteKeyProvisioningNetworkInfo)
33565            }
33566            "ATOM_REMOTE_KEY_PROVISIONING_TIMING" => {
33567                Some(Self::AtomRemoteKeyProvisioningTiming)
33568            }
33569            "ATOM_MEDIAOUTPUT_OP_INTERACTION_REPORT" => {
33570                Some(Self::AtomMediaoutputOpInteractionReport)
33571            }
33572            "ATOM_SYNC_EXEMPTION_OCCURRED" => Some(Self::AtomSyncExemptionOccurred),
33573            "ATOM_AUTOFILL_PRESENTATION_EVENT_REPORTED" => {
33574                Some(Self::AtomAutofillPresentationEventReported)
33575            }
33576            "ATOM_DOCK_STATE_CHANGED" => Some(Self::AtomDockStateChanged),
33577            "ATOM_SAFETY_SOURCE_STATE_COLLECTED" => {
33578                Some(Self::AtomSafetySourceStateCollected)
33579            }
33580            "ATOM_SAFETY_CENTER_SYSTEM_EVENT_REPORTED" => {
33581                Some(Self::AtomSafetyCenterSystemEventReported)
33582            }
33583            "ATOM_SAFETY_CENTER_INTERACTION_REPORTED" => {
33584                Some(Self::AtomSafetyCenterInteractionReported)
33585            }
33586            "ATOM_SETTINGS_PROVIDER_SETTING_CHANGED" => {
33587                Some(Self::AtomSettingsProviderSettingChanged)
33588            }
33589            "ATOM_BROADCAST_DELIVERY_EVENT_REPORTED" => {
33590                Some(Self::AtomBroadcastDeliveryEventReported)
33591            }
33592            "ATOM_SERVICE_REQUEST_EVENT_REPORTED" => {
33593                Some(Self::AtomServiceRequestEventReported)
33594            }
33595            "ATOM_PROVIDER_ACQUISITION_EVENT_REPORTED" => {
33596                Some(Self::AtomProviderAcquisitionEventReported)
33597            }
33598            "ATOM_BLUETOOTH_DEVICE_NAME_REPORTED" => {
33599                Some(Self::AtomBluetoothDeviceNameReported)
33600            }
33601            "ATOM_CB_CONFIG_UPDATED" => Some(Self::AtomCbConfigUpdated),
33602            "ATOM_CB_MODULE_ERROR_REPORTED" => Some(Self::AtomCbModuleErrorReported),
33603            "ATOM_CB_SERVICE_FEATURE_CHANGED" => Some(Self::AtomCbServiceFeatureChanged),
33604            "ATOM_CB_RECEIVER_FEATURE_CHANGED" => {
33605                Some(Self::AtomCbReceiverFeatureChanged)
33606            }
33607            "ATOM_PRIVACY_SIGNAL_NOTIFICATION_INTERACTION" => {
33608                Some(Self::AtomPrivacySignalNotificationInteraction)
33609            }
33610            "ATOM_PRIVACY_SIGNAL_ISSUE_CARD_INTERACTION" => {
33611                Some(Self::AtomPrivacySignalIssueCardInteraction)
33612            }
33613            "ATOM_PRIVACY_SIGNALS_JOB_FAILURE" => {
33614                Some(Self::AtomPrivacySignalsJobFailure)
33615            }
33616            "ATOM_VIBRATION_REPORTED" => Some(Self::AtomVibrationReported),
33617            "ATOM_UWB_RANGING_START" => Some(Self::AtomUwbRangingStart),
33618            "ATOM_APP_COMPACTED_V2" => Some(Self::AtomAppCompactedV2),
33619            "ATOM_DISPLAY_BRIGHTNESS_CHANGED" => Some(Self::AtomDisplayBrightnessChanged),
33620            "ATOM_ACTIVITY_ACTION_BLOCKED" => Some(Self::AtomActivityActionBlocked),
33621            "ATOM_NETWORK_DNS_SERVER_SUPPORT_REPORTED" => {
33622                Some(Self::AtomNetworkDnsServerSupportReported)
33623            }
33624            "ATOM_VM_BOOTED" => Some(Self::AtomVmBooted),
33625            "ATOM_VM_EXITED" => Some(Self::AtomVmExited),
33626            "ATOM_AMBIENT_BRIGHTNESS_STATS_REPORTED" => {
33627                Some(Self::AtomAmbientBrightnessStatsReported)
33628            }
33629            "ATOM_MEDIAMETRICS_SPATIALIZERCAPABILITIES_REPORTED" => {
33630                Some(Self::AtomMediametricsSpatializercapabilitiesReported)
33631            }
33632            "ATOM_MEDIAMETRICS_SPATIALIZERDEVICEENABLED_REPORTED" => {
33633                Some(Self::AtomMediametricsSpatializerdeviceenabledReported)
33634            }
33635            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICEENABLED_REPORTED" => {
33636                Some(Self::AtomMediametricsHeadtrackerdeviceenabledReported)
33637            }
33638            "ATOM_MEDIAMETRICS_HEADTRACKERDEVICESUPPORTED_REPORTED" => {
33639                Some(Self::AtomMediametricsHeadtrackerdevicesupportedReported)
33640            }
33641            "ATOM_HEARING_AID_INFO_REPORTED" => Some(Self::AtomHearingAidInfoReported),
33642            "ATOM_DEVICE_WIDE_JOB_CONSTRAINT_CHANGED" => {
33643                Some(Self::AtomDeviceWideJobConstraintChanged)
33644            }
33645            "ATOM_AMBIENT_MODE_CHANGED" => Some(Self::AtomAmbientModeChanged),
33646            "ATOM_ANR_LATENCY_REPORTED" => Some(Self::AtomAnrLatencyReported),
33647            "ATOM_RESOURCE_API_INFO" => Some(Self::AtomResourceApiInfo),
33648            "ATOM_SYSTEM_DEFAULT_NETWORK_CHANGED" => {
33649                Some(Self::AtomSystemDefaultNetworkChanged)
33650            }
33651            "ATOM_IWLAN_SETUP_DATA_CALL_RESULT_REPORTED" => {
33652                Some(Self::AtomIwlanSetupDataCallResultReported)
33653            }
33654            "ATOM_IWLAN_PDN_DISCONNECTED_REASON_REPORTED" => {
33655                Some(Self::AtomIwlanPdnDisconnectedReasonReported)
33656            }
33657            "ATOM_AIRPLANE_MODE_SESSION_REPORTED" => {
33658                Some(Self::AtomAirplaneModeSessionReported)
33659            }
33660            "ATOM_VM_CPU_STATUS_REPORTED" => Some(Self::AtomVmCpuStatusReported),
33661            "ATOM_VM_MEM_STATUS_REPORTED" => Some(Self::AtomVmMemStatusReported),
33662            "ATOM_PACKAGE_INSTALLATION_SESSION_REPORTED" => {
33663                Some(Self::AtomPackageInstallationSessionReported)
33664            }
33665            "ATOM_DEFAULT_NETWORK_REMATCH_INFO" => {
33666                Some(Self::AtomDefaultNetworkRematchInfo)
33667            }
33668            "ATOM_NETWORK_SELECTION_PERFORMANCE" => {
33669                Some(Self::AtomNetworkSelectionPerformance)
33670            }
33671            "ATOM_NETWORK_NSD_REPORTED" => Some(Self::AtomNetworkNsdReported),
33672            "ATOM_BLUETOOTH_DISCONNECTION_REASON_REPORTED" => {
33673                Some(Self::AtomBluetoothDisconnectionReasonReported)
33674            }
33675            "ATOM_BLUETOOTH_LOCAL_VERSIONS_REPORTED" => {
33676                Some(Self::AtomBluetoothLocalVersionsReported)
33677            }
33678            "ATOM_BLUETOOTH_REMOTE_SUPPORTED_FEATURES_REPORTED" => {
33679                Some(Self::AtomBluetoothRemoteSupportedFeaturesReported)
33680            }
33681            "ATOM_BLUETOOTH_LOCAL_SUPPORTED_FEATURES_REPORTED" => {
33682                Some(Self::AtomBluetoothLocalSupportedFeaturesReported)
33683            }
33684            "ATOM_BLUETOOTH_GATT_APP_INFO" => Some(Self::AtomBluetoothGattAppInfo),
33685            "ATOM_BRIGHTNESS_CONFIGURATION_UPDATED" => {
33686                Some(Self::AtomBrightnessConfigurationUpdated)
33687            }
33688            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_LAUNCHED" => {
33689                Some(Self::AtomWearMediaOutputSwitcherLaunched)
33690            }
33691            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FINISHED" => {
33692                Some(Self::AtomWearMediaOutputSwitcherFinished)
33693            }
33694            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECTION_REPORTED" => {
33695                Some(Self::AtomWearMediaOutputSwitcherConnectionReported)
33696            }
33697            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_TRIGGERED" => {
33698                Some(Self::AtomWearMediaOutputSwitcherDeviceScanTriggered)
33699            }
33700            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FIRST_DEVICE_SCAN_LATENCY" => {
33701                Some(Self::AtomWearMediaOutputSwitcherFirstDeviceScanLatency)
33702            }
33703            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_CONNECT_DEVICE_LATENCY" => {
33704                Some(Self::AtomWearMediaOutputSwitcherConnectDeviceLatency)
33705            }
33706            "ATOM_PACKAGE_MANAGER_SNAPSHOT_REPORTED" => {
33707                Some(Self::AtomPackageManagerSnapshotReported)
33708            }
33709            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_BUILD_REPORTED" => {
33710                Some(Self::AtomPackageManagerAppsFilterCacheBuildReported)
33711            }
33712            "ATOM_PACKAGE_MANAGER_APPS_FILTER_CACHE_UPDATE_REPORTED" => {
33713                Some(Self::AtomPackageManagerAppsFilterCacheUpdateReported)
33714            }
33715            "ATOM_LAUNCHER_IMPRESSION_EVENT" => Some(Self::AtomLauncherImpressionEvent),
33716            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_ALL_DEVICES_SCAN_LATENCY" => {
33717                Some(Self::AtomWearMediaOutputSwitcherAllDevicesScanLatency)
33718            }
33719            "ATOM_WS_WATCH_FACE_EDITED" => Some(Self::AtomWsWatchFaceEdited),
33720            "ATOM_WS_WATCH_FACE_FAVORITE_ACTION_REPORTED" => {
33721                Some(Self::AtomWsWatchFaceFavoriteActionReported)
33722            }
33723            "ATOM_WS_WATCH_FACE_SET_ACTION_REPORTED" => {
33724                Some(Self::AtomWsWatchFaceSetActionReported)
33725            }
33726            "ATOM_PACKAGE_UNINSTALLATION_REPORTED" => {
33727                Some(Self::AtomPackageUninstallationReported)
33728            }
33729            "ATOM_GAME_MODE_CHANGED" => Some(Self::AtomGameModeChanged),
33730            "ATOM_GAME_MODE_CONFIGURATION_CHANGED" => {
33731                Some(Self::AtomGameModeConfigurationChanged)
33732            }
33733            "ATOM_BEDTIME_MODE_STATE_CHANGED" => Some(Self::AtomBedtimeModeStateChanged),
33734            "ATOM_NETWORK_SLICE_SESSION_ENDED" => {
33735                Some(Self::AtomNetworkSliceSessionEnded)
33736            }
33737            "ATOM_NETWORK_SLICE_DAILY_DATA_USAGE_REPORTED" => {
33738                Some(Self::AtomNetworkSliceDailyDataUsageReported)
33739            }
33740            "ATOM_NFC_TAG_TYPE_OCCURRED" => Some(Self::AtomNfcTagTypeOccurred),
33741            "ATOM_NFC_AID_CONFLICT_OCCURRED" => Some(Self::AtomNfcAidConflictOccurred),
33742            "ATOM_NFC_READER_CONFLICT_OCCURRED" => {
33743                Some(Self::AtomNfcReaderConflictOccurred)
33744            }
33745            "ATOM_WS_TILE_LIST_CHANGED" => Some(Self::AtomWsTileListChanged),
33746            "ATOM_GET_TYPE_ACCESSED_WITHOUT_PERMISSION" => {
33747                Some(Self::AtomGetTypeAccessedWithoutPermission)
33748            }
33749            "ATOM_MOBILE_BUNDLED_APP_INFO_GATHERED" => {
33750                Some(Self::AtomMobileBundledAppInfoGathered)
33751            }
33752            "ATOM_WS_WATCH_FACE_COMPLICATION_SET_CHANGED" => {
33753                Some(Self::AtomWsWatchFaceComplicationSetChanged)
33754            }
33755            "ATOM_MEDIA_DRM_CREATED" => Some(Self::AtomMediaDrmCreated),
33756            "ATOM_MEDIA_DRM_ERRORED" => Some(Self::AtomMediaDrmErrored),
33757            "ATOM_MEDIA_DRM_SESSION_OPENED" => Some(Self::AtomMediaDrmSessionOpened),
33758            "ATOM_MEDIA_DRM_SESSION_CLOSED" => Some(Self::AtomMediaDrmSessionClosed),
33759            "ATOM_USER_SELECTED_RESOLUTION" => Some(Self::AtomUserSelectedResolution),
33760            "ATOM_UNSAFE_INTENT_EVENT_REPORTED" => {
33761                Some(Self::AtomUnsafeIntentEventReported)
33762            }
33763            "ATOM_PERFORMANCE_HINT_SESSION_REPORTED" => {
33764                Some(Self::AtomPerformanceHintSessionReported)
33765            }
33766            "ATOM_MEDIAMETRICS_MIDI_DEVICE_CLOSE_REPORTED" => {
33767                Some(Self::AtomMediametricsMidiDeviceCloseReported)
33768            }
33769            "ATOM_BIOMETRIC_TOUCH_REPORTED" => Some(Self::AtomBiometricTouchReported),
33770            "ATOM_HOTWORD_AUDIO_EGRESS_EVENT_REPORTED" => {
33771                Some(Self::AtomHotwordAudioEgressEventReported)
33772            }
33773            "ATOM_LOCATION_ENABLED_STATE_CHANGED" => {
33774                Some(Self::AtomLocationEnabledStateChanged)
33775            }
33776            "ATOM_IME_REQUEST_FINISHED" => Some(Self::AtomImeRequestFinished),
33777            "ATOM_USB_COMPLIANCE_WARNINGS_REPORTED" => {
33778                Some(Self::AtomUsbComplianceWarningsReported)
33779            }
33780            "ATOM_APP_SUPPORTED_LOCALES_CHANGED" => {
33781                Some(Self::AtomAppSupportedLocalesChanged)
33782            }
33783            "ATOM_MEDIA_PROVIDER_VOLUME_RECOVERY_REPORTED" => {
33784                Some(Self::AtomMediaProviderVolumeRecoveryReported)
33785            }
33786            "ATOM_BIOMETRIC_PROPERTIES_COLLECTED" => {
33787                Some(Self::AtomBiometricPropertiesCollected)
33788            }
33789            "ATOM_KERNEL_WAKEUP_ATTRIBUTED" => Some(Self::AtomKernelWakeupAttributed),
33790            "ATOM_SCREEN_STATE_CHANGED_V2" => Some(Self::AtomScreenStateChangedV2),
33791            "ATOM_WS_BACKUP_ACTION_REPORTED" => Some(Self::AtomWsBackupActionReported),
33792            "ATOM_WS_RESTORE_ACTION_REPORTED" => Some(Self::AtomWsRestoreActionReported),
33793            "ATOM_DEVICE_LOG_ACCESS_EVENT_REPORTED" => {
33794                Some(Self::AtomDeviceLogAccessEventReported)
33795            }
33796            "ATOM_MEDIA_SESSION_UPDATED" => Some(Self::AtomMediaSessionUpdated),
33797            "ATOM_WEAR_OOBE_STATE_CHANGED" => Some(Self::AtomWearOobeStateChanged),
33798            "ATOM_WS_NOTIFICATION_UPDATED" => Some(Self::AtomWsNotificationUpdated),
33799            "ATOM_NETWORK_VALIDATION_FAILURE_STATS_DAILY_REPORTED" => {
33800                Some(Self::AtomNetworkValidationFailureStatsDailyReported)
33801            }
33802            "ATOM_WS_COMPLICATION_TAPPED" => Some(Self::AtomWsComplicationTapped),
33803            "ATOM_WS_NOTIFICATION_BLOCKING" => Some(Self::AtomWsNotificationBlocking),
33804            "ATOM_WS_NOTIFICATION_BRIDGEMODE_UPDATED" => {
33805                Some(Self::AtomWsNotificationBridgemodeUpdated)
33806            }
33807            "ATOM_WS_NOTIFICATION_DISMISSAL_ACTIONED" => {
33808                Some(Self::AtomWsNotificationDismissalActioned)
33809            }
33810            "ATOM_WS_NOTIFICATION_ACTIONED" => Some(Self::AtomWsNotificationActioned),
33811            "ATOM_WS_NOTIFICATION_LATENCY" => Some(Self::AtomWsNotificationLatency),
33812            "ATOM_WIFI_BYTES_TRANSFER" => Some(Self::AtomWifiBytesTransfer),
33813            "ATOM_WIFI_BYTES_TRANSFER_BY_FG_BG" => {
33814                Some(Self::AtomWifiBytesTransferByFgBg)
33815            }
33816            "ATOM_MOBILE_BYTES_TRANSFER" => Some(Self::AtomMobileBytesTransfer),
33817            "ATOM_MOBILE_BYTES_TRANSFER_BY_FG_BG" => {
33818                Some(Self::AtomMobileBytesTransferByFgBg)
33819            }
33820            "ATOM_BLUETOOTH_BYTES_TRANSFER" => Some(Self::AtomBluetoothBytesTransfer),
33821            "ATOM_KERNEL_WAKELOCK" => Some(Self::AtomKernelWakelock),
33822            "ATOM_SUBSYSTEM_SLEEP_STATE" => Some(Self::AtomSubsystemSleepState),
33823            "ATOM_CPU_TIME_PER_UID" => Some(Self::AtomCpuTimePerUid),
33824            "ATOM_CPU_TIME_PER_UID_FREQ" => Some(Self::AtomCpuTimePerUidFreq),
33825            "ATOM_WIFI_ACTIVITY_INFO" => Some(Self::AtomWifiActivityInfo),
33826            "ATOM_MODEM_ACTIVITY_INFO" => Some(Self::AtomModemActivityInfo),
33827            "ATOM_BLUETOOTH_ACTIVITY_INFO" => Some(Self::AtomBluetoothActivityInfo),
33828            "ATOM_PROCESS_MEMORY_STATE" => Some(Self::AtomProcessMemoryState),
33829            "ATOM_SYSTEM_ELAPSED_REALTIME" => Some(Self::AtomSystemElapsedRealtime),
33830            "ATOM_SYSTEM_UPTIME" => Some(Self::AtomSystemUptime),
33831            "ATOM_CPU_ACTIVE_TIME" => Some(Self::AtomCpuActiveTime),
33832            "ATOM_CPU_CLUSTER_TIME" => Some(Self::AtomCpuClusterTime),
33833            "ATOM_DISK_SPACE" => Some(Self::AtomDiskSpace),
33834            "ATOM_REMAINING_BATTERY_CAPACITY" => Some(Self::AtomRemainingBatteryCapacity),
33835            "ATOM_FULL_BATTERY_CAPACITY" => Some(Self::AtomFullBatteryCapacity),
33836            "ATOM_TEMPERATURE" => Some(Self::AtomTemperature),
33837            "ATOM_BINDER_CALLS" => Some(Self::AtomBinderCalls),
33838            "ATOM_BINDER_CALLS_EXCEPTIONS" => Some(Self::AtomBinderCallsExceptions),
33839            "ATOM_LOOPER_STATS" => Some(Self::AtomLooperStats),
33840            "ATOM_DISK_STATS" => Some(Self::AtomDiskStats),
33841            "ATOM_DIRECTORY_USAGE" => Some(Self::AtomDirectoryUsage),
33842            "ATOM_APP_SIZE" => Some(Self::AtomAppSize),
33843            "ATOM_CATEGORY_SIZE" => Some(Self::AtomCategorySize),
33844            "ATOM_PROC_STATS" => Some(Self::AtomProcStats),
33845            "ATOM_BATTERY_VOLTAGE" => Some(Self::AtomBatteryVoltage),
33846            "ATOM_NUM_FINGERPRINTS_ENROLLED" => Some(Self::AtomNumFingerprintsEnrolled),
33847            "ATOM_DISK_IO" => Some(Self::AtomDiskIo),
33848            "ATOM_POWER_PROFILE" => Some(Self::AtomPowerProfile),
33849            "ATOM_PROC_STATS_PKG_PROC" => Some(Self::AtomProcStatsPkgProc),
33850            "ATOM_PROCESS_CPU_TIME" => Some(Self::AtomProcessCpuTime),
33851            "ATOM_CPU_TIME_PER_THREAD_FREQ" => Some(Self::AtomCpuTimePerThreadFreq),
33852            "ATOM_ON_DEVICE_POWER_MEASUREMENT" => {
33853                Some(Self::AtomOnDevicePowerMeasurement)
33854            }
33855            "ATOM_DEVICE_CALCULATED_POWER_USE" => {
33856                Some(Self::AtomDeviceCalculatedPowerUse)
33857            }
33858            "ATOM_PROCESS_MEMORY_HIGH_WATER_MARK" => {
33859                Some(Self::AtomProcessMemoryHighWaterMark)
33860            }
33861            "ATOM_BATTERY_LEVEL" => Some(Self::AtomBatteryLevel),
33862            "ATOM_BUILD_INFORMATION" => Some(Self::AtomBuildInformation),
33863            "ATOM_BATTERY_CYCLE_COUNT" => Some(Self::AtomBatteryCycleCount),
33864            "ATOM_DEBUG_ELAPSED_CLOCK" => Some(Self::AtomDebugElapsedClock),
33865            "ATOM_DEBUG_FAILING_ELAPSED_CLOCK" => {
33866                Some(Self::AtomDebugFailingElapsedClock)
33867            }
33868            "ATOM_NUM_FACES_ENROLLED" => Some(Self::AtomNumFacesEnrolled),
33869            "ATOM_ROLE_HOLDER" => Some(Self::AtomRoleHolder),
33870            "ATOM_DANGEROUS_PERMISSION_STATE" => Some(Self::AtomDangerousPermissionState),
33871            "ATOM_TRAIN_INFO" => Some(Self::AtomTrainInfo),
33872            "ATOM_TIME_ZONE_DATA_INFO" => Some(Self::AtomTimeZoneDataInfo),
33873            "ATOM_EXTERNAL_STORAGE_INFO" => Some(Self::AtomExternalStorageInfo),
33874            "ATOM_GPU_STATS_GLOBAL_INFO" => Some(Self::AtomGpuStatsGlobalInfo),
33875            "ATOM_GPU_STATS_APP_INFO" => Some(Self::AtomGpuStatsAppInfo),
33876            "ATOM_SYSTEM_ION_HEAP_SIZE" => Some(Self::AtomSystemIonHeapSize),
33877            "ATOM_APPS_ON_EXTERNAL_STORAGE_INFO" => {
33878                Some(Self::AtomAppsOnExternalStorageInfo)
33879            }
33880            "ATOM_FACE_SETTINGS" => Some(Self::AtomFaceSettings),
33881            "ATOM_COOLING_DEVICE" => Some(Self::AtomCoolingDevice),
33882            "ATOM_APP_OPS" => Some(Self::AtomAppOps),
33883            "ATOM_PROCESS_SYSTEM_ION_HEAP_SIZE" => {
33884                Some(Self::AtomProcessSystemIonHeapSize)
33885            }
33886            "ATOM_SURFACEFLINGER_STATS_GLOBAL_INFO" => {
33887                Some(Self::AtomSurfaceflingerStatsGlobalInfo)
33888            }
33889            "ATOM_SURFACEFLINGER_STATS_LAYER_INFO" => {
33890                Some(Self::AtomSurfaceflingerStatsLayerInfo)
33891            }
33892            "ATOM_PROCESS_MEMORY_SNAPSHOT" => Some(Self::AtomProcessMemorySnapshot),
33893            "ATOM_VMS_CLIENT_STATS" => Some(Self::AtomVmsClientStats),
33894            "ATOM_NOTIFICATION_REMOTE_VIEWS" => Some(Self::AtomNotificationRemoteViews),
33895            "ATOM_DANGEROUS_PERMISSION_STATE_SAMPLED" => {
33896                Some(Self::AtomDangerousPermissionStateSampled)
33897            }
33898            "ATOM_GRAPHICS_STATS" => Some(Self::AtomGraphicsStats),
33899            "ATOM_RUNTIME_APP_OP_ACCESS" => Some(Self::AtomRuntimeAppOpAccess),
33900            "ATOM_ION_HEAP_SIZE" => Some(Self::AtomIonHeapSize),
33901            "ATOM_PACKAGE_NOTIFICATION_PREFERENCES" => {
33902                Some(Self::AtomPackageNotificationPreferences)
33903            }
33904            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES" => {
33905                Some(Self::AtomPackageNotificationChannelPreferences)
33906            }
33907            "ATOM_PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES" => {
33908                Some(Self::AtomPackageNotificationChannelGroupPreferences)
33909            }
33910            "ATOM_GNSS_STATS" => Some(Self::AtomGnssStats),
33911            "ATOM_ATTRIBUTED_APP_OPS" => Some(Self::AtomAttributedAppOps),
33912            "ATOM_VOICE_CALL_SESSION" => Some(Self::AtomVoiceCallSession),
33913            "ATOM_VOICE_CALL_RAT_USAGE" => Some(Self::AtomVoiceCallRatUsage),
33914            "ATOM_SIM_SLOT_STATE" => Some(Self::AtomSimSlotState),
33915            "ATOM_SUPPORTED_RADIO_ACCESS_FAMILY" => {
33916                Some(Self::AtomSupportedRadioAccessFamily)
33917            }
33918            "ATOM_SETTING_SNAPSHOT" => Some(Self::AtomSettingSnapshot),
33919            "ATOM_BLOB_INFO" => Some(Self::AtomBlobInfo),
33920            "ATOM_DATA_USAGE_BYTES_TRANSFER" => Some(Self::AtomDataUsageBytesTransfer),
33921            "ATOM_BYTES_TRANSFER_BY_TAG_AND_METERED" => {
33922                Some(Self::AtomBytesTransferByTagAndMetered)
33923            }
33924            "ATOM_DND_MODE_RULE" => Some(Self::AtomDndModeRule),
33925            "ATOM_GENERAL_EXTERNAL_STORAGE_ACCESS_STATS" => {
33926                Some(Self::AtomGeneralExternalStorageAccessStats)
33927            }
33928            "ATOM_INCOMING_SMS" => Some(Self::AtomIncomingSms),
33929            "ATOM_OUTGOING_SMS" => Some(Self::AtomOutgoingSms),
33930            "ATOM_CARRIER_ID_TABLE_VERSION" => Some(Self::AtomCarrierIdTableVersion),
33931            "ATOM_DATA_CALL_SESSION" => Some(Self::AtomDataCallSession),
33932            "ATOM_CELLULAR_SERVICE_STATE" => Some(Self::AtomCellularServiceState),
33933            "ATOM_CELLULAR_DATA_SERVICE_SWITCH" => {
33934                Some(Self::AtomCellularDataServiceSwitch)
33935            }
33936            "ATOM_SYSTEM_MEMORY" => Some(Self::AtomSystemMemory),
33937            "ATOM_IMS_REGISTRATION_TERMINATION" => {
33938                Some(Self::AtomImsRegistrationTermination)
33939            }
33940            "ATOM_IMS_REGISTRATION_STATS" => Some(Self::AtomImsRegistrationStats),
33941            "ATOM_CPU_TIME_PER_CLUSTER_FREQ" => Some(Self::AtomCpuTimePerClusterFreq),
33942            "ATOM_CPU_CYCLES_PER_UID_CLUSTER" => Some(Self::AtomCpuCyclesPerUidCluster),
33943            "ATOM_DEVICE_ROTATED_DATA" => Some(Self::AtomDeviceRotatedData),
33944            "ATOM_CPU_CYCLES_PER_THREAD_GROUP_CLUSTER" => {
33945                Some(Self::AtomCpuCyclesPerThreadGroupCluster)
33946            }
33947            "ATOM_MEDIA_DRM_ACTIVITY_INFO" => Some(Self::AtomMediaDrmActivityInfo),
33948            "ATOM_OEM_MANAGED_BYTES_TRANSFER" => Some(Self::AtomOemManagedBytesTransfer),
33949            "ATOM_GNSS_POWER_STATS" => Some(Self::AtomGnssPowerStats),
33950            "ATOM_TIME_ZONE_DETECTOR_STATE" => Some(Self::AtomTimeZoneDetectorState),
33951            "ATOM_KEYSTORE2_STORAGE_STATS" => Some(Self::AtomKeystore2StorageStats),
33952            "ATOM_RKP_POOL_STATS" => Some(Self::AtomRkpPoolStats),
33953            "ATOM_PROCESS_DMABUF_MEMORY" => Some(Self::AtomProcessDmabufMemory),
33954            "ATOM_PENDING_ALARM_INFO" => Some(Self::AtomPendingAlarmInfo),
33955            "ATOM_USER_LEVEL_HIBERNATED_APPS" => Some(Self::AtomUserLevelHibernatedApps),
33956            "ATOM_LAUNCHER_LAYOUT_SNAPSHOT" => Some(Self::AtomLauncherLayoutSnapshot),
33957            "ATOM_GLOBAL_HIBERNATED_APPS" => Some(Self::AtomGlobalHibernatedApps),
33958            "ATOM_INPUT_EVENT_LATENCY_SKETCH" => Some(Self::AtomInputEventLatencySketch),
33959            "ATOM_BATTERY_USAGE_STATS_BEFORE_RESET" => {
33960                Some(Self::AtomBatteryUsageStatsBeforeReset)
33961            }
33962            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET" => {
33963                Some(Self::AtomBatteryUsageStatsSinceReset)
33964            }
33965            "ATOM_BATTERY_USAGE_STATS_SINCE_RESET_USING_POWER_PROFILE_MODEL" => {
33966                Some(Self::AtomBatteryUsageStatsSinceResetUsingPowerProfileModel)
33967            }
33968            "ATOM_INSTALLED_INCREMENTAL_PACKAGE" => {
33969                Some(Self::AtomInstalledIncrementalPackage)
33970            }
33971            "ATOM_TELEPHONY_NETWORK_REQUESTS" => Some(Self::AtomTelephonyNetworkRequests),
33972            "ATOM_APP_SEARCH_STORAGE_INFO" => Some(Self::AtomAppSearchStorageInfo),
33973            "ATOM_VMSTAT" => Some(Self::AtomVmstat),
33974            "ATOM_KEYSTORE2_KEY_CREATION_WITH_GENERAL_INFO" => {
33975                Some(Self::AtomKeystore2KeyCreationWithGeneralInfo)
33976            }
33977            "ATOM_KEYSTORE2_KEY_CREATION_WITH_AUTH_INFO" => {
33978                Some(Self::AtomKeystore2KeyCreationWithAuthInfo)
33979            }
33980            "ATOM_KEYSTORE2_KEY_CREATION_WITH_PURPOSE_AND_MODES_INFO" => {
33981                Some(Self::AtomKeystore2KeyCreationWithPurposeAndModesInfo)
33982            }
33983            "ATOM_KEYSTORE2_ATOM_WITH_OVERFLOW" => {
33984                Some(Self::AtomKeystore2AtomWithOverflow)
33985            }
33986            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_PURPOSE_AND_MODES_INFO" => {
33987                Some(Self::AtomKeystore2KeyOperationWithPurposeAndModesInfo)
33988            }
33989            "ATOM_KEYSTORE2_KEY_OPERATION_WITH_GENERAL_INFO" => {
33990                Some(Self::AtomKeystore2KeyOperationWithGeneralInfo)
33991            }
33992            "ATOM_RKP_ERROR_STATS" => Some(Self::AtomRkpErrorStats),
33993            "ATOM_KEYSTORE2_CRASH_STATS" => Some(Self::AtomKeystore2CrashStats),
33994            "ATOM_VENDOR_APEX_INFO" => Some(Self::AtomVendorApexInfo),
33995            "ATOM_ACCESSIBILITY_SHORTCUT_STATS" => {
33996                Some(Self::AtomAccessibilityShortcutStats)
33997            }
33998            "ATOM_ACCESSIBILITY_FLOATING_MENU_STATS" => {
33999                Some(Self::AtomAccessibilityFloatingMenuStats)
34000            }
34001            "ATOM_DATA_USAGE_BYTES_TRANSFER_V2" => {
34002                Some(Self::AtomDataUsageBytesTransferV2)
34003            }
34004            "ATOM_MEDIA_CAPABILITIES" => Some(Self::AtomMediaCapabilities),
34005            "ATOM_CAR_WATCHDOG_SYSTEM_IO_USAGE_SUMMARY" => {
34006                Some(Self::AtomCarWatchdogSystemIoUsageSummary)
34007            }
34008            "ATOM_CAR_WATCHDOG_UID_IO_USAGE_SUMMARY" => {
34009                Some(Self::AtomCarWatchdogUidIoUsageSummary)
34010            }
34011            "ATOM_IMS_REGISTRATION_FEATURE_TAG_STATS" => {
34012                Some(Self::AtomImsRegistrationFeatureTagStats)
34013            }
34014            "ATOM_RCS_CLIENT_PROVISIONING_STATS" => {
34015                Some(Self::AtomRcsClientProvisioningStats)
34016            }
34017            "ATOM_RCS_ACS_PROVISIONING_STATS" => Some(Self::AtomRcsAcsProvisioningStats),
34018            "ATOM_SIP_DELEGATE_STATS" => Some(Self::AtomSipDelegateStats),
34019            "ATOM_SIP_TRANSPORT_FEATURE_TAG_STATS" => {
34020                Some(Self::AtomSipTransportFeatureTagStats)
34021            }
34022            "ATOM_SIP_MESSAGE_RESPONSE" => Some(Self::AtomSipMessageResponse),
34023            "ATOM_SIP_TRANSPORT_SESSION" => Some(Self::AtomSipTransportSession),
34024            "ATOM_IMS_DEDICATED_BEARER_LISTENER_EVENT" => {
34025                Some(Self::AtomImsDedicatedBearerListenerEvent)
34026            }
34027            "ATOM_IMS_DEDICATED_BEARER_EVENT" => Some(Self::AtomImsDedicatedBearerEvent),
34028            "ATOM_IMS_REGISTRATION_SERVICE_DESC_STATS" => {
34029                Some(Self::AtomImsRegistrationServiceDescStats)
34030            }
34031            "ATOM_UCE_EVENT_STATS" => Some(Self::AtomUceEventStats),
34032            "ATOM_PRESENCE_NOTIFY_EVENT" => Some(Self::AtomPresenceNotifyEvent),
34033            "ATOM_GBA_EVENT" => Some(Self::AtomGbaEvent),
34034            "ATOM_PER_SIM_STATUS" => Some(Self::AtomPerSimStatus),
34035            "ATOM_GPU_WORK_PER_UID" => Some(Self::AtomGpuWorkPerUid),
34036            "ATOM_PERSISTENT_URI_PERMISSIONS_AMOUNT_PER_PACKAGE" => {
34037                Some(Self::AtomPersistentUriPermissionsAmountPerPackage)
34038            }
34039            "ATOM_SIGNED_PARTITION_INFO" => Some(Self::AtomSignedPartitionInfo),
34040            "ATOM_PINNED_FILE_SIZES_PER_PACKAGE" => {
34041                Some(Self::AtomPinnedFileSizesPerPackage)
34042            }
34043            "ATOM_PENDING_INTENTS_PER_PACKAGE" => {
34044                Some(Self::AtomPendingIntentsPerPackage)
34045            }
34046            "ATOM_USER_INFO" => Some(Self::AtomUserInfo),
34047            "ATOM_TELEPHONY_NETWORK_REQUESTS_V2" => {
34048                Some(Self::AtomTelephonyNetworkRequestsV2)
34049            }
34050            "ATOM_DEVICE_TELEPHONY_PROPERTIES" => {
34051                Some(Self::AtomDeviceTelephonyProperties)
34052            }
34053            "ATOM_REMOTE_KEY_PROVISIONING_ERROR_COUNTS" => {
34054                Some(Self::AtomRemoteKeyProvisioningErrorCounts)
34055            }
34056            "ATOM_SAFETY_STATE" => Some(Self::AtomSafetyState),
34057            "ATOM_INCOMING_MMS" => Some(Self::AtomIncomingMms),
34058            "ATOM_OUTGOING_MMS" => Some(Self::AtomOutgoingMms),
34059            "ATOM_MULTI_USER_INFO" => Some(Self::AtomMultiUserInfo),
34060            "ATOM_NETWORK_BPF_MAP_INFO" => Some(Self::AtomNetworkBpfMapInfo),
34061            "ATOM_OUTGOING_SHORT_CODE_SMS" => Some(Self::AtomOutgoingShortCodeSms),
34062            "ATOM_CONNECTIVITY_STATE_SAMPLE" => Some(Self::AtomConnectivityStateSample),
34063            "ATOM_NETWORK_SELECTION_REMATCH_REASONS_INFO" => {
34064                Some(Self::AtomNetworkSelectionRematchReasonsInfo)
34065            }
34066            "ATOM_GAME_MODE_INFO" => Some(Self::AtomGameModeInfo),
34067            "ATOM_GAME_MODE_CONFIGURATION" => Some(Self::AtomGameModeConfiguration),
34068            "ATOM_GAME_MODE_LISTENER" => Some(Self::AtomGameModeListener),
34069            "ATOM_NETWORK_SLICE_REQUEST_COUNT" => {
34070                Some(Self::AtomNetworkSliceRequestCount)
34071            }
34072            "ATOM_WS_TILE_SNAPSHOT" => Some(Self::AtomWsTileSnapshot),
34073            "ATOM_WS_ACTIVE_WATCH_FACE_COMPLICATION_SET_SNAPSHOT" => {
34074                Some(Self::AtomWsActiveWatchFaceComplicationSetSnapshot)
34075            }
34076            "ATOM_PROCESS_STATE" => Some(Self::AtomProcessState),
34077            "ATOM_PROCESS_ASSOCIATION" => Some(Self::AtomProcessAssociation),
34078            "ATOM_ADPF_SYSTEM_COMPONENT_INFO" => Some(Self::AtomAdpfSystemComponentInfo),
34079            "ATOM_NOTIFICATION_MEMORY_USE" => Some(Self::AtomNotificationMemoryUse),
34080            "ATOM_HDR_CAPABILITIES" => Some(Self::AtomHdrCapabilities),
34081            "ATOM_WS_FAVOURITE_WATCH_FACE_LIST_SNAPSHOT" => {
34082                Some(Self::AtomWsFavouriteWatchFaceListSnapshot)
34083            }
34084            "ATOM_WIFI_AWARE_NDP_REPORTED" => Some(Self::AtomWifiAwareNdpReported),
34085            "ATOM_WIFI_AWARE_ATTACH_REPORTED" => Some(Self::AtomWifiAwareAttachReported),
34086            "ATOM_WIFI_SELF_RECOVERY_TRIGGERED" => {
34087                Some(Self::AtomWifiSelfRecoveryTriggered)
34088            }
34089            "ATOM_SOFT_AP_STARTED" => Some(Self::AtomSoftApStarted),
34090            "ATOM_SOFT_AP_STOPPED" => Some(Self::AtomSoftApStopped),
34091            "ATOM_WIFI_LOCK_RELEASED" => Some(Self::AtomWifiLockReleased),
34092            "ATOM_WIFI_LOCK_DEACTIVATED" => Some(Self::AtomWifiLockDeactivated),
34093            "ATOM_WIFI_CONFIG_SAVED" => Some(Self::AtomWifiConfigSaved),
34094            "ATOM_WIFI_AWARE_RESOURCE_USING_CHANGED" => {
34095                Some(Self::AtomWifiAwareResourceUsingChanged)
34096            }
34097            "ATOM_WIFI_AWARE_HAL_API_CALLED" => Some(Self::AtomWifiAwareHalApiCalled),
34098            "ATOM_WIFI_LOCAL_ONLY_REQUEST_RECEIVED" => {
34099                Some(Self::AtomWifiLocalOnlyRequestReceived)
34100            }
34101            "ATOM_WIFI_LOCAL_ONLY_REQUEST_SCAN_TRIGGERED" => {
34102                Some(Self::AtomWifiLocalOnlyRequestScanTriggered)
34103            }
34104            "ATOM_WIFI_THREAD_TASK_EXECUTED" => Some(Self::AtomWifiThreadTaskExecuted),
34105            "ATOM_WIFI_STATE_CHANGED" => Some(Self::AtomWifiStateChanged),
34106            "ATOM_PNO_SCAN_STARTED" => Some(Self::AtomPnoScanStarted),
34107            "ATOM_PNO_SCAN_STOPPED" => Some(Self::AtomPnoScanStopped),
34108            "ATOM_WIFI_IS_UNUSABLE_REPORTED" => Some(Self::AtomWifiIsUnusableReported),
34109            "ATOM_WIFI_AP_CAPABILITIES_REPORTED" => {
34110                Some(Self::AtomWifiApCapabilitiesReported)
34111            }
34112            "ATOM_SOFT_AP_STATE_CHANGED" => Some(Self::AtomSoftApStateChanged),
34113            "ATOM_SCORER_PREDICTION_RESULT_REPORTED" => {
34114                Some(Self::AtomScorerPredictionResultReported)
34115            }
34116            "ATOM_WIFI_AWARE_CAPABILITIES" => Some(Self::AtomWifiAwareCapabilities),
34117            "ATOM_WIFI_MODULE_INFO" => Some(Self::AtomWifiModuleInfo),
34118            "ATOM_WIFI_SETTING_INFO" => Some(Self::AtomWifiSettingInfo),
34119            "ATOM_WIFI_COMPLEX_SETTING_INFO" => Some(Self::AtomWifiComplexSettingInfo),
34120            "ATOM_WIFI_CONFIGURED_NETWORK_INFO" => {
34121                Some(Self::AtomWifiConfiguredNetworkInfo)
34122            }
34123            "ATOM_WEAR_POWER_MENU_OPENED" => Some(Self::AtomWearPowerMenuOpened),
34124            "ATOM_WEAR_ASSISTANT_OPENED" => Some(Self::AtomWearAssistantOpened),
34125            "ATOM_FIRST_OVERLAY_STATE_CHANGED" => {
34126                Some(Self::AtomFirstOverlayStateChanged)
34127            }
34128            "ATOM_WS_WEAR_TIME_SESSION" => Some(Self::AtomWsWearTimeSession),
34129            "ATOM_WS_INCOMING_CALL_ACTION_REPORTED" => {
34130                Some(Self::AtomWsIncomingCallActionReported)
34131            }
34132            "ATOM_WS_CALL_DISCONNECTION_REPORTED" => {
34133                Some(Self::AtomWsCallDisconnectionReported)
34134            }
34135            "ATOM_WS_CALL_DURATION_REPORTED" => Some(Self::AtomWsCallDurationReported),
34136            "ATOM_WS_CALL_USER_EXPERIENCE_LATENCY_REPORTED" => {
34137                Some(Self::AtomWsCallUserExperienceLatencyReported)
34138            }
34139            "ATOM_WS_CALL_INTERACTION_REPORTED" => {
34140                Some(Self::AtomWsCallInteractionReported)
34141            }
34142            "ATOM_WS_ON_BODY_STATE_CHANGED" => Some(Self::AtomWsOnBodyStateChanged),
34143            "ATOM_WS_WATCH_FACE_RESTRICTED_COMPLICATIONS_IMPACTED" => {
34144                Some(Self::AtomWsWatchFaceRestrictedComplicationsImpacted)
34145            }
34146            "ATOM_WS_WATCH_FACE_DEFAULT_RESTRICTED_COMPLICATIONS_REMOVED" => {
34147                Some(Self::AtomWsWatchFaceDefaultRestrictedComplicationsRemoved)
34148            }
34149            "ATOM_WS_COMPLICATIONS_IMPACTED_NOTIFICATION_EVENT_REPORTED" => {
34150                Some(Self::AtomWsComplicationsImpactedNotificationEventReported)
34151            }
34152            "ATOM_WS_REMOTE_EVENT_USAGE_REPORTED" => {
34153                Some(Self::AtomWsRemoteEventUsageReported)
34154            }
34155            "ATOM_WS_NOTIFICATION_MANAGED_DISMISSAL_SYNC" => {
34156                Some(Self::AtomWsNotificationManagedDismissalSync)
34157            }
34158            "ATOM_WS_BUGREPORT_EVENT_REPORTED" => {
34159                Some(Self::AtomWsBugreportEventReported)
34160            }
34161            "ATOM_WS_STANDALONE_MODE_SNAPSHOT" => {
34162                Some(Self::AtomWsStandaloneModeSnapshot)
34163            }
34164            "ATOM_WS_FAVORITE_WATCH_FACE_SNAPSHOT" => {
34165                Some(Self::AtomWsFavoriteWatchFaceSnapshot)
34166            }
34167            "ATOM_WS_PHOTOS_WATCH_FACE_FEATURE_SNAPSHOT" => {
34168                Some(Self::AtomWsPhotosWatchFaceFeatureSnapshot)
34169            }
34170            "ATOM_WS_WATCH_FACE_CUSTOMIZATION_SNAPSHOT" => {
34171                Some(Self::AtomWsWatchFaceCustomizationSnapshot)
34172            }
34173            "ATOM_WEAR_ADAPTIVE_SUSPEND_STATS_REPORTED" => {
34174                Some(Self::AtomWearAdaptiveSuspendStatsReported)
34175            }
34176            "ATOM_WEAR_POWER_ANOMALY_SERVICE_OPERATIONAL_STATS_REPORTED" => {
34177                Some(Self::AtomWearPowerAnomalyServiceOperationalStatsReported)
34178            }
34179            "ATOM_WEAR_POWER_ANOMALY_SERVICE_EVENT_STATS_REPORTED" => {
34180                Some(Self::AtomWearPowerAnomalyServiceEventStatsReported)
34181            }
34182            "ATOM_WEAR_TIME_SYNC_REQUESTED" => Some(Self::AtomWearTimeSyncRequested),
34183            "ATOM_WEAR_TIME_UPDATE_STARTED" => Some(Self::AtomWearTimeUpdateStarted),
34184            "ATOM_WEAR_TIME_SYNC_ATTEMPT_COMPLETED" => {
34185                Some(Self::AtomWearTimeSyncAttemptCompleted)
34186            }
34187            "ATOM_WEAR_TIME_CHANGED" => Some(Self::AtomWearTimeChanged),
34188            "ATOM_WEAR_SETUP_WIZARD_DEVICE_STATUS_REPORTED" => {
34189                Some(Self::AtomWearSetupWizardDeviceStatusReported)
34190            }
34191            "ATOM_WEAR_SETUP_WIZARD_PAIRING_COMPLETED" => {
34192                Some(Self::AtomWearSetupWizardPairingCompleted)
34193            }
34194            "ATOM_WEAR_SETUP_WIZARD_CONNECTION_ESTABLISHED" => {
34195                Some(Self::AtomWearSetupWizardConnectionEstablished)
34196            }
34197            "ATOM_WEAR_SETUP_WIZARD_CHECKIN_COMPLETED" => {
34198                Some(Self::AtomWearSetupWizardCheckinCompleted)
34199            }
34200            "ATOM_WEAR_SETUP_WIZARD_COMPANION_TIME_REPORTED" => {
34201                Some(Self::AtomWearSetupWizardCompanionTimeReported)
34202            }
34203            "ATOM_WEAR_SETUP_WIZARD_STATUS_REPORTED" => {
34204                Some(Self::AtomWearSetupWizardStatusReported)
34205            }
34206            "ATOM_WEAR_SETUP_WIZARD_HEARTBEAT_REPORTED" => {
34207                Some(Self::AtomWearSetupWizardHeartbeatReported)
34208            }
34209            "ATOM_WEAR_SETUP_WIZARD_FRP_TRIGGERED" => {
34210                Some(Self::AtomWearSetupWizardFrpTriggered)
34211            }
34212            "ATOM_WEAR_SETUP_WIZARD_SYSTEM_UPDATE_TRIGGERED" => {
34213                Some(Self::AtomWearSetupWizardSystemUpdateTriggered)
34214            }
34215            "ATOM_WEAR_SETUP_WIZARD_PHONE_SWITCH_TRIGGERED" => {
34216                Some(Self::AtomWearSetupWizardPhoneSwitchTriggered)
34217            }
34218            "ATOM_RENDERER_INITIALIZED" => Some(Self::AtomRendererInitialized),
34219            "ATOM_SCHEMA_VERSION_RECEIVED" => Some(Self::AtomSchemaVersionReceived),
34220            "ATOM_LAYOUT_INSPECTED" => Some(Self::AtomLayoutInspected),
34221            "ATOM_LAYOUT_EXPRESSION_INSPECTED" => {
34222                Some(Self::AtomLayoutExpressionInspected)
34223            }
34224            "ATOM_LAYOUT_ANIMATIONS_INSPECTED" => {
34225                Some(Self::AtomLayoutAnimationsInspected)
34226            }
34227            "ATOM_MATERIAL_COMPONENTS_INSPECTED" => {
34228                Some(Self::AtomMaterialComponentsInspected)
34229            }
34230            "ATOM_TILE_REQUESTED" => Some(Self::AtomTileRequested),
34231            "ATOM_STATE_RESPONSE_RECEIVED" => Some(Self::AtomStateResponseReceived),
34232            "ATOM_TILE_RESPONSE_RECEIVED" => Some(Self::AtomTileResponseReceived),
34233            "ATOM_INFLATION_FINISHED" => Some(Self::AtomInflationFinished),
34234            "ATOM_INFLATION_FAILED" => Some(Self::AtomInflationFailed),
34235            "ATOM_IGNORED_INFLATION_FAILURES_REPORTED" => {
34236                Some(Self::AtomIgnoredInflationFailuresReported)
34237            }
34238            "ATOM_DRAWABLE_RENDERED" => Some(Self::AtomDrawableRendered),
34239            "ATOM_WEAR_MODE_STATE_CHANGED" => Some(Self::AtomWearModeStateChanged),
34240            "ATOM_MEDIA_ACTION_REPORTED" => Some(Self::AtomMediaActionReported),
34241            "ATOM_MEDIA_CONTROLS_LAUNCHED" => Some(Self::AtomMediaControlsLaunched),
34242            "ATOM_MEDIA_SESSION_STATE_CHANGED" => {
34243                Some(Self::AtomMediaSessionStateChanged)
34244            }
34245            "ATOM_MEDIA_CONTROL_API_USAGE_REPORTED" => {
34246                Some(Self::AtomMediaControlApiUsageReported)
34247            }
34248            "ATOM_MEDIA_SUBSCRIPTION_CHANGED" => Some(Self::AtomMediaSubscriptionChanged),
34249            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_DEVICE_SCAN_API_LATENCY" => {
34250                Some(Self::AtomWearMediaOutputSwitcherDeviceScanApiLatency)
34251            }
34252            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_SASS_DEVICE_UNAVAILABLE" => {
34253                Some(Self::AtomWearMediaOutputSwitcherSassDeviceUnavailable)
34254            }
34255            "ATOM_WEAR_MEDIA_OUTPUT_SWITCHER_FASTPAIR_API_TIMEOUT" => {
34256                Some(Self::AtomWearMediaOutputSwitcherFastpairApiTimeout)
34257            }
34258            "ATOM_MEDIATOR_UPDATED" => Some(Self::AtomMediatorUpdated),
34259            "ATOM_SYSPROXY_BLUETOOTH_BYTES_TRANSFER" => {
34260                Some(Self::AtomSysproxyBluetoothBytesTransfer)
34261            }
34262            "ATOM_SYSPROXY_CONNECTION_UPDATED" => {
34263                Some(Self::AtomSysproxyConnectionUpdated)
34264            }
34265            "ATOM_WEAR_COMPANION_CONNECTION_STATE" => {
34266                Some(Self::AtomWearCompanionConnectionState)
34267            }
34268            "ATOM_SYSPROXY_SERVICE_STATE_UPDATED" => {
34269                Some(Self::AtomSysproxyServiceStateUpdated)
34270            }
34271            "ATOM_UWB_ACTIVITY_INFO" => Some(Self::AtomUwbActivityInfo),
34272            "ATOM_TEST_UPROBESTATS_ATOM_REPORTED" => {
34273                Some(Self::AtomTestUprobestatsAtomReported)
34274            }
34275            "ATOM_TV_LOW_POWER_STANDBY_POLICY" => Some(Self::AtomTvLowPowerStandbyPolicy),
34276            "ATOM_EXTERNAL_TV_INPUT_EVENT" => Some(Self::AtomExternalTvInputEvent),
34277            "ATOM_BOOT_INTEGRITY_INFO_REPORTED" => {
34278                Some(Self::AtomBootIntegrityInfoReported)
34279            }
34280            "ATOM_THREADNETWORK_TELEMETRY_DATA_REPORTED" => {
34281                Some(Self::AtomThreadnetworkTelemetryDataReported)
34282            }
34283            "ATOM_THREADNETWORK_TOPO_ENTRY_REPEATED" => {
34284                Some(Self::AtomThreadnetworkTopoEntryRepeated)
34285            }
34286            "ATOM_THREADNETWORK_DEVICE_INFO_REPORTED" => {
34287                Some(Self::AtomThreadnetworkDeviceInfoReported)
34288            }
34289            "ATOM_CELLULAR_RADIO_POWER_STATE_CHANGED" => {
34290                Some(Self::AtomCellularRadioPowerStateChanged)
34291            }
34292            "ATOM_EMERGENCY_NUMBERS_INFO" => Some(Self::AtomEmergencyNumbersInfo),
34293            "ATOM_DATA_NETWORK_VALIDATION" => Some(Self::AtomDataNetworkValidation),
34294            "ATOM_DATA_RAT_STATE_CHANGED" => Some(Self::AtomDataRatStateChanged),
34295            "ATOM_CONNECTED_CHANNEL_CHANGED" => Some(Self::AtomConnectedChannelChanged),
34296            "ATOM_CELLULAR_IDENTIFIER_DISCLOSED" => {
34297                Some(Self::AtomCellularIdentifierDisclosed)
34298            }
34299            "ATOM_SATELLITE_CONTROLLER" => Some(Self::AtomSatelliteController),
34300            "ATOM_SATELLITE_SESSION" => Some(Self::AtomSatelliteSession),
34301            "ATOM_SATELLITE_INCOMING_DATAGRAM" => {
34302                Some(Self::AtomSatelliteIncomingDatagram)
34303            }
34304            "ATOM_SATELLITE_OUTGOING_DATAGRAM" => {
34305                Some(Self::AtomSatelliteOutgoingDatagram)
34306            }
34307            "ATOM_SATELLITE_PROVISION" => Some(Self::AtomSatelliteProvision),
34308            "ATOM_SATELLITE_SOS_MESSAGE_RECOMMENDER" => {
34309                Some(Self::AtomSatelliteSosMessageRecommender)
34310            }
34311            "ATOM_CARRIER_ROAMING_SATELLITE_SESSION" => {
34312                Some(Self::AtomCarrierRoamingSatelliteSession)
34313            }
34314            "ATOM_CARRIER_ROAMING_SATELLITE_CONTROLLER_STATS" => {
34315                Some(Self::AtomCarrierRoamingSatelliteControllerStats)
34316            }
34317            "ATOM_CONTROLLER_STATS_PER_PACKAGE" => {
34318                Some(Self::AtomControllerStatsPerPackage)
34319            }
34320            "ATOM_SATELLITE_ENTITLEMENT" => Some(Self::AtomSatelliteEntitlement),
34321            "ATOM_SATELLITE_CONFIG_UPDATER" => Some(Self::AtomSatelliteConfigUpdater),
34322            "ATOM_SATELLITE_ACCESS_CONTROLLER" => {
34323                Some(Self::AtomSatelliteAccessController)
34324            }
34325            "ATOM_QUALIFIED_RAT_LIST_CHANGED" => Some(Self::AtomQualifiedRatListChanged),
34326            "ATOM_QNS_IMS_CALL_DROP_STATS" => Some(Self::AtomQnsImsCallDropStats),
34327            "ATOM_QNS_FALLBACK_RESTRICTION_CHANGED" => {
34328                Some(Self::AtomQnsFallbackRestrictionChanged)
34329            }
34330            "ATOM_QNS_RAT_PREFERENCE_MISMATCH_INFO" => {
34331                Some(Self::AtomQnsRatPreferenceMismatchInfo)
34332            }
34333            "ATOM_QNS_HANDOVER_TIME_MILLIS" => Some(Self::AtomQnsHandoverTimeMillis),
34334            "ATOM_QNS_HANDOVER_PINGPONG" => Some(Self::AtomQnsHandoverPingpong),
34335            "ATOM_IWLAN_UNDERLYING_NETWORK_VALIDATION_RESULT_REPORTED" => {
34336                Some(Self::AtomIwlanUnderlyingNetworkValidationResultReported)
34337            }
34338            "ATOM_EMERGENCY_NUMBER_DIALED" => Some(Self::AtomEmergencyNumberDialed),
34339            "ATOM_CALL_STATS" => Some(Self::AtomCallStats),
34340            "ATOM_CALL_AUDIO_ROUTE_STATS" => Some(Self::AtomCallAudioRouteStats),
34341            "ATOM_TELECOM_API_STATS" => Some(Self::AtomTelecomApiStats),
34342            "ATOM_TELECOM_ERROR_STATS" => Some(Self::AtomTelecomErrorStats),
34343            "ATOM_LOCKSCREEN_SHORTCUT_SELECTED" => {
34344                Some(Self::AtomLockscreenShortcutSelected)
34345            }
34346            "ATOM_LOCKSCREEN_SHORTCUT_TRIGGERED" => {
34347                Some(Self::AtomLockscreenShortcutTriggered)
34348            }
34349            "ATOM_LAUNCHER_IMPRESSION_EVENT_V2" => {
34350                Some(Self::AtomLauncherImpressionEventV2)
34351            }
34352            "ATOM_DISPLAY_SWITCH_LATENCY_TRACKED" => {
34353                Some(Self::AtomDisplaySwitchLatencyTracked)
34354            }
34355            "ATOM_NOTIFICATION_LISTENER_SERVICE" => {
34356                Some(Self::AtomNotificationListenerService)
34357            }
34358            "ATOM_NAV_HANDLE_TOUCH_POINTS" => Some(Self::AtomNavHandleTouchPoints),
34359            "ATOM_COMMUNAL_HUB_WIDGET_EVENT_REPORTED" => {
34360                Some(Self::AtomCommunalHubWidgetEventReported)
34361            }
34362            "ATOM_PERIPHERAL_TUTORIAL_LAUNCHED" => {
34363                Some(Self::AtomPeripheralTutorialLaunched)
34364            }
34365            "ATOM_CONTEXTUAL_EDUCATION_TRIGGERED" => {
34366                Some(Self::AtomContextualEducationTriggered)
34367            }
34368            "ATOM_COMMUNAL_HUB_SNAPSHOT" => Some(Self::AtomCommunalHubSnapshot),
34369            "ATOM_TEST_EXTENSION_ATOM_REPORTED" => {
34370                Some(Self::AtomTestExtensionAtomReported)
34371            }
34372            "ATOM_TEST_RESTRICTED_ATOM_REPORTED" => {
34373                Some(Self::AtomTestRestrictedAtomReported)
34374            }
34375            "ATOM_STATS_SOCKET_LOSS_REPORTED" => Some(Self::AtomStatsSocketLossReported),
34376            "ATOM_SETTINGS_SPA_REPORTED" => Some(Self::AtomSettingsSpaReported),
34377            "ATOM_SELINUX_AUDIT_LOG" => Some(Self::AtomSelinuxAuditLog),
34378            "ATOM_SANDBOX_API_CALLED" => Some(Self::AtomSandboxApiCalled),
34379            "ATOM_SANDBOX_ACTIVITY_EVENT_OCCURRED" => {
34380                Some(Self::AtomSandboxActivityEventOccurred)
34381            }
34382            "ATOM_SDK_SANDBOX_RESTRICTED_ACCESS_IN_SESSION" => {
34383                Some(Self::AtomSdkSandboxRestrictedAccessInSession)
34384            }
34385            "ATOM_SANDBOX_SDK_STORAGE" => Some(Self::AtomSandboxSdkStorage),
34386            "ATOM_RKPD_POOL_STATS" => Some(Self::AtomRkpdPoolStats),
34387            "ATOM_RKPD_CLIENT_OPERATION" => Some(Self::AtomRkpdClientOperation),
34388            "ATOM_RANGING_SESSION_CONFIGURED" => Some(Self::AtomRangingSessionConfigured),
34389            "ATOM_RANGING_SESSION_STARTED" => Some(Self::AtomRangingSessionStarted),
34390            "ATOM_RANGING_SESSION_CLOSED" => Some(Self::AtomRangingSessionClosed),
34391            "ATOM_RANGING_TECHNOLOGY_STARTED" => Some(Self::AtomRangingTechnologyStarted),
34392            "ATOM_RANGING_TECHNOLOGY_STOPPED" => Some(Self::AtomRangingTechnologyStopped),
34393            "ATOM_MEDIA_PROVIDER_DATABASE_ROLLBACK_REPORTED" => {
34394                Some(Self::AtomMediaProviderDatabaseRollbackReported)
34395            }
34396            "ATOM_BACKUP_SETUP_STATUS_REPORTED" => {
34397                Some(Self::AtomBackupSetupStatusReported)
34398            }
34399            "ATOM_SCREEN_OFF_REPORTED" => Some(Self::AtomScreenOffReported),
34400            "ATOM_SCREEN_TIMEOUT_OVERRIDE_REPORTED" => {
34401                Some(Self::AtomScreenTimeoutOverrideReported)
34402            }
34403            "ATOM_SCREEN_INTERACTIVE_SESSION_REPORTED" => {
34404                Some(Self::AtomScreenInteractiveSessionReported)
34405            }
34406            "ATOM_SCREEN_DIM_REPORTED" => Some(Self::AtomScreenDimReported),
34407            "ATOM_ATOM_9999" => Some(Self::AtomAtom9999),
34408            "ATOM_ATOM_99999" => Some(Self::AtomAtom99999),
34409            "ATOM_PHOTOPICKER_SESSION_INFO_REPORTED" => {
34410                Some(Self::AtomPhotopickerSessionInfoReported)
34411            }
34412            "ATOM_PHOTOPICKER_API_INFO_REPORTED" => {
34413                Some(Self::AtomPhotopickerApiInfoReported)
34414            }
34415            "ATOM_PHOTOPICKER_UI_EVENT_LOGGED" => {
34416                Some(Self::AtomPhotopickerUiEventLogged)
34417            }
34418            "ATOM_PHOTOPICKER_MEDIA_ITEM_STATUS_REPORTED" => {
34419                Some(Self::AtomPhotopickerMediaItemStatusReported)
34420            }
34421            "ATOM_PHOTOPICKER_PREVIEW_INFO_LOGGED" => {
34422                Some(Self::AtomPhotopickerPreviewInfoLogged)
34423            }
34424            "ATOM_PHOTOPICKER_MENU_INTERACTION_LOGGED" => {
34425                Some(Self::AtomPhotopickerMenuInteractionLogged)
34426            }
34427            "ATOM_PHOTOPICKER_BANNER_INTERACTION_LOGGED" => {
34428                Some(Self::AtomPhotopickerBannerInteractionLogged)
34429            }
34430            "ATOM_PHOTOPICKER_MEDIA_LIBRARY_INFO_LOGGED" => {
34431                Some(Self::AtomPhotopickerMediaLibraryInfoLogged)
34432            }
34433            "ATOM_PHOTOPICKER_PAGE_INFO_LOGGED" => {
34434                Some(Self::AtomPhotopickerPageInfoLogged)
34435            }
34436            "ATOM_PHOTOPICKER_MEDIA_GRID_SYNC_INFO_REPORTED" => {
34437                Some(Self::AtomPhotopickerMediaGridSyncInfoReported)
34438            }
34439            "ATOM_PHOTOPICKER_ALBUM_SYNC_INFO_REPORTED" => {
34440                Some(Self::AtomPhotopickerAlbumSyncInfoReported)
34441            }
34442            "ATOM_PHOTOPICKER_SEARCH_INFO_REPORTED" => {
34443                Some(Self::AtomPhotopickerSearchInfoReported)
34444            }
34445            "ATOM_SEARCH_DATA_EXTRACTION_DETAILS_REPORTED" => {
34446                Some(Self::AtomSearchDataExtractionDetailsReported)
34447            }
34448            "ATOM_EMBEDDED_PHOTOPICKER_INFO_REPORTED" => {
34449                Some(Self::AtomEmbeddedPhotopickerInfoReported)
34450            }
34451            "ATOM_PERMISSION_RATIONALE_DIALOG_VIEWED" => {
34452                Some(Self::AtomPermissionRationaleDialogViewed)
34453            }
34454            "ATOM_PERMISSION_RATIONALE_DIALOG_ACTION_REPORTED" => {
34455                Some(Self::AtomPermissionRationaleDialogActionReported)
34456            }
34457            "ATOM_APP_DATA_SHARING_UPDATES_NOTIFICATION_INTERACTION" => {
34458                Some(Self::AtomAppDataSharingUpdatesNotificationInteraction)
34459            }
34460            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_VIEWED" => {
34461                Some(Self::AtomAppDataSharingUpdatesFragmentViewed)
34462            }
34463            "ATOM_APP_DATA_SHARING_UPDATES_FRAGMENT_ACTION_REPORTED" => {
34464                Some(Self::AtomAppDataSharingUpdatesFragmentActionReported)
34465            }
34466            "ATOM_ENHANCED_CONFIRMATION_DIALOG_RESULT_REPORTED" => {
34467                Some(Self::AtomEnhancedConfirmationDialogResultReported)
34468            }
34469            "ATOM_ENHANCED_CONFIRMATION_RESTRICTION_CLEARED" => {
34470                Some(Self::AtomEnhancedConfirmationRestrictionCleared)
34471            }
34472            "ATOM_PRESSURE_STALL_INFORMATION" => Some(Self::AtomPressureStallInformation),
34473            "ATOM_PDF_LOAD_REPORTED" => Some(Self::AtomPdfLoadReported),
34474            "ATOM_PDF_API_USAGE_REPORTED" => Some(Self::AtomPdfApiUsageReported),
34475            "ATOM_PDF_SEARCH_REPORTED" => Some(Self::AtomPdfSearchReported),
34476            "ATOM_COMPONENT_STATE_CHANGED_REPORTED" => {
34477                Some(Self::AtomComponentStateChangedReported)
34478            }
34479            "ATOM_ONDEVICEPERSONALIZATION_API_CALLED" => {
34480                Some(Self::AtomOndevicepersonalizationApiCalled)
34481            }
34482            "ATOM_ONDEVICEPERSONALIZATION_TRACE_EVENT" => {
34483                Some(Self::AtomOndevicepersonalizationTraceEvent)
34484            }
34485            "ATOM_NFC_OBSERVE_MODE_STATE_CHANGED" => {
34486                Some(Self::AtomNfcObserveModeStateChanged)
34487            }
34488            "ATOM_NFC_FIELD_CHANGED" => Some(Self::AtomNfcFieldChanged),
34489            "ATOM_NFC_POLLING_LOOP_NOTIFICATION_REPORTED" => {
34490                Some(Self::AtomNfcPollingLoopNotificationReported)
34491            }
34492            "ATOM_NFC_PROPRIETARY_CAPABILITIES_REPORTED" => {
34493                Some(Self::AtomNfcProprietaryCapabilitiesReported)
34494            }
34495            "ATOM_NFC_EXIT_FRAME_TABLE_CHANGED" => {
34496                Some(Self::AtomNfcExitFrameTableChanged)
34497            }
34498            "ATOM_NFC_AUTO_TRANSACT_REPORTED" => Some(Self::AtomNfcAutoTransactReported),
34499            "ATOM_MICROXR_DEVICE_BOOT_COMPLETE_REPORTED" => {
34500                Some(Self::AtomMicroxrDeviceBootCompleteReported)
34501            }
34502            "ATOM_MTE_STATE" => Some(Self::AtomMteState),
34503            "ATOM_ZRAM_MAINTENANCE_EXECUTED" => Some(Self::AtomZramMaintenanceExecuted),
34504            "ATOM_ZRAM_SETUP_EXECUTED" => Some(Self::AtomZramSetupExecuted),
34505            "ATOM_ZRAM_MM_STAT_MMD" => Some(Self::AtomZramMmStatMmd),
34506            "ATOM_ZRAM_BD_STAT_MMD" => Some(Self::AtomZramBdStatMmd),
34507            "ATOM_MEDIA_EDITING_ENDED_REPORTED" => {
34508                Some(Self::AtomMediaEditingEndedReported)
34509            }
34510            "ATOM_MEDIA_CODEC_RECLAIM_REQUEST_COMPLETED" => {
34511                Some(Self::AtomMediaCodecReclaimRequestCompleted)
34512            }
34513            "ATOM_MEDIA_CODEC_STARTED" => Some(Self::AtomMediaCodecStarted),
34514            "ATOM_MEDIA_CODEC_STOPPED" => Some(Self::AtomMediaCodecStopped),
34515            "ATOM_MEDIA_CODEC_RENDERED" => Some(Self::AtomMediaCodecRendered),
34516            "ATOM_EMERGENCY_STATE_CHANGED" => Some(Self::AtomEmergencyStateChanged),
34517            "ATOM_CHRE_SIGNIFICANT_MOTION_STATE_CHANGED" => {
34518                Some(Self::AtomChreSignificantMotionStateChanged)
34519            }
34520            "ATOM_POPULATION_DENSITY_PROVIDER_LOADING_REPORTED" => {
34521                Some(Self::AtomPopulationDensityProviderLoadingReported)
34522            }
34523            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_USAGE_REPORTED" => {
34524                Some(Self::AtomDensityBasedCoarseLocationsUsageReported)
34525            }
34526            "ATOM_DENSITY_BASED_COARSE_LOCATIONS_PROVIDER_QUERY_REPORTED" => {
34527                Some(Self::AtomDensityBasedCoarseLocationsProviderQueryReported)
34528            }
34529            "ATOM_KERNEL_OOM_KILL_OCCURRED" => Some(Self::AtomKernelOomKillOccurred),
34530            "ATOM_KEYBOARD_CONFIGURED" => Some(Self::AtomKeyboardConfigured),
34531            "ATOM_KEYBOARD_SYSTEMS_EVENT_REPORTED" => {
34532                Some(Self::AtomKeyboardSystemsEventReported)
34533            }
34534            "ATOM_INPUTDEVICE_USAGE_REPORTED" => Some(Self::AtomInputdeviceUsageReported),
34535            "ATOM_INPUT_EVENT_LATENCY_REPORTED" => {
34536                Some(Self::AtomInputEventLatencyReported)
34537            }
34538            "ATOM_TOUCHPAD_USAGE" => Some(Self::AtomTouchpadUsage),
34539            "ATOM_IKE_SESSION_TERMINATED" => Some(Self::AtomIkeSessionTerminated),
34540            "ATOM_IKE_LIVENESS_CHECK_SESSION_VALIDATED" => {
34541                Some(Self::AtomIkeLivenessCheckSessionValidated)
34542            }
34543            "ATOM_NEGOTIATED_SECURITY_ASSOCIATION" => {
34544                Some(Self::AtomNegotiatedSecurityAssociation)
34545            }
34546            "ATOM_HOTWORD_EGRESS_SIZE_ATOM_REPORTED" => {
34547                Some(Self::AtomHotwordEgressSizeAtomReported)
34548            }
34549            "ATOM_HEALTH_CONNECT_UI_IMPRESSION" => {
34550                Some(Self::AtomHealthConnectUiImpression)
34551            }
34552            "ATOM_HEALTH_CONNECT_UI_INTERACTION" => {
34553                Some(Self::AtomHealthConnectUiInteraction)
34554            }
34555            "ATOM_HEALTH_CONNECT_APP_OPENED_REPORTED" => {
34556                Some(Self::AtomHealthConnectAppOpenedReported)
34557            }
34558            "ATOM_HEALTH_CONNECT_API_CALLED" => Some(Self::AtomHealthConnectApiCalled),
34559            "ATOM_HEALTH_CONNECT_USAGE_STATS" => Some(Self::AtomHealthConnectUsageStats),
34560            "ATOM_HEALTH_CONNECT_STORAGE_STATS" => {
34561                Some(Self::AtomHealthConnectStorageStats)
34562            }
34563            "ATOM_HEALTH_CONNECT_API_INVOKED" => Some(Self::AtomHealthConnectApiInvoked),
34564            "ATOM_EXERCISE_ROUTE_API_CALLED" => Some(Self::AtomExerciseRouteApiCalled),
34565            "ATOM_HEALTH_CONNECT_EXPORT_INVOKED" => {
34566                Some(Self::AtomHealthConnectExportInvoked)
34567            }
34568            "ATOM_HEALTH_CONNECT_IMPORT_INVOKED" => {
34569                Some(Self::AtomHealthConnectImportInvoked)
34570            }
34571            "ATOM_HEALTH_CONNECT_EXPORT_IMPORT_STATS_REPORTED" => {
34572                Some(Self::AtomHealthConnectExportImportStatsReported)
34573            }
34574            "ATOM_HEALTH_CONNECT_PERMISSION_STATS" => {
34575                Some(Self::AtomHealthConnectPermissionStats)
34576            }
34577            "ATOM_HEALTH_CONNECT_PHR_API_INVOKED" => {
34578                Some(Self::AtomHealthConnectPhrApiInvoked)
34579            }
34580            "ATOM_HEALTH_CONNECT_PHR_USAGE_STATS" => {
34581                Some(Self::AtomHealthConnectPhrUsageStats)
34582            }
34583            "ATOM_HEALTH_CONNECT_PHR_STORAGE_STATS" => {
34584                Some(Self::AtomHealthConnectPhrStorageStats)
34585            }
34586            "ATOM_HEALTH_CONNECT_RESTRICTED_ECOSYSTEM_STATS" => {
34587                Some(Self::AtomHealthConnectRestrictedEcosystemStats)
34588            }
34589            "ATOM_HEALTH_CONNECT_ECOSYSTEM_STATS" => {
34590                Some(Self::AtomHealthConnectEcosystemStats)
34591            }
34592            "ATOM_HDMI_EARC_STATUS_REPORTED" => Some(Self::AtomHdmiEarcStatusReported),
34593            "ATOM_HDMI_SOUNDBAR_MODE_STATUS_REPORTED" => {
34594                Some(Self::AtomHdmiSoundbarModeStatusReported)
34595            }
34596            "ATOM_HDMI_POWER_STATE_CHANGE_ON_ACTIVE_SOURCE_LOST_TOGGLED" => {
34597                Some(Self::AtomHdmiPowerStateChangeOnActiveSourceLostToggled)
34598            }
34599            "ATOM_BATTERY_HEALTH" => Some(Self::AtomBatteryHealth),
34600            "ATOM_BIOMETRIC_UNENROLLED" => Some(Self::AtomBiometricUnenrolled),
34601            "ATOM_BIOMETRIC_ENUMERATED" => Some(Self::AtomBiometricEnumerated),
34602            "ATOM_APPLICATION_GRAMMATICAL_INFLECTION_CHANGED" => {
34603                Some(Self::AtomApplicationGrammaticalInflectionChanged)
34604            }
34605            "ATOM_SYSTEM_GRAMMATICAL_INFLECTION_CHANGED" => {
34606                Some(Self::AtomSystemGrammaticalInflectionChanged)
34607            }
34608            "ATOM_FULL_SCREEN_INTENT_LAUNCHED" => {
34609                Some(Self::AtomFullScreenIntentLaunched)
34610            }
34611            "ATOM_BAL_ALLOWED" => Some(Self::AtomBalAllowed),
34612            "ATOM_IN_TASK_ACTIVITY_STARTED" => Some(Self::AtomInTaskActivityStarted),
34613            "ATOM_DEVICE_ORIENTATION_CHANGED" => Some(Self::AtomDeviceOrientationChanged),
34614            "ATOM_CACHED_APPS_HIGH_WATERMARK" => Some(Self::AtomCachedAppsHighWatermark),
34615            "ATOM_STYLUS_PREDICTION_METRICS_REPORTED" => {
34616                Some(Self::AtomStylusPredictionMetricsReported)
34617            }
34618            "ATOM_USER_RISK_EVENT_REPORTED" => Some(Self::AtomUserRiskEventReported),
34619            "ATOM_MEDIA_PROJECTION_STATE_CHANGED" => {
34620                Some(Self::AtomMediaProjectionStateChanged)
34621            }
34622            "ATOM_MEDIA_PROJECTION_TARGET_CHANGED" => {
34623                Some(Self::AtomMediaProjectionTargetChanged)
34624            }
34625            "ATOM_EXCESSIVE_BINDER_PROXY_COUNT_REPORTED" => {
34626                Some(Self::AtomExcessiveBinderProxyCountReported)
34627            }
34628            "ATOM_PROXY_BYTES_TRANSFER_BY_FG_BG" => {
34629                Some(Self::AtomProxyBytesTransferByFgBg)
34630            }
34631            "ATOM_MOBILE_BYTES_TRANSFER_BY_PROC_STATE" => {
34632                Some(Self::AtomMobileBytesTransferByProcState)
34633            }
34634            "ATOM_BIOMETRIC_FRR_NOTIFICATION" => Some(Self::AtomBiometricFrrNotification),
34635            "ATOM_SENSITIVE_CONTENT_MEDIA_PROJECTION_SESSION" => {
34636                Some(Self::AtomSensitiveContentMediaProjectionSession)
34637            }
34638            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_SESSION" => {
34639                Some(Self::AtomSensitiveNotificationAppProtectionSession)
34640            }
34641            "ATOM_SENSITIVE_NOTIFICATION_APP_PROTECTION_APPLIED" => {
34642                Some(Self::AtomSensitiveNotificationAppProtectionApplied)
34643            }
34644            "ATOM_SENSITIVE_NOTIFICATION_REDACTION" => {
34645                Some(Self::AtomSensitiveNotificationRedaction)
34646            }
34647            "ATOM_SENSITIVE_CONTENT_APP_PROTECTION" => {
34648                Some(Self::AtomSensitiveContentAppProtection)
34649            }
34650            "ATOM_APP_RESTRICTION_STATE_CHANGED" => {
34651                Some(Self::AtomAppRestrictionStateChanged)
34652            }
34653            "ATOM_BATTERY_USAGE_STATS_PER_UID" => Some(Self::AtomBatteryUsageStatsPerUid),
34654            "ATOM_POSTGC_MEMORY_SNAPSHOT" => Some(Self::AtomPostgcMemorySnapshot),
34655            "ATOM_POWER_SAVE_TEMP_ALLOWLIST_CHANGED" => {
34656                Some(Self::AtomPowerSaveTempAllowlistChanged)
34657            }
34658            "ATOM_APP_OP_ACCESS_TRACKED" => Some(Self::AtomAppOpAccessTracked),
34659            "ATOM_CONTENT_OR_FILE_URI_EVENT_REPORTED" => {
34660                Some(Self::AtomContentOrFileUriEventReported)
34661            }
34662            "ATOM_DEVICE_IDLE_TEMP_ALLOWLIST_UPDATED" => {
34663                Some(Self::AtomDeviceIdleTempAllowlistUpdated)
34664            }
34665            "ATOM_APP_OP_NOTE_OP_OR_CHECK_OP_BINDER_API_CALLED" => {
34666                Some(Self::AtomAppOpNoteOpOrCheckOpBinderApiCalled)
34667            }
34668            "ATOM_FRAMEWORK_WAKELOCK_INFO" => Some(Self::AtomFrameworkWakelockInfo),
34669            "ATOM_JANK_FRAME_COUNT_BY_WIDGET_REPORTED" => {
34670                Some(Self::AtomJankFrameCountByWidgetReported)
34671            }
34672            "ATOM_INTENT_CREATOR_TOKEN_ADDED" => Some(Self::AtomIntentCreatorTokenAdded),
34673            "ATOM_NOTIFICATION_CHANNEL_CLASSIFICATION" => {
34674                Some(Self::AtomNotificationChannelClassification)
34675            }
34676            "ATOM_CAMERA_STATUS_FOR_COMPATIBILITY_CHANGED" => {
34677                Some(Self::AtomCameraStatusForCompatibilityChanged)
34678            }
34679            "ATOM_FEDERATED_COMPUTE_API_CALLED" => {
34680                Some(Self::AtomFederatedComputeApiCalled)
34681            }
34682            "ATOM_FEDERATED_COMPUTE_TRAINING_EVENT_REPORTED" => {
34683                Some(Self::AtomFederatedComputeTrainingEventReported)
34684            }
34685            "ATOM_EXAMPLE_ITERATOR_NEXT_LATENCY_REPORTED" => {
34686                Some(Self::AtomExampleIteratorNextLatencyReported)
34687            }
34688            "ATOM_FEDERATED_COMPUTE_TRACE_EVENT_REPORTED" => {
34689                Some(Self::AtomFederatedComputeTraceEventReported)
34690            }
34691            "ATOM_EXPRESS_EVENT_REPORTED" => Some(Self::AtomExpressEventReported),
34692            "ATOM_EXPRESS_HISTOGRAM_SAMPLE_REPORTED" => {
34693                Some(Self::AtomExpressHistogramSampleReported)
34694            }
34695            "ATOM_EXPRESS_UID_EVENT_REPORTED" => Some(Self::AtomExpressUidEventReported),
34696            "ATOM_EXPRESS_UID_HISTOGRAM_SAMPLE_REPORTED" => {
34697                Some(Self::AtomExpressUidHistogramSampleReported)
34698            }
34699            "ATOM_DREAM_SETTING_CHANGED" => Some(Self::AtomDreamSettingChanged),
34700            "ATOM_DREAM_SETTING_SNAPSHOT" => Some(Self::AtomDreamSettingSnapshot),
34701            "ATOM_DND_STATE_CHANGED" => Some(Self::AtomDndStateChanged),
34702            "ATOM_EXTERNAL_DISPLAY_STATE_CHANGED" => {
34703                Some(Self::AtomExternalDisplayStateChanged)
34704            }
34705            "ATOM_DISPLAY_MODE_DIRECTOR_VOTE_CHANGED" => {
34706                Some(Self::AtomDisplayModeDirectorVoteChanged)
34707            }
34708            "ATOM_DEVICE_POLICY_MANAGEMENT_MODE" => {
34709                Some(Self::AtomDevicePolicyManagementMode)
34710            }
34711            "ATOM_DEVICE_POLICY_STATE" => Some(Self::AtomDevicePolicyState),
34712            "ATOM_DEVICE_LOCK_CHECK_IN_REQUEST_REPORTED" => {
34713                Some(Self::AtomDeviceLockCheckInRequestReported)
34714            }
34715            "ATOM_DEVICE_LOCK_PROVISIONING_COMPLETE_REPORTED" => {
34716                Some(Self::AtomDeviceLockProvisioningCompleteReported)
34717            }
34718            "ATOM_DEVICE_LOCK_KIOSK_APP_REQUEST_REPORTED" => {
34719                Some(Self::AtomDeviceLockKioskAppRequestReported)
34720            }
34721            "ATOM_DEVICE_LOCK_CHECK_IN_RETRY_REPORTED" => {
34722                Some(Self::AtomDeviceLockCheckInRetryReported)
34723            }
34724            "ATOM_DEVICE_LOCK_PROVISION_FAILURE_REPORTED" => {
34725                Some(Self::AtomDeviceLockProvisionFailureReported)
34726            }
34727            "ATOM_DEVICE_LOCK_LOCK_UNLOCK_DEVICE_FAILURE_REPORTED" => {
34728                Some(Self::AtomDeviceLockLockUnlockDeviceFailureReported)
34729            }
34730            "ATOM_DESKTOP_MODE_UI_CHANGED" => Some(Self::AtomDesktopModeUiChanged),
34731            "ATOM_DESKTOP_MODE_SESSION_TASK_UPDATE" => {
34732                Some(Self::AtomDesktopModeSessionTaskUpdate)
34733            }
34734            "ATOM_DESKTOP_MODE_TASK_SIZE_UPDATED" => {
34735                Some(Self::AtomDesktopModeTaskSizeUpdated)
34736            }
34737            "ATOM_CRONET_ENGINE_CREATED" => Some(Self::AtomCronetEngineCreated),
34738            "ATOM_CRONET_TRAFFIC_REPORTED" => Some(Self::AtomCronetTrafficReported),
34739            "ATOM_CRONET_ENGINE_BUILDER_INITIALIZED" => {
34740                Some(Self::AtomCronetEngineBuilderInitialized)
34741            }
34742            "ATOM_CRONET_HTTP_FLAGS_INITIALIZED" => {
34743                Some(Self::AtomCronetHttpFlagsInitialized)
34744            }
34745            "ATOM_CRONET_INITIALIZED" => Some(Self::AtomCronetInitialized),
34746            "ATOM_CREDENTIAL_MANAGER_API_CALLED" => {
34747                Some(Self::AtomCredentialManagerApiCalled)
34748            }
34749            "ATOM_CREDENTIAL_MANAGER_INIT_PHASE_REPORTED" => {
34750                Some(Self::AtomCredentialManagerInitPhaseReported)
34751            }
34752            "ATOM_CREDENTIAL_MANAGER_CANDIDATE_PHASE_REPORTED" => {
34753                Some(Self::AtomCredentialManagerCandidatePhaseReported)
34754            }
34755            "ATOM_CREDENTIAL_MANAGER_FINAL_PHASE_REPORTED" => {
34756                Some(Self::AtomCredentialManagerFinalPhaseReported)
34757            }
34758            "ATOM_CREDENTIAL_MANAGER_TOTAL_REPORTED" => {
34759                Some(Self::AtomCredentialManagerTotalReported)
34760            }
34761            "ATOM_CREDENTIAL_MANAGER_FINALNOUID_REPORTED" => {
34762                Some(Self::AtomCredentialManagerFinalnouidReported)
34763            }
34764            "ATOM_CREDENTIAL_MANAGER_GET_REPORTED" => {
34765                Some(Self::AtomCredentialManagerGetReported)
34766            }
34767            "ATOM_CREDENTIAL_MANAGER_AUTH_CLICK_REPORTED" => {
34768                Some(Self::AtomCredentialManagerAuthClickReported)
34769            }
34770            "ATOM_CREDENTIAL_MANAGER_APIV2_CALLED" => {
34771                Some(Self::AtomCredentialManagerApiv2Called)
34772            }
34773            "ATOM_CPU_POLICY" => Some(Self::AtomCpuPolicy),
34774            "ATOM_VPN_CONNECTION_STATE_CHANGED" => {
34775                Some(Self::AtomVpnConnectionStateChanged)
34776            }
34777            "ATOM_VPN_CONNECTION_REPORTED" => Some(Self::AtomVpnConnectionReported),
34778            "ATOM_IP_CLIENT_RA_INFO_REPORTED" => Some(Self::AtomIpClientRaInfoReported),
34779            "ATOM_APF_SESSION_INFO_REPORTED" => Some(Self::AtomApfSessionInfoReported),
34780            "ATOM_CORE_NETWORKING_TERRIBLE_ERROR_OCCURRED" => {
34781                Some(Self::AtomCoreNetworkingTerribleErrorOccurred)
34782            }
34783            "ATOM_NETWORK_STATS_RECORDER_FILE_OPERATED" => {
34784                Some(Self::AtomNetworkStatsRecorderFileOperated)
34785            }
34786            "ATOM_DAILY_KEEPALIVE_INFO_REPORTED" => {
34787                Some(Self::AtomDailyKeepaliveInfoReported)
34788            }
34789            "ATOM_NETWORK_REQUEST_STATE_CHANGED" => {
34790                Some(Self::AtomNetworkRequestStateChanged)
34791            }
34792            "ATOM_TETHERING_ACTIVE_SESSIONS_REPORTED" => {
34793                Some(Self::AtomTetheringActiveSessionsReported)
34794            }
34795            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED" => {
34796                Some(Self::AtomCertificateTransparencyLogListUpdateStateChanged)
34797            }
34798            "ATOM_HARDWARE_RENDERER_EVENT" => Some(Self::AtomHardwareRendererEvent),
34799            "ATOM_TEXTURE_VIEW_EVENT" => Some(Self::AtomTextureViewEvent),
34800            "ATOM_SURFACE_CONTROL_EVENT" => Some(Self::AtomSurfaceControlEvent),
34801            "ATOM_IMAGE_DECODED" => Some(Self::AtomImageDecoded),
34802            "ATOM_CERTIFICATE_TRANSPARENCY_LOG_LIST_STATE_CHANGED" => {
34803                Some(Self::AtomCertificateTransparencyLogListStateChanged)
34804            }
34805            "ATOM_CONSCRYPT_SERVICE_USED" => Some(Self::AtomConscryptServiceUsed),
34806            "ATOM_CERTIFICATE_TRANSPARENCY_VERIFICATION_REPORTED" => {
34807                Some(Self::AtomCertificateTransparencyVerificationReported)
34808            }
34809            "ATOM_CAMERA_FEATURE_COMBINATION_QUERY_EVENT" => {
34810                Some(Self::AtomCameraFeatureCombinationQueryEvent)
34811            }
34812            "ATOM_BROADCAST_SENT" => Some(Self::AtomBroadcastSent),
34813            "ATOM_BLUETOOTH_HASHED_DEVICE_NAME_REPORTED" => {
34814                Some(Self::AtomBluetoothHashedDeviceNameReported)
34815            }
34816            "ATOM_BLUETOOTH_L2CAP_COC_CLIENT_CONNECTION" => {
34817                Some(Self::AtomBluetoothL2capCocClientConnection)
34818            }
34819            "ATOM_BLUETOOTH_L2CAP_COC_SERVER_CONNECTION" => {
34820                Some(Self::AtomBluetoothL2capCocServerConnection)
34821            }
34822            "ATOM_BLUETOOTH_LE_SESSION_CONNECTED" => {
34823                Some(Self::AtomBluetoothLeSessionConnected)
34824            }
34825            "ATOM_RESTRICTED_BLUETOOTH_DEVICE_NAME_REPORTED" => {
34826                Some(Self::AtomRestrictedBluetoothDeviceNameReported)
34827            }
34828            "ATOM_BLUETOOTH_PROFILE_CONNECTION_ATTEMPTED" => {
34829                Some(Self::AtomBluetoothProfileConnectionAttempted)
34830            }
34831            "ATOM_BLUETOOTH_CONTENT_PROFILE_ERROR_REPORTED" => {
34832                Some(Self::AtomBluetoothContentProfileErrorReported)
34833            }
34834            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_ATTEMPTED" => {
34835                Some(Self::AtomBluetoothRfcommConnectionAttempted)
34836            }
34837            "ATOM_REMOTE_DEVICE_INFORMATION_WITH_METRIC_ID" => {
34838                Some(Self::AtomRemoteDeviceInformationWithMetricId)
34839            }
34840            "ATOM_LE_APP_SCAN_STATE_CHANGED" => Some(Self::AtomLeAppScanStateChanged),
34841            "ATOM_LE_RADIO_SCAN_STOPPED" => Some(Self::AtomLeRadioScanStopped),
34842            "ATOM_LE_SCAN_RESULT_RECEIVED" => Some(Self::AtomLeScanResultReceived),
34843            "ATOM_LE_SCAN_ABUSED" => Some(Self::AtomLeScanAbused),
34844            "ATOM_LE_ADV_STATE_CHANGED" => Some(Self::AtomLeAdvStateChanged),
34845            "ATOM_LE_ADV_ERROR_REPORTED" => Some(Self::AtomLeAdvErrorReported),
34846            "ATOM_A2DP_SESSION_REPORTED" => Some(Self::AtomA2dpSessionReported),
34847            "ATOM_BLUETOOTH_CROSS_LAYER_EVENT_REPORTED" => {
34848                Some(Self::AtomBluetoothCrossLayerEventReported)
34849            }
34850            "ATOM_BROADCAST_AUDIO_SESSION_REPORTED" => {
34851                Some(Self::AtomBroadcastAudioSessionReported)
34852            }
34853            "ATOM_BROADCAST_AUDIO_SYNC_REPORTED" => {
34854                Some(Self::AtomBroadcastAudioSyncReported)
34855            }
34856            "ATOM_BLUETOOTH_RFCOMM_CONNECTION_REPORTED_AT_CLOSE" => {
34857                Some(Self::AtomBluetoothRfcommConnectionReportedAtClose)
34858            }
34859            "ATOM_BLUETOOTH_LE_CONNECTION" => Some(Self::AtomBluetoothLeConnection),
34860            "ATOM_HEARING_DEVICE_ACTIVE_EVENT_REPORTED" => {
34861                Some(Self::AtomHearingDeviceActiveEventReported)
34862            }
34863            "ATOM_BACKPORTED_FIX_STATUS_REPORTED" => {
34864                Some(Self::AtomBackportedFixStatusReported)
34865            }
34866            "ATOM_PLUGIN_INITIALIZED" => Some(Self::AtomPluginInitialized),
34867            "ATOM_CAR_SYSTEM_UI_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
34868                Some(Self::AtomCarSystemUiDataSubscriptionEventReported)
34869            }
34870            "ATOM_CAR_SETTINGS_DATA_SUBSCRIPTION_EVENT_REPORTED" => {
34871                Some(Self::AtomCarSettingsDataSubscriptionEventReported)
34872            }
34873            "ATOM_CAR_QC_LIB_EVENT_REPORTED" => Some(Self::AtomCarQcLibEventReported),
34874            "ATOM_CAR_WAKEUP_FROM_SUSPEND_REPORTED" => {
34875                Some(Self::AtomCarWakeupFromSuspendReported)
34876            }
34877            "ATOM_CAR_RECENTS_EVENT_REPORTED" => Some(Self::AtomCarRecentsEventReported),
34878            "ATOM_CAR_CALM_MODE_EVENT_REPORTED" => {
34879                Some(Self::AtomCarCalmModeEventReported)
34880            }
34881            "ATOM_AUTOFILL_UI_EVENT_REPORTED" => Some(Self::AtomAutofillUiEventReported),
34882            "ATOM_AUTOFILL_FILL_REQUEST_REPORTED" => {
34883                Some(Self::AtomAutofillFillRequestReported)
34884            }
34885            "ATOM_AUTOFILL_FILL_RESPONSE_REPORTED" => {
34886                Some(Self::AtomAutofillFillResponseReported)
34887            }
34888            "ATOM_AUTOFILL_SAVE_EVENT_REPORTED" => {
34889                Some(Self::AtomAutofillSaveEventReported)
34890            }
34891            "ATOM_AUTOFILL_SESSION_COMMITTED" => Some(Self::AtomAutofillSessionCommitted),
34892            "ATOM_AUTOFILL_FIELD_CLASSIFICATION_EVENT_REPORTED" => {
34893                Some(Self::AtomAutofillFieldClassificationEventReported)
34894            }
34895            "ATOM_ODREFRESH_REPORTED" => Some(Self::AtomOdrefreshReported),
34896            "ATOM_ODSIGN_REPORTED" => Some(Self::AtomOdsignReported),
34897            "ATOM_BACKGROUND_DEXOPT_JOB_ENDED" => {
34898                Some(Self::AtomBackgroundDexoptJobEnded)
34899            }
34900            "ATOM_PREREBOOT_DEXOPT_JOB_ENDED" => Some(Self::AtomPrerebootDexoptJobEnded),
34901            "ATOM_ART_DATUM_REPORTED" => Some(Self::AtomArtDatumReported),
34902            "ATOM_ART_DEVICE_DATUM_REPORTED" => Some(Self::AtomArtDeviceDatumReported),
34903            "ATOM_ART_DATUM_DELTA_REPORTED" => Some(Self::AtomArtDatumDeltaReported),
34904            "ATOM_ART_DEX2OAT_REPORTED" => Some(Self::AtomArtDex2oatReported),
34905            "ATOM_ART_DEVICE_STATUS" => Some(Self::AtomArtDeviceStatus),
34906            "ATOM_APP_SEARCH_SET_SCHEMA_STATS_REPORTED" => {
34907                Some(Self::AtomAppSearchSetSchemaStatsReported)
34908            }
34909            "ATOM_APP_SEARCH_SCHEMA_MIGRATION_STATS_REPORTED" => {
34910                Some(Self::AtomAppSearchSchemaMigrationStatsReported)
34911            }
34912            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_STATS_REPORTED" => {
34913                Some(Self::AtomAppSearchUsageSearchIntentStatsReported)
34914            }
34915            "ATOM_APP_SEARCH_USAGE_SEARCH_INTENT_RAW_QUERY_STATS_REPORTED" => {
34916                Some(Self::AtomAppSearchUsageSearchIntentRawQueryStatsReported)
34917            }
34918            "ATOM_APP_SEARCH_APPS_INDEXER_STATS_REPORTED" => {
34919                Some(Self::AtomAppSearchAppsIndexerStatsReported)
34920            }
34921            "ATOM_APP_FUNCTIONS_REQUEST_REPORTED" => {
34922                Some(Self::AtomAppFunctionsRequestReported)
34923            }
34924            "ATOM_APEX_INSTALLATION_REQUESTED" => {
34925                Some(Self::AtomApexInstallationRequested)
34926            }
34927            "ATOM_APEX_INSTALLATION_STAGED" => Some(Self::AtomApexInstallationStaged),
34928            "ATOM_APEX_INSTALLATION_ENDED" => Some(Self::AtomApexInstallationEnded),
34929            "ATOM_AI_WALLPAPERS_BUTTON_PRESSED" => {
34930                Some(Self::AtomAiWallpapersButtonPressed)
34931            }
34932            "ATOM_AI_WALLPAPERS_TEMPLATE_SELECTED" => {
34933                Some(Self::AtomAiWallpapersTemplateSelected)
34934            }
34935            "ATOM_AI_WALLPAPERS_TERM_SELECTED" => {
34936                Some(Self::AtomAiWallpapersTermSelected)
34937            }
34938            "ATOM_AI_WALLPAPERS_WALLPAPER_SET" => {
34939                Some(Self::AtomAiWallpapersWallpaperSet)
34940            }
34941            "ATOM_AI_WALLPAPERS_SESSION_SUMMARY" => {
34942                Some(Self::AtomAiWallpapersSessionSummary)
34943            }
34944            "ATOM_JSSCRIPTENGINE_LATENCY_REPORTED" => {
34945                Some(Self::AtomJsscriptengineLatencyReported)
34946            }
34947            "ATOM_AD_SERVICES_API_CALLED" => Some(Self::AtomAdServicesApiCalled),
34948            "ATOM_AD_SERVICES_MESUREMENT_REPORTS_UPLOADED" => {
34949                Some(Self::AtomAdServicesMesurementReportsUploaded)
34950            }
34951            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STATUS_REPORTED" => {
34952                Some(Self::AtomMobileDataDownloadFileGroupStatusReported)
34953            }
34954            "ATOM_MOBILE_DATA_DOWNLOAD_DOWNLOAD_RESULT_REPORTED" => {
34955                Some(Self::AtomMobileDataDownloadDownloadResultReported)
34956            }
34957            "ATOM_AD_SERVICES_SETTINGS_USAGE_REPORTED" => {
34958                Some(Self::AtomAdServicesSettingsUsageReported)
34959            }
34960            "ATOM_BACKGROUND_FETCH_PROCESS_REPORTED" => {
34961                Some(Self::AtomBackgroundFetchProcessReported)
34962            }
34963            "ATOM_UPDATE_CUSTOM_AUDIENCE_PROCESS_REPORTED" => {
34964                Some(Self::AtomUpdateCustomAudienceProcessReported)
34965            }
34966            "ATOM_RUN_AD_BIDDING_PROCESS_REPORTED" => {
34967                Some(Self::AtomRunAdBiddingProcessReported)
34968            }
34969            "ATOM_RUN_AD_SCORING_PROCESS_REPORTED" => {
34970                Some(Self::AtomRunAdScoringProcessReported)
34971            }
34972            "ATOM_RUN_AD_SELECTION_PROCESS_REPORTED" => {
34973                Some(Self::AtomRunAdSelectionProcessReported)
34974            }
34975            "ATOM_RUN_AD_BIDDING_PER_CA_PROCESS_REPORTED" => {
34976                Some(Self::AtomRunAdBiddingPerCaProcessReported)
34977            }
34978            "ATOM_MOBILE_DATA_DOWNLOAD_FILE_GROUP_STORAGE_STATS_REPORTED" => {
34979                Some(Self::AtomMobileDataDownloadFileGroupStorageStatsReported)
34980            }
34981            "ATOM_AD_SERVICES_MEASUREMENT_REGISTRATIONS" => {
34982                Some(Self::AtomAdServicesMeasurementRegistrations)
34983            }
34984            "ATOM_AD_SERVICES_GET_TOPICS_REPORTED" => {
34985                Some(Self::AtomAdServicesGetTopicsReported)
34986            }
34987            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_GET_TOP_TOPICS_REPORTED" => {
34988                Some(Self::AtomAdServicesEpochComputationGetTopTopicsReported)
34989            }
34990            "ATOM_AD_SERVICES_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
34991                Some(Self::AtomAdServicesEpochComputationClassifierReported)
34992            }
34993            "ATOM_AD_SERVICES_BACK_COMPAT_GET_TOPICS_REPORTED" => {
34994                Some(Self::AtomAdServicesBackCompatGetTopicsReported)
34995            }
34996            "ATOM_AD_SERVICES_BACK_COMPAT_EPOCH_COMPUTATION_CLASSIFIER_REPORTED" => {
34997                Some(Self::AtomAdServicesBackCompatEpochComputationClassifierReported)
34998            }
34999            "ATOM_AD_SERVICES_MEASUREMENT_DEBUG_KEYS" => {
35000                Some(Self::AtomAdServicesMeasurementDebugKeys)
35001            }
35002            "ATOM_AD_SERVICES_ERROR_REPORTED" => Some(Self::AtomAdServicesErrorReported),
35003            "ATOM_AD_SERVICES_BACKGROUND_JOBS_EXECUTION_REPORTED" => {
35004                Some(Self::AtomAdServicesBackgroundJobsExecutionReported)
35005            }
35006            "ATOM_AD_SERVICES_MEASUREMENT_DELAYED_SOURCE_REGISTRATION" => {
35007                Some(Self::AtomAdServicesMeasurementDelayedSourceRegistration)
35008            }
35009            "ATOM_AD_SERVICES_MEASUREMENT_ATTRIBUTION" => {
35010                Some(Self::AtomAdServicesMeasurementAttribution)
35011            }
35012            "ATOM_AD_SERVICES_MEASUREMENT_JOBS" => {
35013                Some(Self::AtomAdServicesMeasurementJobs)
35014            }
35015            "ATOM_AD_SERVICES_MEASUREMENT_WIPEOUT" => {
35016                Some(Self::AtomAdServicesMeasurementWipeout)
35017            }
35018            "ATOM_AD_SERVICES_MEASUREMENT_AD_ID_MATCH_FOR_DEBUG_KEYS" => {
35019                Some(Self::AtomAdServicesMeasurementAdIdMatchForDebugKeys)
35020            }
35021            "ATOM_AD_SERVICES_ENROLLMENT_DATA_STORED" => {
35022                Some(Self::AtomAdServicesEnrollmentDataStored)
35023            }
35024            "ATOM_AD_SERVICES_ENROLLMENT_FILE_DOWNLOADED" => {
35025                Some(Self::AtomAdServicesEnrollmentFileDownloaded)
35026            }
35027            "ATOM_AD_SERVICES_ENROLLMENT_MATCHED" => {
35028                Some(Self::AtomAdServicesEnrollmentMatched)
35029            }
35030            "ATOM_AD_SERVICES_CONSENT_MIGRATED" => {
35031                Some(Self::AtomAdServicesConsentMigrated)
35032            }
35033            "ATOM_AD_SERVICES_ENROLLMENT_FAILED" => {
35034                Some(Self::AtomAdServicesEnrollmentFailed)
35035            }
35036            "ATOM_AD_SERVICES_MEASUREMENT_CLICK_VERIFICATION" => {
35037                Some(Self::AtomAdServicesMeasurementClickVerification)
35038            }
35039            "ATOM_AD_SERVICES_ENCRYPTION_KEY_FETCHED" => {
35040                Some(Self::AtomAdServicesEncryptionKeyFetched)
35041            }
35042            "ATOM_AD_SERVICES_ENCRYPTION_KEY_DB_TRANSACTION_ENDED" => {
35043                Some(Self::AtomAdServicesEncryptionKeyDbTransactionEnded)
35044            }
35045            "ATOM_DESTINATION_REGISTERED_BEACONS" => {
35046                Some(Self::AtomDestinationRegisteredBeacons)
35047            }
35048            "ATOM_REPORT_INTERACTION_API_CALLED" => {
35049                Some(Self::AtomReportInteractionApiCalled)
35050            }
35051            "ATOM_INTERACTION_REPORTING_TABLE_CLEARED" => {
35052                Some(Self::AtomInteractionReportingTableCleared)
35053            }
35054            "ATOM_APP_MANIFEST_CONFIG_HELPER_CALLED" => {
35055                Some(Self::AtomAppManifestConfigHelperCalled)
35056            }
35057            "ATOM_AD_FILTERING_PROCESS_JOIN_CA_REPORTED" => {
35058                Some(Self::AtomAdFilteringProcessJoinCaReported)
35059            }
35060            "ATOM_AD_FILTERING_PROCESS_AD_SELECTION_REPORTED" => {
35061                Some(Self::AtomAdFilteringProcessAdSelectionReported)
35062            }
35063            "ATOM_AD_COUNTER_HISTOGRAM_UPDATER_REPORTED" => {
35064                Some(Self::AtomAdCounterHistogramUpdaterReported)
35065            }
35066            "ATOM_SIGNATURE_VERIFICATION" => Some(Self::AtomSignatureVerification),
35067            "ATOM_K_ANON_IMMEDIATE_SIGN_JOIN_STATUS_REPORTED" => {
35068                Some(Self::AtomKAnonImmediateSignJoinStatusReported)
35069            }
35070            "ATOM_K_ANON_BACKGROUND_JOB_STATUS_REPORTED" => {
35071                Some(Self::AtomKAnonBackgroundJobStatusReported)
35072            }
35073            "ATOM_K_ANON_INITIALIZE_STATUS_REPORTED" => {
35074                Some(Self::AtomKAnonInitializeStatusReported)
35075            }
35076            "ATOM_K_ANON_SIGN_STATUS_REPORTED" => Some(Self::AtomKAnonSignStatusReported),
35077            "ATOM_K_ANON_JOIN_STATUS_REPORTED" => Some(Self::AtomKAnonJoinStatusReported),
35078            "ATOM_K_ANON_KEY_ATTESTATION_STATUS_REPORTED" => {
35079                Some(Self::AtomKAnonKeyAttestationStatusReported)
35080            }
35081            "ATOM_GET_AD_SELECTION_DATA_API_CALLED" => {
35082                Some(Self::AtomGetAdSelectionDataApiCalled)
35083            }
35084            "ATOM_GET_AD_SELECTION_DATA_BUYER_INPUT_GENERATED" => {
35085                Some(Self::AtomGetAdSelectionDataBuyerInputGenerated)
35086            }
35087            "ATOM_BACKGROUND_JOB_SCHEDULING_REPORTED" => {
35088                Some(Self::AtomBackgroundJobSchedulingReported)
35089            }
35090            "ATOM_TOPICS_ENCRYPTION_EPOCH_COMPUTATION_REPORTED" => {
35091                Some(Self::AtomTopicsEncryptionEpochComputationReported)
35092            }
35093            "ATOM_TOPICS_ENCRYPTION_GET_TOPICS_REPORTED" => {
35094                Some(Self::AtomTopicsEncryptionGetTopicsReported)
35095            }
35096            "ATOM_ADSERVICES_SHELL_COMMAND_CALLED" => {
35097                Some(Self::AtomAdservicesShellCommandCalled)
35098            }
35099            "ATOM_UPDATE_SIGNALS_API_CALLED" => Some(Self::AtomUpdateSignalsApiCalled),
35100            "ATOM_ENCODING_JOB_RUN" => Some(Self::AtomEncodingJobRun),
35101            "ATOM_ENCODING_JS_FETCH" => Some(Self::AtomEncodingJsFetch),
35102            "ATOM_ENCODING_JS_EXECUTION" => Some(Self::AtomEncodingJsExecution),
35103            "ATOM_PERSIST_AD_SELECTION_RESULT_CALLED" => {
35104                Some(Self::AtomPersistAdSelectionResultCalled)
35105            }
35106            "ATOM_SERVER_AUCTION_KEY_FETCH_CALLED" => {
35107                Some(Self::AtomServerAuctionKeyFetchCalled)
35108            }
35109            "ATOM_SERVER_AUCTION_BACKGROUND_KEY_FETCH_ENABLED" => {
35110                Some(Self::AtomServerAuctionBackgroundKeyFetchEnabled)
35111            }
35112            "ATOM_AD_SERVICES_MEASUREMENT_PROCESS_ODP_REGISTRATION" => {
35113                Some(Self::AtomAdServicesMeasurementProcessOdpRegistration)
35114            }
35115            "ATOM_AD_SERVICES_MEASUREMENT_NOTIFY_REGISTRATION_TO_ODP" => {
35116                Some(Self::AtomAdServicesMeasurementNotifyRegistrationToOdp)
35117            }
35118            "ATOM_SELECT_ADS_FROM_OUTCOMES_API_CALLED" => {
35119                Some(Self::AtomSelectAdsFromOutcomesApiCalled)
35120            }
35121            "ATOM_REPORT_IMPRESSION_API_CALLED" => {
35122                Some(Self::AtomReportImpressionApiCalled)
35123            }
35124            "ATOM_AD_SERVICES_ENROLLMENT_TRANSACTION_STATS" => {
35125                Some(Self::AtomAdServicesEnrollmentTransactionStats)
35126            }
35127            "ATOM_AD_SERVICES_COBALT_LOGGER_EVENT_REPORTED" => {
35128                Some(Self::AtomAdServicesCobaltLoggerEventReported)
35129            }
35130            "ATOM_AD_SERVICES_COBALT_PERIODIC_JOB_EVENT_REPORTED" => {
35131                Some(Self::AtomAdServicesCobaltPeriodicJobEventReported)
35132            }
35133            "ATOM_UPDATE_SIGNALS_PROCESS_REPORTED" => {
35134                Some(Self::AtomUpdateSignalsProcessReported)
35135            }
35136            "ATOM_TOPICS_SCHEDULE_EPOCH_JOB_SETTING_REPORTED" => {
35137                Some(Self::AtomTopicsScheduleEpochJobSettingReported)
35138            }
35139            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_SCHEDULE_ATTEMPTED" => {
35140                Some(Self::AtomScheduledCustomAudienceUpdateScheduleAttempted)
35141            }
35142            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED" => {
35143                Some(Self::AtomScheduledCustomAudienceUpdatePerformed)
35144            }
35145            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_PERFORMED_ATTEMPTED_FAILURE_REPORTED" => {
35146                Some(
35147                    Self::AtomScheduledCustomAudienceUpdatePerformedAttemptedFailureReported,
35148                )
35149            }
35150            "ATOM_SCHEDULED_CUSTOM_AUDIENCE_UPDATE_BACKGROUND_JOB_RAN" => {
35151                Some(Self::AtomScheduledCustomAudienceUpdateBackgroundJobRan)
35152            }
35153            "ATOM_THERMAL_STATUS_CALLED" => Some(Self::AtomThermalStatusCalled),
35154            "ATOM_THERMAL_HEADROOM_CALLED" => Some(Self::AtomThermalHeadroomCalled),
35155            "ATOM_THERMAL_HEADROOM_THRESHOLDS_CALLED" => {
35156                Some(Self::AtomThermalHeadroomThresholdsCalled)
35157            }
35158            "ATOM_ADPF_HINT_SESSION_TID_CLEANUP" => {
35159                Some(Self::AtomAdpfHintSessionTidCleanup)
35160            }
35161            "ATOM_THERMAL_HEADROOM_THRESHOLDS" => {
35162                Some(Self::AtomThermalHeadroomThresholds)
35163            }
35164            "ATOM_ADPF_SESSION_SNAPSHOT" => Some(Self::AtomAdpfSessionSnapshot),
35165            "ATOM_ADAPTIVE_AUTH_UNLOCK_AFTER_LOCK_REPORTED" => {
35166                Some(Self::AtomAdaptiveAuthUnlockAfterLockReported)
35167            }
35168            "ATOM_ACCOUNT_MANAGER_EVENT" => Some(Self::AtomAccountManagerEvent),
35169            "ATOM_ACCESSIBILITY_CHECK_RESULT_REPORTED" => {
35170                Some(Self::AtomAccessibilityCheckResultReported)
35171            }
35172            _ => None,
35173        }
35174    }
35175}
35176/// When editing entries here remember also to update "sys_stats_counters.h" with
35177/// the corresponding string definitions for the actual /proc files parser.
35178///
35179/// Counter definitions for Linux's /proc/meminfo.
35180#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
35181#[repr(i32)]
35182pub enum MeminfoCounters {
35183    MeminfoUnspecified = 0,
35184    MeminfoMemTotal = 1,
35185    MeminfoMemFree = 2,
35186    MeminfoMemAvailable = 3,
35187    MeminfoBuffers = 4,
35188    MeminfoCached = 5,
35189    MeminfoSwapCached = 6,
35190    MeminfoActive = 7,
35191    MeminfoInactive = 8,
35192    MeminfoActiveAnon = 9,
35193    MeminfoInactiveAnon = 10,
35194    MeminfoActiveFile = 11,
35195    MeminfoInactiveFile = 12,
35196    MeminfoUnevictable = 13,
35197    MeminfoMlocked = 14,
35198    MeminfoSwapTotal = 15,
35199    MeminfoSwapFree = 16,
35200    MeminfoDirty = 17,
35201    MeminfoWriteback = 18,
35202    MeminfoAnonPages = 19,
35203    MeminfoMapped = 20,
35204    MeminfoShmem = 21,
35205    MeminfoSlab = 22,
35206    MeminfoSlabReclaimable = 23,
35207    MeminfoSlabUnreclaimable = 24,
35208    MeminfoKernelStack = 25,
35209    MeminfoPageTables = 26,
35210    MeminfoCommitLimit = 27,
35211    MeminfoCommitedAs = 28,
35212    MeminfoVmallocTotal = 29,
35213    MeminfoVmallocUsed = 30,
35214    MeminfoVmallocChunk = 31,
35215    MeminfoCmaTotal = 32,
35216    MeminfoCmaFree = 33,
35217    MeminfoGpu = 34,
35218    MeminfoZram = 35,
35219    MeminfoMisc = 36,
35220    MeminfoIonHeap = 37,
35221    MeminfoIonHeapPool = 38,
35222}
35223impl MeminfoCounters {
35224    /// String value of the enum field names used in the ProtoBuf definition.
35225    ///
35226    /// The values are not transformed in any way and thus are considered stable
35227    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
35228    pub fn as_str_name(&self) -> &'static str {
35229        match self {
35230            Self::MeminfoUnspecified => "MEMINFO_UNSPECIFIED",
35231            Self::MeminfoMemTotal => "MEMINFO_MEM_TOTAL",
35232            Self::MeminfoMemFree => "MEMINFO_MEM_FREE",
35233            Self::MeminfoMemAvailable => "MEMINFO_MEM_AVAILABLE",
35234            Self::MeminfoBuffers => "MEMINFO_BUFFERS",
35235            Self::MeminfoCached => "MEMINFO_CACHED",
35236            Self::MeminfoSwapCached => "MEMINFO_SWAP_CACHED",
35237            Self::MeminfoActive => "MEMINFO_ACTIVE",
35238            Self::MeminfoInactive => "MEMINFO_INACTIVE",
35239            Self::MeminfoActiveAnon => "MEMINFO_ACTIVE_ANON",
35240            Self::MeminfoInactiveAnon => "MEMINFO_INACTIVE_ANON",
35241            Self::MeminfoActiveFile => "MEMINFO_ACTIVE_FILE",
35242            Self::MeminfoInactiveFile => "MEMINFO_INACTIVE_FILE",
35243            Self::MeminfoUnevictable => "MEMINFO_UNEVICTABLE",
35244            Self::MeminfoMlocked => "MEMINFO_MLOCKED",
35245            Self::MeminfoSwapTotal => "MEMINFO_SWAP_TOTAL",
35246            Self::MeminfoSwapFree => "MEMINFO_SWAP_FREE",
35247            Self::MeminfoDirty => "MEMINFO_DIRTY",
35248            Self::MeminfoWriteback => "MEMINFO_WRITEBACK",
35249            Self::MeminfoAnonPages => "MEMINFO_ANON_PAGES",
35250            Self::MeminfoMapped => "MEMINFO_MAPPED",
35251            Self::MeminfoShmem => "MEMINFO_SHMEM",
35252            Self::MeminfoSlab => "MEMINFO_SLAB",
35253            Self::MeminfoSlabReclaimable => "MEMINFO_SLAB_RECLAIMABLE",
35254            Self::MeminfoSlabUnreclaimable => "MEMINFO_SLAB_UNRECLAIMABLE",
35255            Self::MeminfoKernelStack => "MEMINFO_KERNEL_STACK",
35256            Self::MeminfoPageTables => "MEMINFO_PAGE_TABLES",
35257            Self::MeminfoCommitLimit => "MEMINFO_COMMIT_LIMIT",
35258            Self::MeminfoCommitedAs => "MEMINFO_COMMITED_AS",
35259            Self::MeminfoVmallocTotal => "MEMINFO_VMALLOC_TOTAL",
35260            Self::MeminfoVmallocUsed => "MEMINFO_VMALLOC_USED",
35261            Self::MeminfoVmallocChunk => "MEMINFO_VMALLOC_CHUNK",
35262            Self::MeminfoCmaTotal => "MEMINFO_CMA_TOTAL",
35263            Self::MeminfoCmaFree => "MEMINFO_CMA_FREE",
35264            Self::MeminfoGpu => "MEMINFO_GPU",
35265            Self::MeminfoZram => "MEMINFO_ZRAM",
35266            Self::MeminfoMisc => "MEMINFO_MISC",
35267            Self::MeminfoIonHeap => "MEMINFO_ION_HEAP",
35268            Self::MeminfoIonHeapPool => "MEMINFO_ION_HEAP_POOL",
35269        }
35270    }
35271    /// Creates an enum from field names used in the ProtoBuf definition.
35272    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
35273        match value {
35274            "MEMINFO_UNSPECIFIED" => Some(Self::MeminfoUnspecified),
35275            "MEMINFO_MEM_TOTAL" => Some(Self::MeminfoMemTotal),
35276            "MEMINFO_MEM_FREE" => Some(Self::MeminfoMemFree),
35277            "MEMINFO_MEM_AVAILABLE" => Some(Self::MeminfoMemAvailable),
35278            "MEMINFO_BUFFERS" => Some(Self::MeminfoBuffers),
35279            "MEMINFO_CACHED" => Some(Self::MeminfoCached),
35280            "MEMINFO_SWAP_CACHED" => Some(Self::MeminfoSwapCached),
35281            "MEMINFO_ACTIVE" => Some(Self::MeminfoActive),
35282            "MEMINFO_INACTIVE" => Some(Self::MeminfoInactive),
35283            "MEMINFO_ACTIVE_ANON" => Some(Self::MeminfoActiveAnon),
35284            "MEMINFO_INACTIVE_ANON" => Some(Self::MeminfoInactiveAnon),
35285            "MEMINFO_ACTIVE_FILE" => Some(Self::MeminfoActiveFile),
35286            "MEMINFO_INACTIVE_FILE" => Some(Self::MeminfoInactiveFile),
35287            "MEMINFO_UNEVICTABLE" => Some(Self::MeminfoUnevictable),
35288            "MEMINFO_MLOCKED" => Some(Self::MeminfoMlocked),
35289            "MEMINFO_SWAP_TOTAL" => Some(Self::MeminfoSwapTotal),
35290            "MEMINFO_SWAP_FREE" => Some(Self::MeminfoSwapFree),
35291            "MEMINFO_DIRTY" => Some(Self::MeminfoDirty),
35292            "MEMINFO_WRITEBACK" => Some(Self::MeminfoWriteback),
35293            "MEMINFO_ANON_PAGES" => Some(Self::MeminfoAnonPages),
35294            "MEMINFO_MAPPED" => Some(Self::MeminfoMapped),
35295            "MEMINFO_SHMEM" => Some(Self::MeminfoShmem),
35296            "MEMINFO_SLAB" => Some(Self::MeminfoSlab),
35297            "MEMINFO_SLAB_RECLAIMABLE" => Some(Self::MeminfoSlabReclaimable),
35298            "MEMINFO_SLAB_UNRECLAIMABLE" => Some(Self::MeminfoSlabUnreclaimable),
35299            "MEMINFO_KERNEL_STACK" => Some(Self::MeminfoKernelStack),
35300            "MEMINFO_PAGE_TABLES" => Some(Self::MeminfoPageTables),
35301            "MEMINFO_COMMIT_LIMIT" => Some(Self::MeminfoCommitLimit),
35302            "MEMINFO_COMMITED_AS" => Some(Self::MeminfoCommitedAs),
35303            "MEMINFO_VMALLOC_TOTAL" => Some(Self::MeminfoVmallocTotal),
35304            "MEMINFO_VMALLOC_USED" => Some(Self::MeminfoVmallocUsed),
35305            "MEMINFO_VMALLOC_CHUNK" => Some(Self::MeminfoVmallocChunk),
35306            "MEMINFO_CMA_TOTAL" => Some(Self::MeminfoCmaTotal),
35307            "MEMINFO_CMA_FREE" => Some(Self::MeminfoCmaFree),
35308            "MEMINFO_GPU" => Some(Self::MeminfoGpu),
35309            "MEMINFO_ZRAM" => Some(Self::MeminfoZram),
35310            "MEMINFO_MISC" => Some(Self::MeminfoMisc),
35311            "MEMINFO_ION_HEAP" => Some(Self::MeminfoIonHeap),
35312            "MEMINFO_ION_HEAP_POOL" => Some(Self::MeminfoIonHeapPool),
35313            _ => None,
35314        }
35315    }
35316}
35317/// Counter definitions for Linux's /proc/vmstat.
35318#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
35319#[repr(i32)]
35320pub enum VmstatCounters {
35321    VmstatUnspecified = 0,
35322    VmstatNrFreePages = 1,
35323    VmstatNrAllocBatch = 2,
35324    VmstatNrInactiveAnon = 3,
35325    VmstatNrActiveAnon = 4,
35326    VmstatNrInactiveFile = 5,
35327    VmstatNrActiveFile = 6,
35328    VmstatNrUnevictable = 7,
35329    VmstatNrMlock = 8,
35330    VmstatNrAnonPages = 9,
35331    VmstatNrMapped = 10,
35332    VmstatNrFilePages = 11,
35333    VmstatNrDirty = 12,
35334    VmstatNrWriteback = 13,
35335    VmstatNrSlabReclaimable = 14,
35336    VmstatNrSlabUnreclaimable = 15,
35337    VmstatNrPageTablePages = 16,
35338    VmstatNrKernelStack = 17,
35339    VmstatNrOverhead = 18,
35340    VmstatNrUnstable = 19,
35341    VmstatNrBounce = 20,
35342    VmstatNrVmscanWrite = 21,
35343    VmstatNrVmscanImmediateReclaim = 22,
35344    VmstatNrWritebackTemp = 23,
35345    VmstatNrIsolatedAnon = 24,
35346    VmstatNrIsolatedFile = 25,
35347    VmstatNrShmem = 26,
35348    VmstatNrDirtied = 27,
35349    VmstatNrWritten = 28,
35350    VmstatNrPagesScanned = 29,
35351    VmstatWorkingsetRefault = 30,
35352    VmstatWorkingsetActivate = 31,
35353    VmstatWorkingsetNodereclaim = 32,
35354    VmstatNrAnonTransparentHugepages = 33,
35355    VmstatNrFreeCma = 34,
35356    VmstatNrSwapcache = 35,
35357    VmstatNrDirtyThreshold = 36,
35358    VmstatNrDirtyBackgroundThreshold = 37,
35359    VmstatPgpgin = 38,
35360    VmstatPgpgout = 39,
35361    VmstatPgpgoutclean = 40,
35362    VmstatPswpin = 41,
35363    VmstatPswpout = 42,
35364    VmstatPgallocDma = 43,
35365    VmstatPgallocNormal = 44,
35366    VmstatPgallocMovable = 45,
35367    VmstatPgfree = 46,
35368    VmstatPgactivate = 47,
35369    VmstatPgdeactivate = 48,
35370    VmstatPgfault = 49,
35371    VmstatPgmajfault = 50,
35372    VmstatPgrefillDma = 51,
35373    VmstatPgrefillNormal = 52,
35374    VmstatPgrefillMovable = 53,
35375    VmstatPgstealKswapdDma = 54,
35376    VmstatPgstealKswapdNormal = 55,
35377    VmstatPgstealKswapdMovable = 56,
35378    VmstatPgstealDirectDma = 57,
35379    VmstatPgstealDirectNormal = 58,
35380    VmstatPgstealDirectMovable = 59,
35381    VmstatPgscanKswapdDma = 60,
35382    VmstatPgscanKswapdNormal = 61,
35383    VmstatPgscanKswapdMovable = 62,
35384    VmstatPgscanDirectDma = 63,
35385    VmstatPgscanDirectNormal = 64,
35386    VmstatPgscanDirectMovable = 65,
35387    VmstatPgscanDirectThrottle = 66,
35388    VmstatPginodesteal = 67,
35389    VmstatSlabsScanned = 68,
35390    VmstatKswapdInodesteal = 69,
35391    VmstatKswapdLowWmarkHitQuickly = 70,
35392    VmstatKswapdHighWmarkHitQuickly = 71,
35393    VmstatPageoutrun = 72,
35394    VmstatAllocstall = 73,
35395    VmstatPgrotated = 74,
35396    VmstatDropPagecache = 75,
35397    VmstatDropSlab = 76,
35398    VmstatPgmigrateSuccess = 77,
35399    VmstatPgmigrateFail = 78,
35400    VmstatCompactMigrateScanned = 79,
35401    VmstatCompactFreeScanned = 80,
35402    VmstatCompactIsolated = 81,
35403    VmstatCompactStall = 82,
35404    VmstatCompactFail = 83,
35405    VmstatCompactSuccess = 84,
35406    VmstatCompactDaemonWake = 85,
35407    VmstatUnevictablePgsCulled = 86,
35408    VmstatUnevictablePgsScanned = 87,
35409    VmstatUnevictablePgsRescued = 88,
35410    VmstatUnevictablePgsMlocked = 89,
35411    VmstatUnevictablePgsMunlocked = 90,
35412    VmstatUnevictablePgsCleared = 91,
35413    VmstatUnevictablePgsStranded = 92,
35414    VmstatNrZspages = 93,
35415    VmstatNrIonHeap = 94,
35416    VmstatNrGpuHeap = 95,
35417    VmstatAllocstallDma = 96,
35418    VmstatAllocstallMovable = 97,
35419    VmstatAllocstallNormal = 98,
35420    VmstatCompactDaemonFreeScanned = 99,
35421    VmstatCompactDaemonMigrateScanned = 100,
35422    VmstatNrFastrpc = 101,
35423    VmstatNrIndirectlyReclaimable = 102,
35424    VmstatNrIonHeapPool = 103,
35425    VmstatNrKernelMiscReclaimable = 104,
35426    VmstatNrShadowCallStackBytes = 105,
35427    VmstatNrShmemHugepages = 106,
35428    VmstatNrShmemPmdmapped = 107,
35429    VmstatNrUnreclaimablePages = 108,
35430    VmstatNrZoneActiveAnon = 109,
35431    VmstatNrZoneActiveFile = 110,
35432    VmstatNrZoneInactiveAnon = 111,
35433    VmstatNrZoneInactiveFile = 112,
35434    VmstatNrZoneUnevictable = 113,
35435    VmstatNrZoneWritePending = 114,
35436    VmstatOomKill = 115,
35437    VmstatPglazyfree = 116,
35438    VmstatPglazyfreed = 117,
35439    VmstatPgrefill = 118,
35440    VmstatPgscanDirect = 119,
35441    VmstatPgscanKswapd = 120,
35442    VmstatPgskipDma = 121,
35443    VmstatPgskipMovable = 122,
35444    VmstatPgskipNormal = 123,
35445    VmstatPgstealDirect = 124,
35446    VmstatPgstealKswapd = 125,
35447    VmstatSwapRa = 126,
35448    VmstatSwapRaHit = 127,
35449    VmstatWorkingsetRestore = 128,
35450    VmstatAllocstallDevice = 129,
35451    VmstatAllocstallDma32 = 130,
35452    VmstatBalloonDeflate = 131,
35453    VmstatBalloonInflate = 132,
35454    VmstatBalloonMigrate = 133,
35455    VmstatCmaAllocFail = 134,
35456    VmstatCmaAllocSuccess = 135,
35457    VmstatNrFileHugepages = 136,
35458    VmstatNrFilePmdmapped = 137,
35459    VmstatNrFollPinAcquired = 138,
35460    VmstatNrFollPinReleased = 139,
35461    VmstatNrSecPageTablePages = 140,
35462    VmstatNrShadowCallStack = 141,
35463    VmstatNrSwapcached = 142,
35464    VmstatNrThrottledWritten = 143,
35465    VmstatPgallocDevice = 144,
35466    VmstatPgallocDma32 = 145,
35467    VmstatPgdemoteDirect = 146,
35468    VmstatPgdemoteKswapd = 147,
35469    VmstatPgreuse = 148,
35470    VmstatPgscanAnon = 149,
35471    VmstatPgscanFile = 150,
35472    VmstatPgskipDevice = 151,
35473    VmstatPgskipDma32 = 152,
35474    VmstatPgstealAnon = 153,
35475    VmstatPgstealFile = 154,
35476    VmstatThpCollapseAlloc = 155,
35477    VmstatThpCollapseAllocFailed = 156,
35478    VmstatThpDeferredSplitPage = 157,
35479    VmstatThpFaultAlloc = 158,
35480    VmstatThpFaultFallback = 159,
35481    VmstatThpFaultFallbackCharge = 160,
35482    VmstatThpFileAlloc = 161,
35483    VmstatThpFileFallback = 162,
35484    VmstatThpFileFallbackCharge = 163,
35485    VmstatThpFileMapped = 164,
35486    VmstatThpMigrationFail = 165,
35487    VmstatThpMigrationSplit = 166,
35488    VmstatThpMigrationSuccess = 167,
35489    VmstatThpScanExceedNonePte = 168,
35490    VmstatThpScanExceedSharePte = 169,
35491    VmstatThpScanExceedSwapPte = 170,
35492    VmstatThpSplitPage = 171,
35493    VmstatThpSplitPageFailed = 172,
35494    VmstatThpSplitPmd = 173,
35495    VmstatThpSwpout = 174,
35496    VmstatThpSwpoutFallback = 175,
35497    VmstatThpZeroPageAlloc = 176,
35498    VmstatThpZeroPageAllocFailed = 177,
35499    VmstatVmaLockAbort = 178,
35500    VmstatVmaLockMiss = 179,
35501    VmstatVmaLockRetry = 180,
35502    VmstatVmaLockSuccess = 181,
35503    VmstatWorkingsetActivateAnon = 182,
35504    VmstatWorkingsetActivateFile = 183,
35505    VmstatWorkingsetNodes = 184,
35506    VmstatWorkingsetRefaultAnon = 185,
35507    VmstatWorkingsetRefaultFile = 186,
35508    VmstatWorkingsetRestoreAnon = 187,
35509    VmstatWorkingsetRestoreFile = 188,
35510}
35511impl VmstatCounters {
35512    /// String value of the enum field names used in the ProtoBuf definition.
35513    ///
35514    /// The values are not transformed in any way and thus are considered stable
35515    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
35516    pub fn as_str_name(&self) -> &'static str {
35517        match self {
35518            Self::VmstatUnspecified => "VMSTAT_UNSPECIFIED",
35519            Self::VmstatNrFreePages => "VMSTAT_NR_FREE_PAGES",
35520            Self::VmstatNrAllocBatch => "VMSTAT_NR_ALLOC_BATCH",
35521            Self::VmstatNrInactiveAnon => "VMSTAT_NR_INACTIVE_ANON",
35522            Self::VmstatNrActiveAnon => "VMSTAT_NR_ACTIVE_ANON",
35523            Self::VmstatNrInactiveFile => "VMSTAT_NR_INACTIVE_FILE",
35524            Self::VmstatNrActiveFile => "VMSTAT_NR_ACTIVE_FILE",
35525            Self::VmstatNrUnevictable => "VMSTAT_NR_UNEVICTABLE",
35526            Self::VmstatNrMlock => "VMSTAT_NR_MLOCK",
35527            Self::VmstatNrAnonPages => "VMSTAT_NR_ANON_PAGES",
35528            Self::VmstatNrMapped => "VMSTAT_NR_MAPPED",
35529            Self::VmstatNrFilePages => "VMSTAT_NR_FILE_PAGES",
35530            Self::VmstatNrDirty => "VMSTAT_NR_DIRTY",
35531            Self::VmstatNrWriteback => "VMSTAT_NR_WRITEBACK",
35532            Self::VmstatNrSlabReclaimable => "VMSTAT_NR_SLAB_RECLAIMABLE",
35533            Self::VmstatNrSlabUnreclaimable => "VMSTAT_NR_SLAB_UNRECLAIMABLE",
35534            Self::VmstatNrPageTablePages => "VMSTAT_NR_PAGE_TABLE_PAGES",
35535            Self::VmstatNrKernelStack => "VMSTAT_NR_KERNEL_STACK",
35536            Self::VmstatNrOverhead => "VMSTAT_NR_OVERHEAD",
35537            Self::VmstatNrUnstable => "VMSTAT_NR_UNSTABLE",
35538            Self::VmstatNrBounce => "VMSTAT_NR_BOUNCE",
35539            Self::VmstatNrVmscanWrite => "VMSTAT_NR_VMSCAN_WRITE",
35540            Self::VmstatNrVmscanImmediateReclaim => "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM",
35541            Self::VmstatNrWritebackTemp => "VMSTAT_NR_WRITEBACK_TEMP",
35542            Self::VmstatNrIsolatedAnon => "VMSTAT_NR_ISOLATED_ANON",
35543            Self::VmstatNrIsolatedFile => "VMSTAT_NR_ISOLATED_FILE",
35544            Self::VmstatNrShmem => "VMSTAT_NR_SHMEM",
35545            Self::VmstatNrDirtied => "VMSTAT_NR_DIRTIED",
35546            Self::VmstatNrWritten => "VMSTAT_NR_WRITTEN",
35547            Self::VmstatNrPagesScanned => "VMSTAT_NR_PAGES_SCANNED",
35548            Self::VmstatWorkingsetRefault => "VMSTAT_WORKINGSET_REFAULT",
35549            Self::VmstatWorkingsetActivate => "VMSTAT_WORKINGSET_ACTIVATE",
35550            Self::VmstatWorkingsetNodereclaim => "VMSTAT_WORKINGSET_NODERECLAIM",
35551            Self::VmstatNrAnonTransparentHugepages => {
35552                "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES"
35553            }
35554            Self::VmstatNrFreeCma => "VMSTAT_NR_FREE_CMA",
35555            Self::VmstatNrSwapcache => "VMSTAT_NR_SWAPCACHE",
35556            Self::VmstatNrDirtyThreshold => "VMSTAT_NR_DIRTY_THRESHOLD",
35557            Self::VmstatNrDirtyBackgroundThreshold => {
35558                "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD"
35559            }
35560            Self::VmstatPgpgin => "VMSTAT_PGPGIN",
35561            Self::VmstatPgpgout => "VMSTAT_PGPGOUT",
35562            Self::VmstatPgpgoutclean => "VMSTAT_PGPGOUTCLEAN",
35563            Self::VmstatPswpin => "VMSTAT_PSWPIN",
35564            Self::VmstatPswpout => "VMSTAT_PSWPOUT",
35565            Self::VmstatPgallocDma => "VMSTAT_PGALLOC_DMA",
35566            Self::VmstatPgallocNormal => "VMSTAT_PGALLOC_NORMAL",
35567            Self::VmstatPgallocMovable => "VMSTAT_PGALLOC_MOVABLE",
35568            Self::VmstatPgfree => "VMSTAT_PGFREE",
35569            Self::VmstatPgactivate => "VMSTAT_PGACTIVATE",
35570            Self::VmstatPgdeactivate => "VMSTAT_PGDEACTIVATE",
35571            Self::VmstatPgfault => "VMSTAT_PGFAULT",
35572            Self::VmstatPgmajfault => "VMSTAT_PGMAJFAULT",
35573            Self::VmstatPgrefillDma => "VMSTAT_PGREFILL_DMA",
35574            Self::VmstatPgrefillNormal => "VMSTAT_PGREFILL_NORMAL",
35575            Self::VmstatPgrefillMovable => "VMSTAT_PGREFILL_MOVABLE",
35576            Self::VmstatPgstealKswapdDma => "VMSTAT_PGSTEAL_KSWAPD_DMA",
35577            Self::VmstatPgstealKswapdNormal => "VMSTAT_PGSTEAL_KSWAPD_NORMAL",
35578            Self::VmstatPgstealKswapdMovable => "VMSTAT_PGSTEAL_KSWAPD_MOVABLE",
35579            Self::VmstatPgstealDirectDma => "VMSTAT_PGSTEAL_DIRECT_DMA",
35580            Self::VmstatPgstealDirectNormal => "VMSTAT_PGSTEAL_DIRECT_NORMAL",
35581            Self::VmstatPgstealDirectMovable => "VMSTAT_PGSTEAL_DIRECT_MOVABLE",
35582            Self::VmstatPgscanKswapdDma => "VMSTAT_PGSCAN_KSWAPD_DMA",
35583            Self::VmstatPgscanKswapdNormal => "VMSTAT_PGSCAN_KSWAPD_NORMAL",
35584            Self::VmstatPgscanKswapdMovable => "VMSTAT_PGSCAN_KSWAPD_MOVABLE",
35585            Self::VmstatPgscanDirectDma => "VMSTAT_PGSCAN_DIRECT_DMA",
35586            Self::VmstatPgscanDirectNormal => "VMSTAT_PGSCAN_DIRECT_NORMAL",
35587            Self::VmstatPgscanDirectMovable => "VMSTAT_PGSCAN_DIRECT_MOVABLE",
35588            Self::VmstatPgscanDirectThrottle => "VMSTAT_PGSCAN_DIRECT_THROTTLE",
35589            Self::VmstatPginodesteal => "VMSTAT_PGINODESTEAL",
35590            Self::VmstatSlabsScanned => "VMSTAT_SLABS_SCANNED",
35591            Self::VmstatKswapdInodesteal => "VMSTAT_KSWAPD_INODESTEAL",
35592            Self::VmstatKswapdLowWmarkHitQuickly => "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY",
35593            Self::VmstatKswapdHighWmarkHitQuickly => {
35594                "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY"
35595            }
35596            Self::VmstatPageoutrun => "VMSTAT_PAGEOUTRUN",
35597            Self::VmstatAllocstall => "VMSTAT_ALLOCSTALL",
35598            Self::VmstatPgrotated => "VMSTAT_PGROTATED",
35599            Self::VmstatDropPagecache => "VMSTAT_DROP_PAGECACHE",
35600            Self::VmstatDropSlab => "VMSTAT_DROP_SLAB",
35601            Self::VmstatPgmigrateSuccess => "VMSTAT_PGMIGRATE_SUCCESS",
35602            Self::VmstatPgmigrateFail => "VMSTAT_PGMIGRATE_FAIL",
35603            Self::VmstatCompactMigrateScanned => "VMSTAT_COMPACT_MIGRATE_SCANNED",
35604            Self::VmstatCompactFreeScanned => "VMSTAT_COMPACT_FREE_SCANNED",
35605            Self::VmstatCompactIsolated => "VMSTAT_COMPACT_ISOLATED",
35606            Self::VmstatCompactStall => "VMSTAT_COMPACT_STALL",
35607            Self::VmstatCompactFail => "VMSTAT_COMPACT_FAIL",
35608            Self::VmstatCompactSuccess => "VMSTAT_COMPACT_SUCCESS",
35609            Self::VmstatCompactDaemonWake => "VMSTAT_COMPACT_DAEMON_WAKE",
35610            Self::VmstatUnevictablePgsCulled => "VMSTAT_UNEVICTABLE_PGS_CULLED",
35611            Self::VmstatUnevictablePgsScanned => "VMSTAT_UNEVICTABLE_PGS_SCANNED",
35612            Self::VmstatUnevictablePgsRescued => "VMSTAT_UNEVICTABLE_PGS_RESCUED",
35613            Self::VmstatUnevictablePgsMlocked => "VMSTAT_UNEVICTABLE_PGS_MLOCKED",
35614            Self::VmstatUnevictablePgsMunlocked => "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED",
35615            Self::VmstatUnevictablePgsCleared => "VMSTAT_UNEVICTABLE_PGS_CLEARED",
35616            Self::VmstatUnevictablePgsStranded => "VMSTAT_UNEVICTABLE_PGS_STRANDED",
35617            Self::VmstatNrZspages => "VMSTAT_NR_ZSPAGES",
35618            Self::VmstatNrIonHeap => "VMSTAT_NR_ION_HEAP",
35619            Self::VmstatNrGpuHeap => "VMSTAT_NR_GPU_HEAP",
35620            Self::VmstatAllocstallDma => "VMSTAT_ALLOCSTALL_DMA",
35621            Self::VmstatAllocstallMovable => "VMSTAT_ALLOCSTALL_MOVABLE",
35622            Self::VmstatAllocstallNormal => "VMSTAT_ALLOCSTALL_NORMAL",
35623            Self::VmstatCompactDaemonFreeScanned => "VMSTAT_COMPACT_DAEMON_FREE_SCANNED",
35624            Self::VmstatCompactDaemonMigrateScanned => {
35625                "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED"
35626            }
35627            Self::VmstatNrFastrpc => "VMSTAT_NR_FASTRPC",
35628            Self::VmstatNrIndirectlyReclaimable => "VMSTAT_NR_INDIRECTLY_RECLAIMABLE",
35629            Self::VmstatNrIonHeapPool => "VMSTAT_NR_ION_HEAP_POOL",
35630            Self::VmstatNrKernelMiscReclaimable => "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE",
35631            Self::VmstatNrShadowCallStackBytes => "VMSTAT_NR_SHADOW_CALL_STACK_BYTES",
35632            Self::VmstatNrShmemHugepages => "VMSTAT_NR_SHMEM_HUGEPAGES",
35633            Self::VmstatNrShmemPmdmapped => "VMSTAT_NR_SHMEM_PMDMAPPED",
35634            Self::VmstatNrUnreclaimablePages => "VMSTAT_NR_UNRECLAIMABLE_PAGES",
35635            Self::VmstatNrZoneActiveAnon => "VMSTAT_NR_ZONE_ACTIVE_ANON",
35636            Self::VmstatNrZoneActiveFile => "VMSTAT_NR_ZONE_ACTIVE_FILE",
35637            Self::VmstatNrZoneInactiveAnon => "VMSTAT_NR_ZONE_INACTIVE_ANON",
35638            Self::VmstatNrZoneInactiveFile => "VMSTAT_NR_ZONE_INACTIVE_FILE",
35639            Self::VmstatNrZoneUnevictable => "VMSTAT_NR_ZONE_UNEVICTABLE",
35640            Self::VmstatNrZoneWritePending => "VMSTAT_NR_ZONE_WRITE_PENDING",
35641            Self::VmstatOomKill => "VMSTAT_OOM_KILL",
35642            Self::VmstatPglazyfree => "VMSTAT_PGLAZYFREE",
35643            Self::VmstatPglazyfreed => "VMSTAT_PGLAZYFREED",
35644            Self::VmstatPgrefill => "VMSTAT_PGREFILL",
35645            Self::VmstatPgscanDirect => "VMSTAT_PGSCAN_DIRECT",
35646            Self::VmstatPgscanKswapd => "VMSTAT_PGSCAN_KSWAPD",
35647            Self::VmstatPgskipDma => "VMSTAT_PGSKIP_DMA",
35648            Self::VmstatPgskipMovable => "VMSTAT_PGSKIP_MOVABLE",
35649            Self::VmstatPgskipNormal => "VMSTAT_PGSKIP_NORMAL",
35650            Self::VmstatPgstealDirect => "VMSTAT_PGSTEAL_DIRECT",
35651            Self::VmstatPgstealKswapd => "VMSTAT_PGSTEAL_KSWAPD",
35652            Self::VmstatSwapRa => "VMSTAT_SWAP_RA",
35653            Self::VmstatSwapRaHit => "VMSTAT_SWAP_RA_HIT",
35654            Self::VmstatWorkingsetRestore => "VMSTAT_WORKINGSET_RESTORE",
35655            Self::VmstatAllocstallDevice => "VMSTAT_ALLOCSTALL_DEVICE",
35656            Self::VmstatAllocstallDma32 => "VMSTAT_ALLOCSTALL_DMA32",
35657            Self::VmstatBalloonDeflate => "VMSTAT_BALLOON_DEFLATE",
35658            Self::VmstatBalloonInflate => "VMSTAT_BALLOON_INFLATE",
35659            Self::VmstatBalloonMigrate => "VMSTAT_BALLOON_MIGRATE",
35660            Self::VmstatCmaAllocFail => "VMSTAT_CMA_ALLOC_FAIL",
35661            Self::VmstatCmaAllocSuccess => "VMSTAT_CMA_ALLOC_SUCCESS",
35662            Self::VmstatNrFileHugepages => "VMSTAT_NR_FILE_HUGEPAGES",
35663            Self::VmstatNrFilePmdmapped => "VMSTAT_NR_FILE_PMDMAPPED",
35664            Self::VmstatNrFollPinAcquired => "VMSTAT_NR_FOLL_PIN_ACQUIRED",
35665            Self::VmstatNrFollPinReleased => "VMSTAT_NR_FOLL_PIN_RELEASED",
35666            Self::VmstatNrSecPageTablePages => "VMSTAT_NR_SEC_PAGE_TABLE_PAGES",
35667            Self::VmstatNrShadowCallStack => "VMSTAT_NR_SHADOW_CALL_STACK",
35668            Self::VmstatNrSwapcached => "VMSTAT_NR_SWAPCACHED",
35669            Self::VmstatNrThrottledWritten => "VMSTAT_NR_THROTTLED_WRITTEN",
35670            Self::VmstatPgallocDevice => "VMSTAT_PGALLOC_DEVICE",
35671            Self::VmstatPgallocDma32 => "VMSTAT_PGALLOC_DMA32",
35672            Self::VmstatPgdemoteDirect => "VMSTAT_PGDEMOTE_DIRECT",
35673            Self::VmstatPgdemoteKswapd => "VMSTAT_PGDEMOTE_KSWAPD",
35674            Self::VmstatPgreuse => "VMSTAT_PGREUSE",
35675            Self::VmstatPgscanAnon => "VMSTAT_PGSCAN_ANON",
35676            Self::VmstatPgscanFile => "VMSTAT_PGSCAN_FILE",
35677            Self::VmstatPgskipDevice => "VMSTAT_PGSKIP_DEVICE",
35678            Self::VmstatPgskipDma32 => "VMSTAT_PGSKIP_DMA32",
35679            Self::VmstatPgstealAnon => "VMSTAT_PGSTEAL_ANON",
35680            Self::VmstatPgstealFile => "VMSTAT_PGSTEAL_FILE",
35681            Self::VmstatThpCollapseAlloc => "VMSTAT_THP_COLLAPSE_ALLOC",
35682            Self::VmstatThpCollapseAllocFailed => "VMSTAT_THP_COLLAPSE_ALLOC_FAILED",
35683            Self::VmstatThpDeferredSplitPage => "VMSTAT_THP_DEFERRED_SPLIT_PAGE",
35684            Self::VmstatThpFaultAlloc => "VMSTAT_THP_FAULT_ALLOC",
35685            Self::VmstatThpFaultFallback => "VMSTAT_THP_FAULT_FALLBACK",
35686            Self::VmstatThpFaultFallbackCharge => "VMSTAT_THP_FAULT_FALLBACK_CHARGE",
35687            Self::VmstatThpFileAlloc => "VMSTAT_THP_FILE_ALLOC",
35688            Self::VmstatThpFileFallback => "VMSTAT_THP_FILE_FALLBACK",
35689            Self::VmstatThpFileFallbackCharge => "VMSTAT_THP_FILE_FALLBACK_CHARGE",
35690            Self::VmstatThpFileMapped => "VMSTAT_THP_FILE_MAPPED",
35691            Self::VmstatThpMigrationFail => "VMSTAT_THP_MIGRATION_FAIL",
35692            Self::VmstatThpMigrationSplit => "VMSTAT_THP_MIGRATION_SPLIT",
35693            Self::VmstatThpMigrationSuccess => "VMSTAT_THP_MIGRATION_SUCCESS",
35694            Self::VmstatThpScanExceedNonePte => "VMSTAT_THP_SCAN_EXCEED_NONE_PTE",
35695            Self::VmstatThpScanExceedSharePte => "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE",
35696            Self::VmstatThpScanExceedSwapPte => "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE",
35697            Self::VmstatThpSplitPage => "VMSTAT_THP_SPLIT_PAGE",
35698            Self::VmstatThpSplitPageFailed => "VMSTAT_THP_SPLIT_PAGE_FAILED",
35699            Self::VmstatThpSplitPmd => "VMSTAT_THP_SPLIT_PMD",
35700            Self::VmstatThpSwpout => "VMSTAT_THP_SWPOUT",
35701            Self::VmstatThpSwpoutFallback => "VMSTAT_THP_SWPOUT_FALLBACK",
35702            Self::VmstatThpZeroPageAlloc => "VMSTAT_THP_ZERO_PAGE_ALLOC",
35703            Self::VmstatThpZeroPageAllocFailed => "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED",
35704            Self::VmstatVmaLockAbort => "VMSTAT_VMA_LOCK_ABORT",
35705            Self::VmstatVmaLockMiss => "VMSTAT_VMA_LOCK_MISS",
35706            Self::VmstatVmaLockRetry => "VMSTAT_VMA_LOCK_RETRY",
35707            Self::VmstatVmaLockSuccess => "VMSTAT_VMA_LOCK_SUCCESS",
35708            Self::VmstatWorkingsetActivateAnon => "VMSTAT_WORKINGSET_ACTIVATE_ANON",
35709            Self::VmstatWorkingsetActivateFile => "VMSTAT_WORKINGSET_ACTIVATE_FILE",
35710            Self::VmstatWorkingsetNodes => "VMSTAT_WORKINGSET_NODES",
35711            Self::VmstatWorkingsetRefaultAnon => "VMSTAT_WORKINGSET_REFAULT_ANON",
35712            Self::VmstatWorkingsetRefaultFile => "VMSTAT_WORKINGSET_REFAULT_FILE",
35713            Self::VmstatWorkingsetRestoreAnon => "VMSTAT_WORKINGSET_RESTORE_ANON",
35714            Self::VmstatWorkingsetRestoreFile => "VMSTAT_WORKINGSET_RESTORE_FILE",
35715        }
35716    }
35717    /// Creates an enum from field names used in the ProtoBuf definition.
35718    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
35719        match value {
35720            "VMSTAT_UNSPECIFIED" => Some(Self::VmstatUnspecified),
35721            "VMSTAT_NR_FREE_PAGES" => Some(Self::VmstatNrFreePages),
35722            "VMSTAT_NR_ALLOC_BATCH" => Some(Self::VmstatNrAllocBatch),
35723            "VMSTAT_NR_INACTIVE_ANON" => Some(Self::VmstatNrInactiveAnon),
35724            "VMSTAT_NR_ACTIVE_ANON" => Some(Self::VmstatNrActiveAnon),
35725            "VMSTAT_NR_INACTIVE_FILE" => Some(Self::VmstatNrInactiveFile),
35726            "VMSTAT_NR_ACTIVE_FILE" => Some(Self::VmstatNrActiveFile),
35727            "VMSTAT_NR_UNEVICTABLE" => Some(Self::VmstatNrUnevictable),
35728            "VMSTAT_NR_MLOCK" => Some(Self::VmstatNrMlock),
35729            "VMSTAT_NR_ANON_PAGES" => Some(Self::VmstatNrAnonPages),
35730            "VMSTAT_NR_MAPPED" => Some(Self::VmstatNrMapped),
35731            "VMSTAT_NR_FILE_PAGES" => Some(Self::VmstatNrFilePages),
35732            "VMSTAT_NR_DIRTY" => Some(Self::VmstatNrDirty),
35733            "VMSTAT_NR_WRITEBACK" => Some(Self::VmstatNrWriteback),
35734            "VMSTAT_NR_SLAB_RECLAIMABLE" => Some(Self::VmstatNrSlabReclaimable),
35735            "VMSTAT_NR_SLAB_UNRECLAIMABLE" => Some(Self::VmstatNrSlabUnreclaimable),
35736            "VMSTAT_NR_PAGE_TABLE_PAGES" => Some(Self::VmstatNrPageTablePages),
35737            "VMSTAT_NR_KERNEL_STACK" => Some(Self::VmstatNrKernelStack),
35738            "VMSTAT_NR_OVERHEAD" => Some(Self::VmstatNrOverhead),
35739            "VMSTAT_NR_UNSTABLE" => Some(Self::VmstatNrUnstable),
35740            "VMSTAT_NR_BOUNCE" => Some(Self::VmstatNrBounce),
35741            "VMSTAT_NR_VMSCAN_WRITE" => Some(Self::VmstatNrVmscanWrite),
35742            "VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM" => {
35743                Some(Self::VmstatNrVmscanImmediateReclaim)
35744            }
35745            "VMSTAT_NR_WRITEBACK_TEMP" => Some(Self::VmstatNrWritebackTemp),
35746            "VMSTAT_NR_ISOLATED_ANON" => Some(Self::VmstatNrIsolatedAnon),
35747            "VMSTAT_NR_ISOLATED_FILE" => Some(Self::VmstatNrIsolatedFile),
35748            "VMSTAT_NR_SHMEM" => Some(Self::VmstatNrShmem),
35749            "VMSTAT_NR_DIRTIED" => Some(Self::VmstatNrDirtied),
35750            "VMSTAT_NR_WRITTEN" => Some(Self::VmstatNrWritten),
35751            "VMSTAT_NR_PAGES_SCANNED" => Some(Self::VmstatNrPagesScanned),
35752            "VMSTAT_WORKINGSET_REFAULT" => Some(Self::VmstatWorkingsetRefault),
35753            "VMSTAT_WORKINGSET_ACTIVATE" => Some(Self::VmstatWorkingsetActivate),
35754            "VMSTAT_WORKINGSET_NODERECLAIM" => Some(Self::VmstatWorkingsetNodereclaim),
35755            "VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES" => {
35756                Some(Self::VmstatNrAnonTransparentHugepages)
35757            }
35758            "VMSTAT_NR_FREE_CMA" => Some(Self::VmstatNrFreeCma),
35759            "VMSTAT_NR_SWAPCACHE" => Some(Self::VmstatNrSwapcache),
35760            "VMSTAT_NR_DIRTY_THRESHOLD" => Some(Self::VmstatNrDirtyThreshold),
35761            "VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD" => {
35762                Some(Self::VmstatNrDirtyBackgroundThreshold)
35763            }
35764            "VMSTAT_PGPGIN" => Some(Self::VmstatPgpgin),
35765            "VMSTAT_PGPGOUT" => Some(Self::VmstatPgpgout),
35766            "VMSTAT_PGPGOUTCLEAN" => Some(Self::VmstatPgpgoutclean),
35767            "VMSTAT_PSWPIN" => Some(Self::VmstatPswpin),
35768            "VMSTAT_PSWPOUT" => Some(Self::VmstatPswpout),
35769            "VMSTAT_PGALLOC_DMA" => Some(Self::VmstatPgallocDma),
35770            "VMSTAT_PGALLOC_NORMAL" => Some(Self::VmstatPgallocNormal),
35771            "VMSTAT_PGALLOC_MOVABLE" => Some(Self::VmstatPgallocMovable),
35772            "VMSTAT_PGFREE" => Some(Self::VmstatPgfree),
35773            "VMSTAT_PGACTIVATE" => Some(Self::VmstatPgactivate),
35774            "VMSTAT_PGDEACTIVATE" => Some(Self::VmstatPgdeactivate),
35775            "VMSTAT_PGFAULT" => Some(Self::VmstatPgfault),
35776            "VMSTAT_PGMAJFAULT" => Some(Self::VmstatPgmajfault),
35777            "VMSTAT_PGREFILL_DMA" => Some(Self::VmstatPgrefillDma),
35778            "VMSTAT_PGREFILL_NORMAL" => Some(Self::VmstatPgrefillNormal),
35779            "VMSTAT_PGREFILL_MOVABLE" => Some(Self::VmstatPgrefillMovable),
35780            "VMSTAT_PGSTEAL_KSWAPD_DMA" => Some(Self::VmstatPgstealKswapdDma),
35781            "VMSTAT_PGSTEAL_KSWAPD_NORMAL" => Some(Self::VmstatPgstealKswapdNormal),
35782            "VMSTAT_PGSTEAL_KSWAPD_MOVABLE" => Some(Self::VmstatPgstealKswapdMovable),
35783            "VMSTAT_PGSTEAL_DIRECT_DMA" => Some(Self::VmstatPgstealDirectDma),
35784            "VMSTAT_PGSTEAL_DIRECT_NORMAL" => Some(Self::VmstatPgstealDirectNormal),
35785            "VMSTAT_PGSTEAL_DIRECT_MOVABLE" => Some(Self::VmstatPgstealDirectMovable),
35786            "VMSTAT_PGSCAN_KSWAPD_DMA" => Some(Self::VmstatPgscanKswapdDma),
35787            "VMSTAT_PGSCAN_KSWAPD_NORMAL" => Some(Self::VmstatPgscanKswapdNormal),
35788            "VMSTAT_PGSCAN_KSWAPD_MOVABLE" => Some(Self::VmstatPgscanKswapdMovable),
35789            "VMSTAT_PGSCAN_DIRECT_DMA" => Some(Self::VmstatPgscanDirectDma),
35790            "VMSTAT_PGSCAN_DIRECT_NORMAL" => Some(Self::VmstatPgscanDirectNormal),
35791            "VMSTAT_PGSCAN_DIRECT_MOVABLE" => Some(Self::VmstatPgscanDirectMovable),
35792            "VMSTAT_PGSCAN_DIRECT_THROTTLE" => Some(Self::VmstatPgscanDirectThrottle),
35793            "VMSTAT_PGINODESTEAL" => Some(Self::VmstatPginodesteal),
35794            "VMSTAT_SLABS_SCANNED" => Some(Self::VmstatSlabsScanned),
35795            "VMSTAT_KSWAPD_INODESTEAL" => Some(Self::VmstatKswapdInodesteal),
35796            "VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY" => {
35797                Some(Self::VmstatKswapdLowWmarkHitQuickly)
35798            }
35799            "VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY" => {
35800                Some(Self::VmstatKswapdHighWmarkHitQuickly)
35801            }
35802            "VMSTAT_PAGEOUTRUN" => Some(Self::VmstatPageoutrun),
35803            "VMSTAT_ALLOCSTALL" => Some(Self::VmstatAllocstall),
35804            "VMSTAT_PGROTATED" => Some(Self::VmstatPgrotated),
35805            "VMSTAT_DROP_PAGECACHE" => Some(Self::VmstatDropPagecache),
35806            "VMSTAT_DROP_SLAB" => Some(Self::VmstatDropSlab),
35807            "VMSTAT_PGMIGRATE_SUCCESS" => Some(Self::VmstatPgmigrateSuccess),
35808            "VMSTAT_PGMIGRATE_FAIL" => Some(Self::VmstatPgmigrateFail),
35809            "VMSTAT_COMPACT_MIGRATE_SCANNED" => Some(Self::VmstatCompactMigrateScanned),
35810            "VMSTAT_COMPACT_FREE_SCANNED" => Some(Self::VmstatCompactFreeScanned),
35811            "VMSTAT_COMPACT_ISOLATED" => Some(Self::VmstatCompactIsolated),
35812            "VMSTAT_COMPACT_STALL" => Some(Self::VmstatCompactStall),
35813            "VMSTAT_COMPACT_FAIL" => Some(Self::VmstatCompactFail),
35814            "VMSTAT_COMPACT_SUCCESS" => Some(Self::VmstatCompactSuccess),
35815            "VMSTAT_COMPACT_DAEMON_WAKE" => Some(Self::VmstatCompactDaemonWake),
35816            "VMSTAT_UNEVICTABLE_PGS_CULLED" => Some(Self::VmstatUnevictablePgsCulled),
35817            "VMSTAT_UNEVICTABLE_PGS_SCANNED" => Some(Self::VmstatUnevictablePgsScanned),
35818            "VMSTAT_UNEVICTABLE_PGS_RESCUED" => Some(Self::VmstatUnevictablePgsRescued),
35819            "VMSTAT_UNEVICTABLE_PGS_MLOCKED" => Some(Self::VmstatUnevictablePgsMlocked),
35820            "VMSTAT_UNEVICTABLE_PGS_MUNLOCKED" => {
35821                Some(Self::VmstatUnevictablePgsMunlocked)
35822            }
35823            "VMSTAT_UNEVICTABLE_PGS_CLEARED" => Some(Self::VmstatUnevictablePgsCleared),
35824            "VMSTAT_UNEVICTABLE_PGS_STRANDED" => Some(Self::VmstatUnevictablePgsStranded),
35825            "VMSTAT_NR_ZSPAGES" => Some(Self::VmstatNrZspages),
35826            "VMSTAT_NR_ION_HEAP" => Some(Self::VmstatNrIonHeap),
35827            "VMSTAT_NR_GPU_HEAP" => Some(Self::VmstatNrGpuHeap),
35828            "VMSTAT_ALLOCSTALL_DMA" => Some(Self::VmstatAllocstallDma),
35829            "VMSTAT_ALLOCSTALL_MOVABLE" => Some(Self::VmstatAllocstallMovable),
35830            "VMSTAT_ALLOCSTALL_NORMAL" => Some(Self::VmstatAllocstallNormal),
35831            "VMSTAT_COMPACT_DAEMON_FREE_SCANNED" => {
35832                Some(Self::VmstatCompactDaemonFreeScanned)
35833            }
35834            "VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED" => {
35835                Some(Self::VmstatCompactDaemonMigrateScanned)
35836            }
35837            "VMSTAT_NR_FASTRPC" => Some(Self::VmstatNrFastrpc),
35838            "VMSTAT_NR_INDIRECTLY_RECLAIMABLE" => {
35839                Some(Self::VmstatNrIndirectlyReclaimable)
35840            }
35841            "VMSTAT_NR_ION_HEAP_POOL" => Some(Self::VmstatNrIonHeapPool),
35842            "VMSTAT_NR_KERNEL_MISC_RECLAIMABLE" => {
35843                Some(Self::VmstatNrKernelMiscReclaimable)
35844            }
35845            "VMSTAT_NR_SHADOW_CALL_STACK_BYTES" => {
35846                Some(Self::VmstatNrShadowCallStackBytes)
35847            }
35848            "VMSTAT_NR_SHMEM_HUGEPAGES" => Some(Self::VmstatNrShmemHugepages),
35849            "VMSTAT_NR_SHMEM_PMDMAPPED" => Some(Self::VmstatNrShmemPmdmapped),
35850            "VMSTAT_NR_UNRECLAIMABLE_PAGES" => Some(Self::VmstatNrUnreclaimablePages),
35851            "VMSTAT_NR_ZONE_ACTIVE_ANON" => Some(Self::VmstatNrZoneActiveAnon),
35852            "VMSTAT_NR_ZONE_ACTIVE_FILE" => Some(Self::VmstatNrZoneActiveFile),
35853            "VMSTAT_NR_ZONE_INACTIVE_ANON" => Some(Self::VmstatNrZoneInactiveAnon),
35854            "VMSTAT_NR_ZONE_INACTIVE_FILE" => Some(Self::VmstatNrZoneInactiveFile),
35855            "VMSTAT_NR_ZONE_UNEVICTABLE" => Some(Self::VmstatNrZoneUnevictable),
35856            "VMSTAT_NR_ZONE_WRITE_PENDING" => Some(Self::VmstatNrZoneWritePending),
35857            "VMSTAT_OOM_KILL" => Some(Self::VmstatOomKill),
35858            "VMSTAT_PGLAZYFREE" => Some(Self::VmstatPglazyfree),
35859            "VMSTAT_PGLAZYFREED" => Some(Self::VmstatPglazyfreed),
35860            "VMSTAT_PGREFILL" => Some(Self::VmstatPgrefill),
35861            "VMSTAT_PGSCAN_DIRECT" => Some(Self::VmstatPgscanDirect),
35862            "VMSTAT_PGSCAN_KSWAPD" => Some(Self::VmstatPgscanKswapd),
35863            "VMSTAT_PGSKIP_DMA" => Some(Self::VmstatPgskipDma),
35864            "VMSTAT_PGSKIP_MOVABLE" => Some(Self::VmstatPgskipMovable),
35865            "VMSTAT_PGSKIP_NORMAL" => Some(Self::VmstatPgskipNormal),
35866            "VMSTAT_PGSTEAL_DIRECT" => Some(Self::VmstatPgstealDirect),
35867            "VMSTAT_PGSTEAL_KSWAPD" => Some(Self::VmstatPgstealKswapd),
35868            "VMSTAT_SWAP_RA" => Some(Self::VmstatSwapRa),
35869            "VMSTAT_SWAP_RA_HIT" => Some(Self::VmstatSwapRaHit),
35870            "VMSTAT_WORKINGSET_RESTORE" => Some(Self::VmstatWorkingsetRestore),
35871            "VMSTAT_ALLOCSTALL_DEVICE" => Some(Self::VmstatAllocstallDevice),
35872            "VMSTAT_ALLOCSTALL_DMA32" => Some(Self::VmstatAllocstallDma32),
35873            "VMSTAT_BALLOON_DEFLATE" => Some(Self::VmstatBalloonDeflate),
35874            "VMSTAT_BALLOON_INFLATE" => Some(Self::VmstatBalloonInflate),
35875            "VMSTAT_BALLOON_MIGRATE" => Some(Self::VmstatBalloonMigrate),
35876            "VMSTAT_CMA_ALLOC_FAIL" => Some(Self::VmstatCmaAllocFail),
35877            "VMSTAT_CMA_ALLOC_SUCCESS" => Some(Self::VmstatCmaAllocSuccess),
35878            "VMSTAT_NR_FILE_HUGEPAGES" => Some(Self::VmstatNrFileHugepages),
35879            "VMSTAT_NR_FILE_PMDMAPPED" => Some(Self::VmstatNrFilePmdmapped),
35880            "VMSTAT_NR_FOLL_PIN_ACQUIRED" => Some(Self::VmstatNrFollPinAcquired),
35881            "VMSTAT_NR_FOLL_PIN_RELEASED" => Some(Self::VmstatNrFollPinReleased),
35882            "VMSTAT_NR_SEC_PAGE_TABLE_PAGES" => Some(Self::VmstatNrSecPageTablePages),
35883            "VMSTAT_NR_SHADOW_CALL_STACK" => Some(Self::VmstatNrShadowCallStack),
35884            "VMSTAT_NR_SWAPCACHED" => Some(Self::VmstatNrSwapcached),
35885            "VMSTAT_NR_THROTTLED_WRITTEN" => Some(Self::VmstatNrThrottledWritten),
35886            "VMSTAT_PGALLOC_DEVICE" => Some(Self::VmstatPgallocDevice),
35887            "VMSTAT_PGALLOC_DMA32" => Some(Self::VmstatPgallocDma32),
35888            "VMSTAT_PGDEMOTE_DIRECT" => Some(Self::VmstatPgdemoteDirect),
35889            "VMSTAT_PGDEMOTE_KSWAPD" => Some(Self::VmstatPgdemoteKswapd),
35890            "VMSTAT_PGREUSE" => Some(Self::VmstatPgreuse),
35891            "VMSTAT_PGSCAN_ANON" => Some(Self::VmstatPgscanAnon),
35892            "VMSTAT_PGSCAN_FILE" => Some(Self::VmstatPgscanFile),
35893            "VMSTAT_PGSKIP_DEVICE" => Some(Self::VmstatPgskipDevice),
35894            "VMSTAT_PGSKIP_DMA32" => Some(Self::VmstatPgskipDma32),
35895            "VMSTAT_PGSTEAL_ANON" => Some(Self::VmstatPgstealAnon),
35896            "VMSTAT_PGSTEAL_FILE" => Some(Self::VmstatPgstealFile),
35897            "VMSTAT_THP_COLLAPSE_ALLOC" => Some(Self::VmstatThpCollapseAlloc),
35898            "VMSTAT_THP_COLLAPSE_ALLOC_FAILED" => {
35899                Some(Self::VmstatThpCollapseAllocFailed)
35900            }
35901            "VMSTAT_THP_DEFERRED_SPLIT_PAGE" => Some(Self::VmstatThpDeferredSplitPage),
35902            "VMSTAT_THP_FAULT_ALLOC" => Some(Self::VmstatThpFaultAlloc),
35903            "VMSTAT_THP_FAULT_FALLBACK" => Some(Self::VmstatThpFaultFallback),
35904            "VMSTAT_THP_FAULT_FALLBACK_CHARGE" => {
35905                Some(Self::VmstatThpFaultFallbackCharge)
35906            }
35907            "VMSTAT_THP_FILE_ALLOC" => Some(Self::VmstatThpFileAlloc),
35908            "VMSTAT_THP_FILE_FALLBACK" => Some(Self::VmstatThpFileFallback),
35909            "VMSTAT_THP_FILE_FALLBACK_CHARGE" => Some(Self::VmstatThpFileFallbackCharge),
35910            "VMSTAT_THP_FILE_MAPPED" => Some(Self::VmstatThpFileMapped),
35911            "VMSTAT_THP_MIGRATION_FAIL" => Some(Self::VmstatThpMigrationFail),
35912            "VMSTAT_THP_MIGRATION_SPLIT" => Some(Self::VmstatThpMigrationSplit),
35913            "VMSTAT_THP_MIGRATION_SUCCESS" => Some(Self::VmstatThpMigrationSuccess),
35914            "VMSTAT_THP_SCAN_EXCEED_NONE_PTE" => Some(Self::VmstatThpScanExceedNonePte),
35915            "VMSTAT_THP_SCAN_EXCEED_SHARE_PTE" => Some(Self::VmstatThpScanExceedSharePte),
35916            "VMSTAT_THP_SCAN_EXCEED_SWAP_PTE" => Some(Self::VmstatThpScanExceedSwapPte),
35917            "VMSTAT_THP_SPLIT_PAGE" => Some(Self::VmstatThpSplitPage),
35918            "VMSTAT_THP_SPLIT_PAGE_FAILED" => Some(Self::VmstatThpSplitPageFailed),
35919            "VMSTAT_THP_SPLIT_PMD" => Some(Self::VmstatThpSplitPmd),
35920            "VMSTAT_THP_SWPOUT" => Some(Self::VmstatThpSwpout),
35921            "VMSTAT_THP_SWPOUT_FALLBACK" => Some(Self::VmstatThpSwpoutFallback),
35922            "VMSTAT_THP_ZERO_PAGE_ALLOC" => Some(Self::VmstatThpZeroPageAlloc),
35923            "VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED" => {
35924                Some(Self::VmstatThpZeroPageAllocFailed)
35925            }
35926            "VMSTAT_VMA_LOCK_ABORT" => Some(Self::VmstatVmaLockAbort),
35927            "VMSTAT_VMA_LOCK_MISS" => Some(Self::VmstatVmaLockMiss),
35928            "VMSTAT_VMA_LOCK_RETRY" => Some(Self::VmstatVmaLockRetry),
35929            "VMSTAT_VMA_LOCK_SUCCESS" => Some(Self::VmstatVmaLockSuccess),
35930            "VMSTAT_WORKINGSET_ACTIVATE_ANON" => Some(Self::VmstatWorkingsetActivateAnon),
35931            "VMSTAT_WORKINGSET_ACTIVATE_FILE" => Some(Self::VmstatWorkingsetActivateFile),
35932            "VMSTAT_WORKINGSET_NODES" => Some(Self::VmstatWorkingsetNodes),
35933            "VMSTAT_WORKINGSET_REFAULT_ANON" => Some(Self::VmstatWorkingsetRefaultAnon),
35934            "VMSTAT_WORKINGSET_REFAULT_FILE" => Some(Self::VmstatWorkingsetRefaultFile),
35935            "VMSTAT_WORKINGSET_RESTORE_ANON" => Some(Self::VmstatWorkingsetRestoreAnon),
35936            "VMSTAT_WORKINGSET_RESTORE_FILE" => Some(Self::VmstatWorkingsetRestoreFile),
35937            _ => None,
35938        }
35939    }
35940}
35941#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
35942#[repr(i32)]
35943pub enum FtraceParseStatus {
35944    FtraceStatusUnspecified = 0,
35945    /// Not written, used for convenience of implementation:
35946    FtraceStatusOk = 1,
35947    /// Issues with reading data out of the ftrace ring buffer:
35948    FtraceStatusUnexpectedReadError = 2,
35949    FtraceStatusPartialPageRead = 3,
35950    /// Ring buffer binary data not matching our understanding of the layout:
35951    FtraceStatusAbiInvalidPageHeader = 4,
35952    FtraceStatusAbiShortEventHeader = 5,
35953    FtraceStatusAbiNullPadding = 6,
35954    FtraceStatusAbiShortPaddingLength = 7,
35955    FtraceStatusAbiInvalidPaddingLength = 8,
35956    FtraceStatusAbiShortTimeExtend = 9,
35957    FtraceStatusAbiShortTimeStamp = 10,
35958    FtraceStatusAbiShortDataLength = 11,
35959    FtraceStatusAbiZeroDataLength = 12,
35960    FtraceStatusAbiInvalidDataLength = 13,
35961    FtraceStatusAbiShortEventId = 14,
35962    FtraceStatusAbiEndOverflow = 15,
35963    /// Issues with parsing the event payload:
35964    FtraceStatusShortCompactEvent = 16,
35965    FtraceStatusInvalidEvent = 17,
35966}
35967impl FtraceParseStatus {
35968    /// String value of the enum field names used in the ProtoBuf definition.
35969    ///
35970    /// The values are not transformed in any way and thus are considered stable
35971    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
35972    pub fn as_str_name(&self) -> &'static str {
35973        match self {
35974            Self::FtraceStatusUnspecified => "FTRACE_STATUS_UNSPECIFIED",
35975            Self::FtraceStatusOk => "FTRACE_STATUS_OK",
35976            Self::FtraceStatusUnexpectedReadError => {
35977                "FTRACE_STATUS_UNEXPECTED_READ_ERROR"
35978            }
35979            Self::FtraceStatusPartialPageRead => "FTRACE_STATUS_PARTIAL_PAGE_READ",
35980            Self::FtraceStatusAbiInvalidPageHeader => {
35981                "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER"
35982            }
35983            Self::FtraceStatusAbiShortEventHeader => {
35984                "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER"
35985            }
35986            Self::FtraceStatusAbiNullPadding => "FTRACE_STATUS_ABI_NULL_PADDING",
35987            Self::FtraceStatusAbiShortPaddingLength => {
35988                "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH"
35989            }
35990            Self::FtraceStatusAbiInvalidPaddingLength => {
35991                "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH"
35992            }
35993            Self::FtraceStatusAbiShortTimeExtend => "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND",
35994            Self::FtraceStatusAbiShortTimeStamp => "FTRACE_STATUS_ABI_SHORT_TIME_STAMP",
35995            Self::FtraceStatusAbiShortDataLength => "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH",
35996            Self::FtraceStatusAbiZeroDataLength => "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH",
35997            Self::FtraceStatusAbiInvalidDataLength => {
35998                "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH"
35999            }
36000            Self::FtraceStatusAbiShortEventId => "FTRACE_STATUS_ABI_SHORT_EVENT_ID",
36001            Self::FtraceStatusAbiEndOverflow => "FTRACE_STATUS_ABI_END_OVERFLOW",
36002            Self::FtraceStatusShortCompactEvent => "FTRACE_STATUS_SHORT_COMPACT_EVENT",
36003            Self::FtraceStatusInvalidEvent => "FTRACE_STATUS_INVALID_EVENT",
36004        }
36005    }
36006    /// Creates an enum from field names used in the ProtoBuf definition.
36007    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
36008        match value {
36009            "FTRACE_STATUS_UNSPECIFIED" => Some(Self::FtraceStatusUnspecified),
36010            "FTRACE_STATUS_OK" => Some(Self::FtraceStatusOk),
36011            "FTRACE_STATUS_UNEXPECTED_READ_ERROR" => {
36012                Some(Self::FtraceStatusUnexpectedReadError)
36013            }
36014            "FTRACE_STATUS_PARTIAL_PAGE_READ" => Some(Self::FtraceStatusPartialPageRead),
36015            "FTRACE_STATUS_ABI_INVALID_PAGE_HEADER" => {
36016                Some(Self::FtraceStatusAbiInvalidPageHeader)
36017            }
36018            "FTRACE_STATUS_ABI_SHORT_EVENT_HEADER" => {
36019                Some(Self::FtraceStatusAbiShortEventHeader)
36020            }
36021            "FTRACE_STATUS_ABI_NULL_PADDING" => Some(Self::FtraceStatusAbiNullPadding),
36022            "FTRACE_STATUS_ABI_SHORT_PADDING_LENGTH" => {
36023                Some(Self::FtraceStatusAbiShortPaddingLength)
36024            }
36025            "FTRACE_STATUS_ABI_INVALID_PADDING_LENGTH" => {
36026                Some(Self::FtraceStatusAbiInvalidPaddingLength)
36027            }
36028            "FTRACE_STATUS_ABI_SHORT_TIME_EXTEND" => {
36029                Some(Self::FtraceStatusAbiShortTimeExtend)
36030            }
36031            "FTRACE_STATUS_ABI_SHORT_TIME_STAMP" => {
36032                Some(Self::FtraceStatusAbiShortTimeStamp)
36033            }
36034            "FTRACE_STATUS_ABI_SHORT_DATA_LENGTH" => {
36035                Some(Self::FtraceStatusAbiShortDataLength)
36036            }
36037            "FTRACE_STATUS_ABI_ZERO_DATA_LENGTH" => {
36038                Some(Self::FtraceStatusAbiZeroDataLength)
36039            }
36040            "FTRACE_STATUS_ABI_INVALID_DATA_LENGTH" => {
36041                Some(Self::FtraceStatusAbiInvalidDataLength)
36042            }
36043            "FTRACE_STATUS_ABI_SHORT_EVENT_ID" => Some(Self::FtraceStatusAbiShortEventId),
36044            "FTRACE_STATUS_ABI_END_OVERFLOW" => Some(Self::FtraceStatusAbiEndOverflow),
36045            "FTRACE_STATUS_SHORT_COMPACT_EVENT" => {
36046                Some(Self::FtraceStatusShortCompactEvent)
36047            }
36048            "FTRACE_STATUS_INVALID_EVENT" => Some(Self::FtraceStatusInvalidEvent),
36049            _ => None,
36050        }
36051    }
36052}
36053#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
36054#[repr(i32)]
36055pub enum FtraceClock {
36056    /// There is no FTRACE_CLOCK_BOOT entry as that's the default assumption. When
36057    /// the ftrace clock is "boot", it's just omitted (so UNSPECIFIED == BOOT).
36058    Unspecified = 0,
36059    Unknown = 1,
36060    Global = 2,
36061    Local = 3,
36062    MonoRaw = 4,
36063}
36064impl FtraceClock {
36065    /// String value of the enum field names used in the ProtoBuf definition.
36066    ///
36067    /// The values are not transformed in any way and thus are considered stable
36068    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
36069    pub fn as_str_name(&self) -> &'static str {
36070        match self {
36071            Self::Unspecified => "FTRACE_CLOCK_UNSPECIFIED",
36072            Self::Unknown => "FTRACE_CLOCK_UNKNOWN",
36073            Self::Global => "FTRACE_CLOCK_GLOBAL",
36074            Self::Local => "FTRACE_CLOCK_LOCAL",
36075            Self::MonoRaw => "FTRACE_CLOCK_MONO_RAW",
36076        }
36077    }
36078    /// Creates an enum from field names used in the ProtoBuf definition.
36079    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
36080        match value {
36081            "FTRACE_CLOCK_UNSPECIFIED" => Some(Self::Unspecified),
36082            "FTRACE_CLOCK_UNKNOWN" => Some(Self::Unknown),
36083            "FTRACE_CLOCK_GLOBAL" => Some(Self::Global),
36084            "FTRACE_CLOCK_LOCAL" => Some(Self::Local),
36085            "FTRACE_CLOCK_MONO_RAW" => Some(Self::MonoRaw),
36086            _ => None,
36087        }
36088    }
36089}
36090/// Describes Chrome's Compositor scheduler's current state and associated
36091/// variables.
36092///
36093/// These protos and enums were adapted from the corresponding original JSON
36094/// trace event for the scheduler state. In contrast to the JSON, we use strongly
36095/// typed enum values instead of strings for many fields, and
36096/// microsecond-granularity timestamps.
36097///
36098/// The original format was generated in JSON by the code at
36099/// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?l=870&rcl=5e15eabc9c0eec8daf94fdf78e93f13b6e3b63dd>
36100///
36101/// And is now generated as protozero:
36102/// <https://cs.chromium.org/chromium/src/cc/scheduler/scheduler.cc?q=Scheduler::AsPro>
36103///
36104/// All non-delta-timestamps are absolute CLOCK_MONOTONIC timestamps.
36105#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
36106#[repr(i32)]
36107pub enum ChromeCompositorSchedulerAction {
36108    CcSchedulerActionUnspecified = 0,
36109    CcSchedulerActionNone = 1,
36110    CcSchedulerActionSendBeginMainFrame = 2,
36111    CcSchedulerActionCommit = 3,
36112    CcSchedulerActionActivateSyncTree = 4,
36113    CcSchedulerActionDrawIfPossible = 5,
36114    CcSchedulerActionDrawForced = 6,
36115    CcSchedulerActionDrawAbort = 7,
36116    CcSchedulerActionBeginLayerTreeFrameSinkCreation = 8,
36117    CcSchedulerActionPrepareTiles = 9,
36118    CcSchedulerActionInvalidateLayerTreeFrameSink = 10,
36119    CcSchedulerActionPerformImplSideInvalidation = 11,
36120    CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil = 12,
36121    CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon = 13,
36122}
36123impl ChromeCompositorSchedulerAction {
36124    /// String value of the enum field names used in the ProtoBuf definition.
36125    ///
36126    /// The values are not transformed in any way and thus are considered stable
36127    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
36128    pub fn as_str_name(&self) -> &'static str {
36129        match self {
36130            Self::CcSchedulerActionUnspecified => "CC_SCHEDULER_ACTION_UNSPECIFIED",
36131            Self::CcSchedulerActionNone => "CC_SCHEDULER_ACTION_NONE",
36132            Self::CcSchedulerActionSendBeginMainFrame => {
36133                "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME"
36134            }
36135            Self::CcSchedulerActionCommit => "CC_SCHEDULER_ACTION_COMMIT",
36136            Self::CcSchedulerActionActivateSyncTree => {
36137                "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE"
36138            }
36139            Self::CcSchedulerActionDrawIfPossible => {
36140                "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE"
36141            }
36142            Self::CcSchedulerActionDrawForced => "CC_SCHEDULER_ACTION_DRAW_FORCED",
36143            Self::CcSchedulerActionDrawAbort => "CC_SCHEDULER_ACTION_DRAW_ABORT",
36144            Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation => {
36145                "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION"
36146            }
36147            Self::CcSchedulerActionPrepareTiles => "CC_SCHEDULER_ACTION_PREPARE_TILES",
36148            Self::CcSchedulerActionInvalidateLayerTreeFrameSink => {
36149                "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK"
36150            }
36151            Self::CcSchedulerActionPerformImplSideInvalidation => {
36152                "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION"
36153            }
36154            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil => {
36155                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL"
36156            }
36157            Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon => {
36158                "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON"
36159            }
36160        }
36161    }
36162    /// Creates an enum from field names used in the ProtoBuf definition.
36163    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
36164        match value {
36165            "CC_SCHEDULER_ACTION_UNSPECIFIED" => Some(Self::CcSchedulerActionUnspecified),
36166            "CC_SCHEDULER_ACTION_NONE" => Some(Self::CcSchedulerActionNone),
36167            "CC_SCHEDULER_ACTION_SEND_BEGIN_MAIN_FRAME" => {
36168                Some(Self::CcSchedulerActionSendBeginMainFrame)
36169            }
36170            "CC_SCHEDULER_ACTION_COMMIT" => Some(Self::CcSchedulerActionCommit),
36171            "CC_SCHEDULER_ACTION_ACTIVATE_SYNC_TREE" => {
36172                Some(Self::CcSchedulerActionActivateSyncTree)
36173            }
36174            "CC_SCHEDULER_ACTION_DRAW_IF_POSSIBLE" => {
36175                Some(Self::CcSchedulerActionDrawIfPossible)
36176            }
36177            "CC_SCHEDULER_ACTION_DRAW_FORCED" => Some(Self::CcSchedulerActionDrawForced),
36178            "CC_SCHEDULER_ACTION_DRAW_ABORT" => Some(Self::CcSchedulerActionDrawAbort),
36179            "CC_SCHEDULER_ACTION_BEGIN_LAYER_TREE_FRAME_SINK_CREATION" => {
36180                Some(Self::CcSchedulerActionBeginLayerTreeFrameSinkCreation)
36181            }
36182            "CC_SCHEDULER_ACTION_PREPARE_TILES" => {
36183                Some(Self::CcSchedulerActionPrepareTiles)
36184            }
36185            "CC_SCHEDULER_ACTION_INVALIDATE_LAYER_TREE_FRAME_SINK" => {
36186                Some(Self::CcSchedulerActionInvalidateLayerTreeFrameSink)
36187            }
36188            "CC_SCHEDULER_ACTION_PERFORM_IMPL_SIDE_INVALIDATION" => {
36189                Some(Self::CcSchedulerActionPerformImplSideInvalidation)
36190            }
36191            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_UNTIL" => {
36192                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedUntil)
36193            }
36194            "CC_SCHEDULER_ACTION_NOTIFY_BEGIN_MAIN_FRAME_NOT_EXPECTED_SOON" => {
36195                Some(Self::CcSchedulerActionNotifyBeginMainFrameNotExpectedSoon)
36196            }
36197            _ => None,
36198        }
36199    }
36200}
36201/// RAIL Mode is an indication of the kind of work that a Renderer is currently
36202/// performing which is in turn used to prioritise work accordingly.
36203/// A fuller description of these modes can be found <https://web.dev/rail/>
36204#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
36205#[repr(i32)]
36206pub enum ChromeRailMode {
36207    RailModeNone = 0,
36208    RailModeResponse = 1,
36209    RailModeAnimation = 2,
36210    RailModeIdle = 3,
36211    RailModeLoad = 4,
36212}
36213impl ChromeRailMode {
36214    /// String value of the enum field names used in the ProtoBuf definition.
36215    ///
36216    /// The values are not transformed in any way and thus are considered stable
36217    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
36218    pub fn as_str_name(&self) -> &'static str {
36219        match self {
36220            Self::RailModeNone => "RAIL_MODE_NONE",
36221            Self::RailModeResponse => "RAIL_MODE_RESPONSE",
36222            Self::RailModeAnimation => "RAIL_MODE_ANIMATION",
36223            Self::RailModeIdle => "RAIL_MODE_IDLE",
36224            Self::RailModeLoad => "RAIL_MODE_LOAD",
36225        }
36226    }
36227    /// Creates an enum from field names used in the ProtoBuf definition.
36228    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
36229        match value {
36230            "RAIL_MODE_NONE" => Some(Self::RailModeNone),
36231            "RAIL_MODE_RESPONSE" => Some(Self::RailModeResponse),
36232            "RAIL_MODE_ANIMATION" => Some(Self::RailModeAnimation),
36233            "RAIL_MODE_IDLE" => Some(Self::RailModeIdle),
36234            "RAIL_MODE_LOAD" => Some(Self::RailModeLoad),
36235            _ => None,
36236        }
36237    }
36238}